diff --git a/app/build.gradle b/app/build.gradle index d2a1c34..d79e2fd 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -16,8 +16,8 @@ android { minSdkVersion 24 targetSdkVersion 29 - versionCode 94 - versionName "2.0.3" + versionCode 99 + versionName "2.0.8" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 5acf2c6..4e833cc 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -157,7 +157,7 @@ android:launchMode="singleTask" android:screenOrientation="landscape" /> diff --git a/app/src/main/aidl/com/uiui/zy/IGetInfoInterface.aidl b/app/src/main/aidl/com/uiui/zy/IGetInfoInterface.aidl index 13d32e4..751530a 100644 --- a/app/src/main/aidl/com/uiui/zy/IGetInfoInterface.aidl +++ b/app/src/main/aidl/com/uiui/zy/IGetInfoInterface.aidl @@ -13,16 +13,26 @@ interface IGetInfoInterface { //获取sn String getSerial(); - //获取定位结果 - String getMapResult(); //获取mac作为sn String getPushMac(); //是否激活 boolean SnIsActivation(); - //设置为默认桌面 + //获取激活码 + String getActivationCode(); + //设置为默认桌面 void setDefaultLauncher(String pkg); + //退出桌面 + void exitDesktop(); + //能否退出桌面 + boolean isReturnAndroid(); + //模拟返回键 + void keyBack(); + //获取定位结果 + String getMapResult(); //获取应用使用时长 String getAppUsedStatistics(); + //使用第三方应用 + boolean showThirdApp(); //获取应用市场app List getAdminApp(); //写入系统数据 diff --git a/app/src/main/java/com/uiui/zyos/activity/ServiceActivity.java b/app/src/main/java/com/uiui/zyos/activity/ServiceActivity.java deleted file mode 100644 index 3687f8d..0000000 --- a/app/src/main/java/com/uiui/zyos/activity/ServiceActivity.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.uiui.zyos.activity; - -import androidx.databinding.DataBindingUtil; - -import com.uiui.zyos.R; -import com.uiui.zyos.base.BaseDataBindingActivity; -import com.uiui.zyos.base.mvp.BaseMvpActivity; - -public class ServiceActivity extends BaseDataBindingActivity { - - @Override - protected void initDataBinding() { - DataBindingUtil.setContentView(this, R.layout.activity_wechat); - } - - @Override - public void initView() { - - } - - @Override - public void initData() { - - } -} diff --git a/app/src/main/java/com/uiui/zyos/activity/main/MainActivity.java b/app/src/main/java/com/uiui/zyos/activity/main/MainActivity.java index 73f53e3..f9da81e 100644 --- a/app/src/main/java/com/uiui/zyos/activity/main/MainActivity.java +++ b/app/src/main/java/com/uiui/zyos/activity/main/MainActivity.java @@ -16,10 +16,12 @@ import android.view.KeyEvent; import android.view.View; import android.view.animation.Animation; import android.view.animation.TranslateAnimation; +import android.widget.Toast; import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; +import androidx.lifecycle.Observer; import androidx.viewpager.widget.ViewPager; import com.hjq.permissions.OnPermissionCallback; @@ -33,8 +35,10 @@ import com.uiui.zyos.activity.ExitActivity; import com.uiui.zyos.activity.permission.PermissionActivity; import com.uiui.zyos.base.mvvm.BaseMvvmActivity; import com.uiui.zyos.bean.AppUpdateInfo; +import com.uiui.zyos.bean.SystemSettings; import com.uiui.zyos.config.CommonConfig; import com.uiui.zyos.databinding.ActivityMainBinding; +import com.uiui.zyos.dialog.PermissionsDialog; import com.uiui.zyos.dialog.PrivacyPolicyDialog; import com.uiui.zyos.fragment.subject.SubjectFragment; import com.uiui.zyos.fragment.user.UserFragment; @@ -73,6 +77,7 @@ public class MainActivity extends BaseMvvmActivity() { // @Override // public void onChanged(AppUpdateInfo appUpdateInfo) { @@ -249,6 +255,14 @@ public class MainActivity extends BaseMvvmActivity() { + @Override + public void onChanged(SystemSettings systemSettings) { + int voice_assistant = systemSettings.getVoice_assistant(); + mViewDataBinding.ivRobot.setVisibility(voice_assistant == 1 ? View.VISIBLE : View.GONE); + } + }); } private void hideSystemUI() { @@ -266,11 +280,11 @@ public class MainActivity extends BaseMvvmActivity permissions, boolean allGranted) { + Log.e(TAG, "onGranted: permissions = " + permissions + " allGranted = " + allGranted); + if (!allGranted) { + Toast.makeText(MainActivity.this, "存储权限未正常授予", Toast.LENGTH_SHORT).show(); + return; + } + Log.e(TAG, "onGranted: 获取存储权限成功"); + } + + @Override + public void onDenied(@androidx.annotation.NonNull List permissions, boolean doNotAskAgain) { + Log.e(TAG, "onDenied: permissions = " + permissions + " doNotAskAgain = " + doNotAskAgain); + if (doNotAskAgain) { + Toast.makeText(MainActivity.this, "被永久拒绝授权,请手动授予存储权限", Toast.LENGTH_SHORT).show(); + // 如果是被永久拒绝就跳转到应用权限系统设置页面 + XXPermissions.startPermissionActivity(MainActivity.this, permissions); + } else { + Log.e(TAG, "onGranted: 获取存储权限失败"); + } + } + }); + } + + @Override + public void onDenied() { + mPermissionsDialog.dismiss(); + } + }); + mPermissionsDialog.setContent("桌面需要获取存储权限保存作业,获取定位提供给小程序查看,请授予后使用"); + mPermissionsDialog.show(); + } + + } + private boolean checkPermission() { return XXPermissions.isGranted(this, PermissionActivity.PERMISSION_CHECK); } @@ -566,7 +638,8 @@ public class MainActivity extends BaseMvvmActivity mSystemSettingsMutableLiveData = new MutableLiveData<>(); + + public void getSystemSettings() { + NetInterfaceManager.getInstance().getsettingControl() + .subscribe(new Observer>() { + @Override + public void onSubscribe(@NonNull Disposable d) { + Log.e("getSystemSettings", "onSubscribe: "); + } + + @Override + public void onNext(@NonNull BaseResponse systemSettingsBaseResponse) { + Log.e("getSystemSettings", "onNext: " + systemSettingsBaseResponse); + if (systemSettingsBaseResponse.code == 200) { + SystemSettings systemSettings = systemSettingsBaseResponse.data; + mSystemSettingsMutableLiveData.setValue(systemSettings); + } + } + + @Override + public void onError(@NonNull Throwable e) { + Log.e("getSystemSettings", "onError: " + e.getMessage()); + } + + @Override + public void onComplete() { + Log.e("getSystemSettings", "onComplete: "); + } + }); + } + + public MutableLiveData mAppUpdateInfoData = new MutableLiveData<>(); public void checkUpdate() { diff --git a/app/src/main/java/com/uiui/zyos/activity/permission/PermissionActivity.java b/app/src/main/java/com/uiui/zyos/activity/permission/PermissionActivity.java index 52faba4..7a4f748 100644 --- a/app/src/main/java/com/uiui/zyos/activity/permission/PermissionActivity.java +++ b/app/src/main/java/com/uiui/zyos/activity/permission/PermissionActivity.java @@ -32,9 +32,9 @@ public class PermissionActivity extends BaseMvvmActivity{ + + @Override + protected int getLayoutId() { + return R.layout.activity_service; + } + + @Override + protected void initDataBinding() { + mViewModel.setCtx(this); + mViewModel.setLifecycle(getLifecycleSubject()); + mViewModel.setVDBinding(mViewDataBinding); + } + + @Override + public void initView() { + hideNavigationBar(); + } + + @Override + public void initData() { + mViewModel.getGuideBeanData().observe(this, new Observer() { + @Override + public void onChanged(GuideBean guideBean) { + GlideLoadUtils.getInstance().glideLoad(ServiceActivity.this, guideBean.getFile(), mViewDataBinding.ivQrcode, R.drawable.wechat_service); + } + }); + mViewModel.getQrCode(); + } + + // 隐藏导航栏 + private void hideNavigationBar() { + View decorView = getWindow().getDecorView(); + int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION +// | View.SYSTEM_UI_FLAG_FULLSCREEN + | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION + | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY; + decorView.setSystemUiVisibility(uiOptions); + } +} diff --git a/app/src/main/java/com/uiui/zyos/activity/service/ServiceViewModel.java b/app/src/main/java/com/uiui/zyos/activity/service/ServiceViewModel.java new file mode 100644 index 0000000..a329309 --- /dev/null +++ b/app/src/main/java/com/uiui/zyos/activity/service/ServiceViewModel.java @@ -0,0 +1,66 @@ +package com.uiui.zyos.activity.service; + +import android.util.Log; + +import androidx.lifecycle.MutableLiveData; + +import com.trello.rxlifecycle4.RxLifecycle; +import com.trello.rxlifecycle4.android.ActivityEvent; +import com.uiui.zyos.base.mvvm.BaseViewModel; +import com.uiui.zyos.bean.BaseResponse; +import com.uiui.zyos.bean.GuideBean; +import com.uiui.zyos.databinding.ActivityServiceBinding; +import com.uiui.zyos.network.NetInterfaceManager; + +import io.reactivex.rxjava3.annotations.NonNull; +import io.reactivex.rxjava3.core.Observer; +import io.reactivex.rxjava3.disposables.Disposable; + +public class ServiceViewModel extends BaseViewModel { + + @Override + public ActivityServiceBinding getVDBinding() { + return binding; + } + + @Override + public void onDestroy() { + + } + + private MutableLiveData mGuideBeanData = new MutableLiveData<>(); + + public MutableLiveData getGuideBeanData() { + return mGuideBeanData; + } + + public void getQrCode() { + NetInterfaceManager.getInstance().getFilesObservable(9) + .compose(RxLifecycle.bindUntilEvent(getLifecycle(), ActivityEvent.DESTROY)) + .subscribe(new Observer>() { + @Override + public void onSubscribe(@NonNull Disposable d) { + Log.e("getQrCode", "onSubscribe: "); + } + + @Override + public void onNext(@NonNull BaseResponse guideBeanBaseResponse) { + Log.e("getQrCode", "onNext: " + guideBeanBaseResponse); + if (guideBeanBaseResponse.code == 200) { + GuideBean guideBean = guideBeanBaseResponse.data; + mGuideBeanData.setValue(guideBean); + } + } + + @Override + public void onError(@NonNull Throwable e) { + Log.e("getQrCode", "onError: " + e.getMessage()); + } + + @Override + public void onComplete() { + Log.e("getQrCode", "onComplete: "); + } + }); + } +} diff --git a/app/src/main/java/com/uiui/zyos/activity/user/UserActivity.java b/app/src/main/java/com/uiui/zyos/activity/user/UserActivity.java index d91050a..2009733 100644 --- a/app/src/main/java/com/uiui/zyos/activity/user/UserActivity.java +++ b/app/src/main/java/com/uiui/zyos/activity/user/UserActivity.java @@ -20,6 +20,7 @@ import com.tencent.mmkv.MMKV; import com.uiui.zyos.BuildConfig; import com.uiui.zyos.R; import com.uiui.zyos.activity.edit.EditActivity; +import com.uiui.zyos.activity.permission.PermissionActivity; import com.uiui.zyos.activity.update.UpdateActivity; import com.uiui.zyos.base.mvvm.BaseMvvmActivity; import com.uiui.zyos.bean.AppUpdateInfo; @@ -274,5 +275,9 @@ public class UserActivity extends BaseMvvmActivity { @@ -107,8 +103,8 @@ public class AppAdapter extends RecyclerView.Adapter { OpenApkUtils.getInstance().openARHuiben(); break; default: - int settingOtherAppInstaller = Settings.Global.getInt(mContext.getContentResolver(), CommonConfig.SETTING_OTHER_APPINSTALLER_KEY, 1); - if (settingOtherAppInstaller == 0 && !ApkUtils.isSystemApp(mContext, desktopIcon.getPackageName())) { + boolean settingOtherAppInstaller = RemoteManager.getInstance().showThirdApp(); + if (!settingOtherAppInstaller && !ApkUtils.isSystemApp(mContext, desktopIcon.getPackageName())) { Toaster.show("已禁止应用打开"); } else { OpenApkUtils.getInstance().openApp(desktopIcon.getPackageName(), desktopIcon.getClassName()); diff --git a/app/src/main/java/com/uiui/zyos/adapter/FileAdapter.java b/app/src/main/java/com/uiui/zyos/adapter/FileAdapter.java index dd9097f..4df498f 100644 --- a/app/src/main/java/com/uiui/zyos/adapter/FileAdapter.java +++ b/app/src/main/java/com/uiui/zyos/adapter/FileAdapter.java @@ -3,7 +3,6 @@ package com.uiui.zyos.adapter; import android.content.ComponentName; import android.content.Context; import android.content.Intent; -import android.provider.Settings; import android.util.Log; import android.view.LayoutInflater; import android.view.View; @@ -19,10 +18,10 @@ import com.hjq.toast.Toaster; import com.uiui.zyos.R; import com.uiui.zyos.activity.ManualActivity; import com.uiui.zyos.activity.PasswordActivity; -import com.uiui.zyos.activity.ServiceActivity; +import com.uiui.zyos.activity.service.ServiceActivity; import com.uiui.zyos.bean.DesktopIcon; -import com.uiui.zyos.config.CommonConfig; import com.uiui.zyos.manager.AppManager; +import com.uiui.zyos.manager.RemoteManager; import com.uiui.zyos.utils.ApkUtils; import com.uiui.zyos.utils.BitmapUtils; import com.uiui.zyos.utils.IconUtils; @@ -98,8 +97,8 @@ public class FileAdapter extends RecyclerView.Adapter { OpenApkUtils.getInstance().openApp(desktopIcon.getPackageName(), desktopIcon.getClassName()); break; default: - int settingOtherAppInstaller = Settings.Global.getInt(mContext.getContentResolver(), CommonConfig.SETTING_OTHER_APPINSTALLER_KEY, 1); - if (settingOtherAppInstaller == 0 && !ApkUtils.isSystemApp(mContext, desktopIcon.getPackageName())) { + boolean settingOtherAppInstaller = RemoteManager.getInstance().showThirdApp(); + if (!settingOtherAppInstaller && !ApkUtils.isSystemApp(mContext, desktopIcon.getPackageName())) { Toaster.show("已禁止应用打开"); } else { OpenApkUtils.getInstance().openApp(desktopIcon.getPackageName(), desktopIcon.getClassName()); diff --git a/app/src/main/java/com/uiui/zyos/bean/SystemSettings.java b/app/src/main/java/com/uiui/zyos/bean/SystemSettings.java index 5beca92..1983ccd 100644 --- a/app/src/main/java/com/uiui/zyos/bean/SystemSettings.java +++ b/app/src/main/java/com/uiui/zyos/bean/SystemSettings.java @@ -4,8 +4,9 @@ package com.uiui.zyos.bean; import com.google.gson.Gson; import com.google.gson.JsonParser; +import org.jetbrains.annotations.NotNull; + import java.io.Serializable; -import java.util.List; public class SystemSettings implements Serializable { @@ -37,7 +38,7 @@ public class SystemSettings implements Serializable { int qch_restore; int setting_browserInput; int dev_mode; - List setting_sos; + String setting_sos; String setting_volume; String setting_luminance; String setting_typeface; @@ -55,11 +56,21 @@ public class SystemSettings implements Serializable { int setting_location; int setting_charge; int setting_other_appInstaller; + int is_quickapp; + String quickapp; + int is_storeinstall; + int is_timecontrol; + String timecontrol_start; + String timecontrol_end; + int is_return_android; - int is_health; - int is_shopping; - int is_info; - + int is_bluetooth_share; + int is_developer_mode; + int is_device_recover; + int is_top_notify; + int is_bottom_bar; + int is_notify_bar_show; + int voice_assistant; public int getQch_restore() { return qch_restore; @@ -262,11 +273,11 @@ public class SystemSettings implements Serializable { this.setting_hotspot = setting_hotspot; } - public List getSetting_sos() { + public String getSetting_sos() { return setting_sos; } - public void setSetting_sos(List setting_sos) { + public void setSetting_sos(String setting_sos) { this.setting_sos = setting_sos; } @@ -398,30 +409,119 @@ public class SystemSettings implements Serializable { this.setting_other_appInstaller = setting_other_appInstaller; } - public int getIs_health() { - return is_health; + public int getIs_quickapp() { + return is_quickapp; } - public void setIs_health(int is_health) { - this.is_health = is_health; + public void setIs_quickapp(int is_quickapp) { + this.is_quickapp = is_quickapp; } - public int getIs_shopping() { - return is_shopping; + public String getQuickapp() { + return quickapp; } - public void setIs_shopping(int is_shopping) { - this.is_shopping = is_shopping; + public void setQuickapp(String quickapp) { + this.quickapp = quickapp; } - public int getIs_info() { - return is_info; + public int getIs_storeinstall() { + return is_storeinstall; } - public void setIs_info(int is_info) { - this.is_info = is_info; + public void setIs_storeinstall(int is_storeinstall) { + this.is_storeinstall = is_storeinstall; } + public int getIs_timecontrol() { + return is_timecontrol; + } + + public void setIs_timecontrol(int is_timecontrol) { + this.is_timecontrol = is_timecontrol; + } + + public String getTimecontrol_start() { + return timecontrol_start; + } + + public void setTimecontrol_start(String timecontrol_start) { + this.timecontrol_start = timecontrol_start; + } + + public String getTimecontrol_end() { + return timecontrol_end; + } + + public void setTimecontrol_end(String timecontrol_end) { + this.timecontrol_end = timecontrol_end; + } + + public int getIs_return_android() { + return is_return_android; + } + + public void setIs_return_android(int is_return_android) { + this.is_return_android = is_return_android; + } + + public int getIs_bluetooth_share() { + return is_bluetooth_share; + } + + public void setIs_bluetooth_share(int is_bluetooth_share) { + this.is_bluetooth_share = is_bluetooth_share; + } + + public int getIs_developer_mode() { + return is_developer_mode; + } + + public void setIs_developer_mode(int is_developer_mode) { + this.is_developer_mode = is_developer_mode; + } + + public int getIs_device_recover() { + return is_device_recover; + } + + public void setIs_device_recover(int is_device_recover) { + this.is_device_recover = is_device_recover; + } + + public int getIs_top_notify() { + return is_top_notify; + } + + public void setIs_top_notify(int is_top_notify) { + this.is_top_notify = is_top_notify; + } + + public int getIs_bottom_bar() { + return is_bottom_bar; + } + + public void setIs_bottom_bar(int is_bottom_bar) { + this.is_bottom_bar = is_bottom_bar; + } + + public int getIs_notify_bar_show() { + return is_notify_bar_show; + } + + public void setIs_notify_bar_show(int is_notify_bar_show) { + this.is_notify_bar_show = is_notify_bar_show; + } + + public int getVoice_assistant() { + return voice_assistant; + } + + public void setVoice_assistant(int voice_assistant) { + this.voice_assistant = voice_assistant; + } + + @NotNull @Override public String toString() { return JsonParser.parseString(new Gson().toJson(this)).getAsJsonObject().toString(); diff --git a/app/src/main/java/com/uiui/zyos/config/CommonConfig.java b/app/src/main/java/com/uiui/zyos/config/CommonConfig.java index dc033a7..d05ee71 100644 --- a/app/src/main/java/com/uiui/zyos/config/CommonConfig.java +++ b/app/src/main/java/com/uiui/zyos/config/CommonConfig.java @@ -31,6 +31,7 @@ public class CommonConfig { /*是否激活接口请求缓存*/ public static final String ACTIVATIONBEAN_KEY = "IFLYTEK_UIUI_ACTIVATIONBEAN_KEY"; /*是否激活*/ + @Deprecated public static final String UIUI_ACTIVATION_KEY = "iflytek_uiui_activation"; /*激活码类型*/ public static final String UIUI_CODE_TYPE_KEY = "iflytek_uiui_code_type"; diff --git a/app/src/main/java/com/uiui/zyos/dialog/PermissionsDialog.java b/app/src/main/java/com/uiui/zyos/dialog/PermissionsDialog.java new file mode 100644 index 0000000..b3230f9 --- /dev/null +++ b/app/src/main/java/com/uiui/zyos/dialog/PermissionsDialog.java @@ -0,0 +1,121 @@ +package com.uiui.zyos.dialog; + +import android.content.Context; +import android.os.Bundle; +import android.text.TextUtils; +import android.view.View; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AlertDialog; + +import com.uiui.zyos.R; + +public class PermissionsDialog extends AlertDialog { + private Context mContext; + + private TextView tv_title; + private TextView tv_content; + private TextView tv_cancel; + private TextView tv_confirm; + + private String mTitle; + private String mContent; + private String mDeniedtext; + private String mGrantedtext; + + public void setTitle(String title) { + mTitle = title; + } + + public void setContent(String content) { + mContent = content; + } + + public void setDeniedtext(String deniedtext) { + mDeniedtext = deniedtext; + } + + public void setGrantedtext(String grantedtext) { + mGrantedtext = grantedtext; + } + + public PermissionsDialog(@NonNull Context context) { + super(context, R.style.CustomDialog); + this.mContext = context; + } + + public PermissionsDialog(@NonNull Context context, int themeResId) { + super(context, themeResId); + this.mContext = context; + } + + public PermissionsDialog(@NonNull Context context, boolean cancelable, @Nullable OnCancelListener cancelListener) { + super(context, cancelable, cancelListener); + this.mContext = context; + } + + public void setPermissionsCallback(PermissionsCallback callback) { + this.mPermissionsCallback = callback; + } + + private PermissionsCallback mPermissionsCallback; + + public interface PermissionsCallback { + void onGranted(); + + void onDenied(); + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.dialog_permissions); + setCanceledOnTouchOutside(false); + tv_title = findViewById(R.id.tv_title); + tv_content = findViewById(R.id.tv_content); + tv_cancel = findViewById(R.id.tv_cancel); + tv_confirm = findViewById(R.id.tv_confirm); + + tv_cancel.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (mPermissionsCallback != null) { + mPermissionsCallback.onDenied(); + } + } + }); + + tv_confirm.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (mPermissionsCallback != null) { + mPermissionsCallback.onGranted(); + } + } + }); + setText(); + } + + @Override + public void show() { + super.show(); + setText(); + } + + private void setText() { + if (!TextUtils.isEmpty(mTitle)) { + tv_title.setText(mTitle); + } + if (!TextUtils.isEmpty(mContent)) { + tv_content.setText(mContent); + } + if (!TextUtils.isEmpty(mDeniedtext)) { + tv_cancel.setText(mDeniedtext); + } + if (!TextUtils.isEmpty(mGrantedtext)) { + tv_confirm.setText(mGrantedtext); + } + } +} diff --git a/app/src/main/java/com/uiui/zyos/fragment/app/AppViewModel.java b/app/src/main/java/com/uiui/zyos/fragment/app/AppViewModel.java index 8bfe5fc..47e27a7 100644 --- a/app/src/main/java/com/uiui/zyos/fragment/app/AppViewModel.java +++ b/app/src/main/java/com/uiui/zyos/fragment/app/AppViewModel.java @@ -1,5 +1,7 @@ package com.uiui.zyos.fragment.app; +import android.graphics.drawable.Drawable; + import androidx.lifecycle.MutableLiveData; import com.trello.rxlifecycle4.android.FragmentEvent; @@ -33,7 +35,14 @@ public class AppViewModel extends BaseViewModel() { }.getType(); - mMapBean = gson.fromJson(jsonString, type); + try { + mMapBean = gson.fromJson(jsonString, type); + } catch (Exception e) { + Log.e(TAG, "initAmap: "); + mMMKV.remove(CommonConfig.MAP_LOCATION_JSON_KEY); + } } else { Log.e(TAG, "initAmap: jsonString is empty"); } diff --git a/app/src/main/java/com/uiui/zyos/manager/RemoteManager.java b/app/src/main/java/com/uiui/zyos/manager/RemoteManager.java index 6a354db..6d02420 100644 --- a/app/src/main/java/com/uiui/zyos/manager/RemoteManager.java +++ b/app/src/main/java/com/uiui/zyos/manager/RemoteManager.java @@ -18,6 +18,7 @@ import com.tencent.bugly.crashreport.CrashReport; import com.tencent.mmkv.MMKV; import com.uiui.zy.IGetInfoInterface; import com.uiui.zyos.config.CommonConfig; +import com.uiui.zyos.utils.ActivationUtil; import java.util.ArrayList; import java.util.HashSet; @@ -72,6 +73,14 @@ public class RemoteManager { e.printStackTrace(); } + try { + boolean actitvation = mGetInfoInterface.SnIsActivation(); + Log.e(TAG, "onServiceConnected: SnIsActivation = " + actitvation); + mMMKV.encode(CommonConfig.UIUI_ACTIVATION_KEY, actitvation ? ActivationUtil.ACTIVATED_KEY : ActivationUtil.INACTIVATED_KEY); + } catch (Exception e) { + Log.e(TAG, "onServiceConnected: SnIsActivation" + e.getMessage()); + } + Log.e(TAG, "onServiceConnected: " + getSerial()); aliyunPushInit(); } @@ -207,17 +216,21 @@ public class RemoteManager { } public boolean getSnIsActivation() { - try { - return mGetInfoInterface.SnIsActivation(); - } catch (RemoteException e) { - e.printStackTrace(); - Log.e(TAG, "getSnIsActivation: " + e.getMessage()); - int is_activation = Settings.Global.getInt(mContext.getContentResolver(), CommonConfig.UIUI_ACTIVATION_KEY, 0); - return is_activation == 1; + if (mGetInfoInterface != null) { + try { + return mGetInfoInterface.SnIsActivation(); + } catch (RemoteException e) { + e.printStackTrace(); + Log.e(TAG, "getSnIsActivation: " + e.getMessage()); + return false; + } } + int is_activation = Settings.Global.getInt(mContext.getContentResolver(), CommonConfig.UIUI_ACTIVATION_KEY, 0); + return is_activation == 1; } public void setDefaultDesktop(String pkg) { + Log.e(TAG, "setDefaultDesktop: " + pkg); if (mGetInfoInterface != null) { try { mGetInfoInterface.setDefaultLauncher(pkg); @@ -228,6 +241,42 @@ public class RemoteManager { } } + public void exitDesktop() { + Log.e(TAG, "exitDesktop: "); + if (mGetInfoInterface != null) { + try { + mGetInfoInterface.exitDesktop(); + } catch (RemoteException e) { + Log.e(TAG, "exitDesktop: " + e.getMessage()); + e.printStackTrace(); + } + } + } + + public boolean isReturnAndroid() { + if (mGetInfoInterface != null) { + try { + return mGetInfoInterface.isReturnAndroid(); + } catch (RemoteException e) { + Log.e(TAG, "isReturnAndroid: " + e.getMessage()); + e.printStackTrace(); + } + } + return true; + } + + public boolean showThirdApp() { + if (mGetInfoInterface != null) { + try { + return mGetInfoInterface.showThirdApp(); + } catch (RemoteException e) { + Log.e(TAG, "showThirdApp: " + e.getMessage()); + e.printStackTrace(); + } + } + return true; + } + public List getAdminApp() { if (mGetInfoInterface != null) { try { diff --git a/app/src/main/java/com/uiui/zyos/network/NetInterfaceManager.java b/app/src/main/java/com/uiui/zyos/network/NetInterfaceManager.java index c4fa2a7..87ccf05 100644 --- a/app/src/main/java/com/uiui/zyos/network/NetInterfaceManager.java +++ b/app/src/main/java/com/uiui/zyos/network/NetInterfaceManager.java @@ -23,6 +23,7 @@ import com.uiui.zyos.bean.LessonSetting; import com.uiui.zyos.bean.PhraseContent; import com.uiui.zyos.bean.SnInfo; import com.uiui.zyos.bean.StudyStatBean; +import com.uiui.zyos.bean.SystemSettings; import com.uiui.zyos.bean.UserAvatarInfo; import com.uiui.zyos.config.CommonConfig; import com.uiui.zyos.disklrucache.CacheHelper; @@ -39,6 +40,7 @@ import com.uiui.zyos.network.api.HomeworkUpdateApi; import com.uiui.zyos.network.api.PhraseApi; import com.uiui.zyos.network.api.RunNewApp; import com.uiui.zyos.network.api.SNInfoApi; +import com.uiui.zyos.network.api.SettingApi; import com.uiui.zyos.network.api.StudyStatApi; import com.uiui.zyos.network.api.UpdateAddressApi; import com.uiui.zyos.network.api.UpdateAlarmClockApi; @@ -362,7 +364,12 @@ public class NetInterfaceManager { .observeOn(AndroidSchedulers.mainThread()); } - + public Observable> getsettingControl() { + return mRetrofit.create(SettingApi.class) + .getSetting(RemoteManager.getInstance().getSerial()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()); + } /* * diff --git a/app/src/main/java/com/uiui/zyos/network/UrlAddress.java b/app/src/main/java/com/uiui/zyos/network/UrlAddress.java index 5c95de1..6bda9fe 100644 --- a/app/src/main/java/com/uiui/zyos/network/UrlAddress.java +++ b/app/src/main/java/com/uiui/zyos/network/UrlAddress.java @@ -41,6 +41,8 @@ public class UrlAddress { public final static String GET_CLOUD_LESSON = "Control/getCloudLessonSetting"; public final static String GET_CLOUD_LESSON_APP = "Control/getCloudLessonApp"; + /*获取系统设置*/ + public final static String GET_SETTINGS = "control/getSetting"; public static final String UIUIOS_ROOT_URL = "https://map.uiuios.com/android/"; /*获取应用更新*/ diff --git a/app/src/main/java/com/uiui/zyos/network/api/SettingApi.java b/app/src/main/java/com/uiui/zyos/network/api/SettingApi.java new file mode 100644 index 0000000..66d8b63 --- /dev/null +++ b/app/src/main/java/com/uiui/zyos/network/api/SettingApi.java @@ -0,0 +1,16 @@ +package com.uiui.zyos.network.api; + +import com.uiui.zyos.bean.BaseResponse; +import com.uiui.zyos.bean.SystemSettings; +import com.uiui.zyos.network.UrlAddress; + +import io.reactivex.rxjava3.core.Observable; +import retrofit2.http.GET; +import retrofit2.http.Query; + +public interface SettingApi { + @GET(UrlAddress.GET_SETTINGS) + Observable> getSetting( + @Query("sn") String sn + ); +} diff --git a/app/src/main/java/com/uiui/zyos/push/PushManager.java b/app/src/main/java/com/uiui/zyos/push/PushManager.java index 0845048..26c6872 100644 --- a/app/src/main/java/com/uiui/zyos/push/PushManager.java +++ b/app/src/main/java/com/uiui/zyos/push/PushManager.java @@ -6,6 +6,7 @@ import android.content.Context; import android.content.Intent; import com.uiui.zyos.disklrucache.CacheHelper; +import com.uiui.zyos.fragment.user.UserFragment; import com.uiui.zyos.network.NetInterfaceManager; import com.hjq.toast.Toaster; @@ -47,22 +48,46 @@ public class PushManager { private static final String JIGUANG_ALARM_CLOCK = "57"; /*网课模式*/ private static final String ONLINE_COURSE_MODE = "71"; + /*作业提醒*/ + private static final String HOMEWORK_REMINDERS = "115"; + /*爱的鼓励*/ + private static final String LOVE_ENCOURAGEMENT = "121"; + public void setPushContent(String title, String extras) { switch (title) { case JIGUANG_ALARM_CLOCK: Toaster.debugShow("收到推送消息: 设置闹钟"); - NetInterfaceManager.getInstance().getAlarmClock(); - Intent intent = new Intent(SET_ALARMCLOCK); - mContext.sendBroadcast(intent); + sendAlarmClock(extras); break; case ONLINE_COURSE_MODE: Toaster.debugShow("收到推送消息: 网课模式"); NetInterfaceManager.getInstance().getCloudLessonSettings(); break; + case HOMEWORK_REMINDERS: + sendHomework(extras); + break; + case LOVE_ENCOURAGEMENT: + Toaster.debugShow("收到推送消息: 爱的鼓励"); + sendEncouragement(extras); default: } } + private void sendAlarmClock(String extras) { + NetInterfaceManager.getInstance().getAlarmClock(); + Intent intent = new Intent(SET_ALARMCLOCK); + mContext.sendBroadcast(intent); + } + + private void sendHomework(String extras) { + Intent intent = new Intent(UserFragment.ACTION_REFRESH_HOMEWORK_REMINDERS); + mContext.sendBroadcast(intent); + } + + private void sendEncouragement(String extras) { + Intent intent = new Intent(UserFragment.ACTION_REFRESH_LOVE_ENCOURAGEMENT); + mContext.sendBroadcast(intent); + } } diff --git a/app/src/main/java/com/uiui/zyos/service/SocketService.java b/app/src/main/java/com/uiui/zyos/service/SocketService.java index 417151c..898eacd 100644 --- a/app/src/main/java/com/uiui/zyos/service/SocketService.java +++ b/app/src/main/java/com/uiui/zyos/service/SocketService.java @@ -22,9 +22,11 @@ import androidx.core.app.NotificationManagerCompat; import com.blankj.utilcode.util.NetworkUtils; import com.google.gson.JsonObject; +import com.tencent.mmkv.MMKV; import com.uiui.zyos.BuildConfig; import com.uiui.zyos.R; import com.uiui.zyos.activity.main.MainActivity; +import com.uiui.zyos.config.CommonConfig; import com.uiui.zyos.manager.RemoteManager; import com.uiui.zyos.utils.ActivationUtil; import com.uiui.zyos.utils.ServiceAliveUtils; @@ -59,6 +61,8 @@ import io.reactivex.rxjava3.functions.Consumer; public class SocketService extends Service implements NetworkUtils.OnNetworkStatusChangedListener { private static final String TAG = "JWebSocketClientService"; + private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE); + public JWebSocketClient mJWebSocketClient; // private SocketServiceBinder mBinder = new SocketServiceBinder(); @@ -112,6 +116,7 @@ public class SocketService extends Service implements NetworkUtils.OnNetworkStat Log.e(TAG, "onCreate: "); NetworkUtils.registerNetworkStatusChangedListener(this); registerScreenLockReceiver(); + registerJxwRegisterRefreshReceiver(); if (ActivationUtil.isActivation()) { //初始化websocket @@ -120,6 +125,7 @@ public class SocketService extends Service implements NetworkUtils.OnNetworkStat } else { Log.e(TAG, "onCreate: 未激活不连接"); } + // boolean isServiceRunning = ServiceAliveUtils.isServiceAlive(this, MainService.class.getName()); // Log.e(TAG, "onCreate: isServiceRunning = " + isServiceRunning); // if (!isServiceRunning) { @@ -148,6 +154,9 @@ public class SocketService extends Service implements NetworkUtils.OnNetworkStat if (mScreenLockReceiver != null) { unregisterReceiver(mScreenLockReceiver); } + if (mJxwRegisterReceiver != null) { + unregisterReceiver(mJxwRegisterReceiver); + } // unbindService(mServiceConnection); } @@ -223,6 +232,7 @@ public class SocketService extends Service implements NetworkUtils.OnNetworkStat switch (action) { case Intent.ACTION_BOOT_COMPLETED: case Intent.ACTION_USER_PRESENT: + case Intent.ACTION_SCREEN_ON: sendMsgScreen(); break; @@ -238,6 +248,33 @@ public class SocketService extends Service implements NetworkUtils.OnNetworkStat } } + public static final String JXW_REGISTER_SUCCESS = "com.zzj.regist_success"; + + private JxwRegisterReceiver mJxwRegisterReceiver; + + private void registerJxwRegisterRefreshReceiver() { + if (mJxwRegisterReceiver == null) { + mJxwRegisterReceiver = new JxwRegisterReceiver(); + } + IntentFilter filter = new IntentFilter(); + filter.addAction(JXW_REGISTER_SUCCESS); + registerReceiver(mJxwRegisterReceiver, filter); + } + + public class JxwRegisterReceiver extends BroadcastReceiver { + @Override + public void onReceive(Context context, Intent intent) { + String action = intent.getAction(); + Log.e("JxwRegisterReceiver", "onReceive: " + action); + if (JXW_REGISTER_SUCCESS.equals(action)) { + mMMKV.encode(JXW_REGISTER_SUCCESS, true); + mMMKV.encode(CommonConfig.UIUI_ACTIVATION_KEY, ActivationUtil.ACTIVATED_KEY); + initSocketClient(); + startLoop(); + } + } + } + private Disposable mDisposable; private void dispose() { diff --git a/app/src/main/java/com/uiui/zyos/utils/ActivationUtil.java b/app/src/main/java/com/uiui/zyos/utils/ActivationUtil.java index 35e78a4..c9af068 100644 --- a/app/src/main/java/com/uiui/zyos/utils/ActivationUtil.java +++ b/app/src/main/java/com/uiui/zyos/utils/ActivationUtil.java @@ -1,19 +1,21 @@ package com.uiui.zyos.utils; -import android.provider.Settings; - +import com.tencent.mmkv.MMKV; import com.uiui.zyos.base.BaseApplication; import com.uiui.zyos.config.CommonConfig; +@Deprecated public class ActivationUtil { + private static MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE); + /*写入1为激活*/ - private static final int ACTIVATED_KEY = 1; - private static final int INACTIVATED_KEY = 0; + public static final int ACTIVATED_KEY = 1; + public static final int INACTIVATED_KEY = 0; /*默认激活码类型*/ - private static final int DEFAULT_CODE_TYPE = -1; + public static final int DEFAULT_CODE_TYPE = -1; /*默认过期时间*/ - private static final int DEFAULT_EXPIRE_TIME = -1; + public static final int DEFAULT_EXPIRE_TIME = -1; /** @@ -22,7 +24,7 @@ public class ActivationUtil { * @return */ public static int getActivationStateCode() { - int activation = Settings.Global.getInt(BaseApplication.getContext().getContentResolver(), CommonConfig.UIUI_ACTIVATION_KEY, INACTIVATED_KEY); + int activation = mMMKV.decodeInt(CommonConfig.UIUI_ACTIVATION_KEY, INACTIVATED_KEY); return activation; } @@ -41,7 +43,7 @@ public class ActivationUtil { * @param code */ public static void setActivation(int code) { - Settings.Global.putInt(BaseApplication.getContext().getContentResolver(), CommonConfig.UIUI_ACTIVATION_KEY, code); + mMMKV.encode(CommonConfig.UIUI_ACTIVATION_KEY, code); } /** @@ -50,7 +52,7 @@ public class ActivationUtil { * @param code */ public static void setActivationCodeType(int code) { - Settings.Global.putInt(BaseApplication.getContext().getContentResolver(), CommonConfig.UIUI_CODE_TYPE_KEY, code); + mMMKV.encode(CommonConfig.UIUI_CODE_TYPE_KEY, code); } /** @@ -59,7 +61,7 @@ public class ActivationUtil { * @return */ public static int getActivationCodeType() { - return Settings.Global.getInt(BaseApplication.getContext().getContentResolver(), CommonConfig.UIUI_CODE_TYPE_KEY, DEFAULT_CODE_TYPE); + return mMMKV.decodeInt(CommonConfig.UIUI_CODE_TYPE_KEY, DEFAULT_CODE_TYPE); } /** @@ -68,7 +70,7 @@ public class ActivationUtil { * @param expireTime */ public static void setActivationExpireTime(long expireTime) { - Settings.Global.putLong(BaseApplication.getContext().getContentResolver(), CommonConfig.UIUI_EXPIRE_TIME_KEY, expireTime); + mMMKV.encode(CommonConfig.UIUI_EXPIRE_TIME_KEY, expireTime); } /** @@ -77,7 +79,7 @@ public class ActivationUtil { * @return */ public static long getActivationExpireTime() { - return Settings.Global.getLong(BaseApplication.getContext().getContentResolver(), CommonConfig.UIUI_EXPIRE_TIME_KEY, DEFAULT_EXPIRE_TIME); + return mMMKV.decodeLong(CommonConfig.UIUI_EXPIRE_TIME_KEY, DEFAULT_EXPIRE_TIME); } } \ No newline at end of file diff --git a/app/src/main/java/com/uiui/zyos/utils/ApkUtils.java b/app/src/main/java/com/uiui/zyos/utils/ApkUtils.java index bc9fdb7..811a012 100644 --- a/app/src/main/java/com/uiui/zyos/utils/ApkUtils.java +++ b/app/src/main/java/com/uiui/zyos/utils/ApkUtils.java @@ -284,7 +284,7 @@ public class ApkUtils { // infoIcon.setIcon(context.getDrawable(R.drawable.com_uiui_sn)); // infoIcon.setLable("我的设备"); // infoIcon.setPackageName("com.uiui.zy"); -// infoIcon.setClassName("com.uiui.zy.activity.main.MainActivity"); +// infoIcon.setClassName("com.uiui.zy.activity.splash.SplashActivity"); // infoIcon.setPosition(0); // desktopIcons.add(0, infoIcon); return desktopIcons; @@ -746,9 +746,11 @@ public class ApkUtils { Log.e(TAG, "getAppDrawable: "); } if (packageInfo != null) { - return packageInfo.applicationInfo.loadIcon(pm); + Drawable drawable = packageInfo.applicationInfo.loadIcon(pm); + return drawable; } else { - return context.getDrawable(resId); + Drawable drawable = context.getDrawable(resId); + return drawable; } } diff --git a/app/src/main/java/com/uiui/zyos/utils/GlideLoadUtils.java b/app/src/main/java/com/uiui/zyos/utils/GlideLoadUtils.java index 805e092..266fe9b 100644 --- a/app/src/main/java/com/uiui/zyos/utils/GlideLoadUtils.java +++ b/app/src/main/java/com/uiui/zyos/utils/GlideLoadUtils.java @@ -128,7 +128,12 @@ public class GlideLoadUtils { @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) public void glideLoad(Activity activity, String url, ImageView imageView, int default_image) { if (!activity.isDestroyed()) { - Glide.with(activity).load(url).centerCrop().error(default_image).into(imageView); + Glide.with(activity).load(url).into(new SimpleTarget() { + @Override + public void onResourceReady(@NonNull Drawable resource, @Nullable Transition transition) { + imageView.setImageDrawable(resource); + } + }); } else { Log.i(TAG, "Picture loading failed,activity is Destroyed"); } diff --git a/app/src/main/java/com/uiui/zyos/utils/OpenApkUtils.java b/app/src/main/java/com/uiui/zyos/utils/OpenApkUtils.java index 1c08009..10bc91f 100644 --- a/app/src/main/java/com/uiui/zyos/utils/OpenApkUtils.java +++ b/app/src/main/java/com/uiui/zyos/utils/OpenApkUtils.java @@ -7,6 +7,7 @@ import android.content.Context; import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; +import android.os.Build; import android.provider.Settings; import android.text.TextUtils; import android.util.Log; @@ -18,6 +19,7 @@ import com.tencent.mmkv.MMKV; import com.uiui.zyos.bean.LessonJson; import com.uiui.zyos.config.CommonConfig; import com.uiui.zyos.jxw.JxwPackageConfig; +import com.uiui.zyos.manager.RemoteManager; import java.lang.reflect.Type; import java.math.BigDecimal; @@ -64,12 +66,12 @@ public class OpenApkUtils { if (!ApkUtils.isAvailable(mContext, "com.uiui.zy")) { return true; } - int is_activation = Settings.Global.getInt(mContext.getContentResolver(), CommonConfig.UIUI_ACTIVATION_KEY, 0); - if (is_activation != 1) { - ApkUtils.openPackage(mContext, "com.uiui.zy", "com.uiui.zy.activity.main.MainActivity"); + boolean is_activation = RemoteManager.getInstance().getSnIsActivation(); + if (!is_activation) { + OpenApkUtils.getInstance().openZySn(); Toaster.show("请激活设备后使用"); } - return is_activation == 1; + return is_activation; } public boolean openPackageWithArgs(String packageName, String className, String name, String args) { @@ -607,4 +609,30 @@ public class OpenApkUtils { mContext.startActivity(intent); } + public boolean openZySn() { + if (!ApkUtils.isAvailable(mContext, "com.uiui.zy")) { + Toaster.show("应用未安装"); + return false; + } + try { + PackageManager pm = mContext.getPackageManager(); + PackageInfo packageInfo = pm.getPackageInfo("com.uiui.zy", 0); + long appVersionCode; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + appVersionCode = packageInfo.getLongVersionCode(); + } else { + appVersionCode = packageInfo.versionCode; + } + if (appVersionCode <= 95) { + openApp("com.uiui.zy", "com.uiui.zy.activity.main.MainActivity"); + } else { + openApp("com.uiui.zy", "com.uiui.zy.activity.splash.SplashActivity"); + } + return true; + } catch (PackageManager.NameNotFoundException e) { + e.printStackTrace(); + Log.e(TAG, "onCreate: " + e.getMessage()); + } + return false; + } } diff --git a/app/src/main/java/com/uiui/zyos/utils/Utils.java b/app/src/main/java/com/uiui/zyos/utils/Utils.java index a43cc2a..a3850f9 100644 --- a/app/src/main/java/com/uiui/zyos/utils/Utils.java +++ b/app/src/main/java/com/uiui/zyos/utils/Utils.java @@ -121,11 +121,11 @@ public class Utils { * @return */ synchronized public static int getBatteryLevel(Context mContext) { - if (Build.VERSION.SDK_INT >= 21) { - return ((BatteryManager) mContext.getSystemService(Context.BATTERY_SERVICE)).getIntProperty(4); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + return ((BatteryManager) mContext.getSystemService(Context.BATTERY_SERVICE)).getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY); } else { - Intent intent = (new ContextWrapper(mContext)).registerReceiver(null, new IntentFilter("android.intent.action.BATTERY_CHANGED")); - return intent.getIntExtra("level", -1) * 100 / intent.getIntExtra("scale", -1); + Intent intent = (new ContextWrapper(mContext)).registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); + return intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0) * 100 / intent.getIntExtra(BatteryManager.EXTRA_SCALE, 100); } } @@ -248,26 +248,31 @@ public class Utils { } public static void exitDesktop(Activity context) { - if ("U807".equals(BuildConfig.platform) && ApkUtils.isAvailable(context, "com.uiuipad.os")) { - RemoteManager.getInstance().setDefaultDesktop("com.uiuipad.os"); + if ("HONOR".equalsIgnoreCase(Build.BRAND)) { + RemoteManager.getInstance().exitDesktop(); +// RemoteManager.getInstance().setDefaultDesktop("com.hihonor.android.launcher"); } else { - RemoteManager.getInstance().setDefaultDesktop(ApkUtils.ANDROID_LAUNCHER3_PACKAGE_NAME); - } - - if (Build.VERSION.SDK_INT > Build.VERSION_CODES.Q) { if ("U807".equals(BuildConfig.platform) && ApkUtils.isAvailable(context, "com.uiuipad.os")) { - if (!ApkUtils.openPackage(context, "com.uiuipad.os", "com.uiuipad.os.Launcher")) { - ApkUtils.gotoLauncher(context); + RemoteManager.getInstance().setDefaultDesktop("com.uiuipad.os"); + } else { +// RemoteManager.getInstance().setDefaultDesktop(ApkUtils.ANDROID_LAUNCHER3_PACKAGE_NAME); + } + + if (Build.VERSION.SDK_INT > Build.VERSION_CODES.Q) { + if ("U807".equals(BuildConfig.platform) && ApkUtils.isAvailable(context, "com.uiuipad.os")) { + if (!ApkUtils.openPackage(context, "com.uiuipad.os", "com.uiuipad.os.Launcher")) { + ApkUtils.gotoLauncher(context); + } + } else { + if (!ApkUtils.openPackage(context, ApkUtils.ANDROID_LAUNCHER3_PACKAGE_NAME, ApkUtils.ANDROID_LAUNCHER3_Quickstep_CLASS_NAME)) { + ApkUtils.gotoLauncher(context); + } } } else { - if (!ApkUtils.openPackage(context, ApkUtils.ANDROID_LAUNCHER3_PACKAGE_NAME, ApkUtils.ANDROID_LAUNCHER3_Quickstep_CLASS_NAME)) { + if (!ApkUtils.openPackage(context, ApkUtils.ANDROID_LAUNCHER3_PACKAGE_NAME, ApkUtils.ANDROID_LAUNCHER3_CLASS_NAME)) { ApkUtils.gotoLauncher(context); } } - } else { - if (!ApkUtils.openPackage(context, ApkUtils.ANDROID_LAUNCHER3_PACKAGE_NAME, ApkUtils.ANDROID_LAUNCHER3_CLASS_NAME)) { - ApkUtils.gotoLauncher(context); - } } context.finish(); System.exit(0); diff --git a/app/src/main/res/drawable-hdpi/icon_selected.png b/app/src/main/res/drawable-hdpi/icon_selected.png deleted file mode 100644 index fc5be44..0000000 Binary files a/app/src/main/res/drawable-hdpi/icon_selected.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi/icon_unselect.png b/app/src/main/res/drawable-hdpi/icon_unselect.png deleted file mode 100644 index 99de4c9..0000000 Binary files a/app/src/main/res/drawable-hdpi/icon_unselect.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi/wechat_service.png b/app/src/main/res/drawable-hdpi/wechat_service.png index 9fbf951..25c52f4 100644 Binary files a/app/src/main/res/drawable-hdpi/wechat_service.png and b/app/src/main/res/drawable-hdpi/wechat_service.png differ diff --git a/app/src/main/res/drawable/icon_selected.xml b/app/src/main/res/drawable/icon_selected.xml new file mode 100644 index 0000000..c658f4a --- /dev/null +++ b/app/src/main/res/drawable/icon_selected.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/icon_unselect.xml b/app/src/main/res/drawable/icon_unselect.xml new file mode 100644 index 0000000..17ac786 --- /dev/null +++ b/app/src/main/res/drawable/icon_unselect.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/activity_permission.xml b/app/src/main/res/layout/activity_permission.xml index eeb89c2..1e8e8c2 100644 --- a/app/src/main/res/layout/activity_permission.xml +++ b/app/src/main/res/layout/activity_permission.xml @@ -45,7 +45,9 @@ @@ -62,6 +65,7 @@ + android:background="@drawable/permission_card_background" + android:visibility="gone"> @@ -198,6 +206,7 @@ + android:background="@drawable/permission_card_background" + android:visibility="gone"> @@ -334,6 +347,7 @@ @@ -402,6 +419,7 @@ + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_wechat.xml b/app/src/main/res/layout/activity_service.xml similarity index 81% rename from app/src/main/res/layout/activity_wechat.xml rename to app/src/main/res/layout/activity_service.xml index beb4604..705c0fc 100644 --- a/app/src/main/res/layout/activity_wechat.xml +++ b/app/src/main/res/layout/activity_service.xml @@ -2,7 +2,7 @@ + tools:context=".activity.service.ServiceActivity"> @@ -13,8 +13,9 @@ android:layout_height="wrap_content"> + + @@ -135,8 +154,8 @@ android:layout_marginTop="@dimen/dp_8" android:layout_marginBottom="@dimen/dp_8" android:gravity="center" - android:maxLines="1" android:maxLength="8" + android:maxLines="1" android:singleLine="true" android:text="@{TextUtils.isEmpty(userAvatarInfo.sn_name)?@string/default_nickname:userAvatarInfo.sn_name}" android:textColor="@color/black" @@ -151,7 +170,7 @@ + android:onClick="@{click::checkPermission}" + android:text="权限设置" + android:textColor="@color/white" + android:textSize="@dimen/sp_10" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" /> + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_add_app.xml b/app/src/main/res/layout/item_add_app.xml index f895776..8124ab6 100644 --- a/app/src/main/res/layout/item_add_app.xml +++ b/app/src/main/res/layout/item_add_app.xml @@ -33,11 +33,13 @@ android:id="@+id/iv_select" android:layout_width="@dimen/dp_12" android:layout_height="@dimen/dp_12" + android:layout_marginStart="@dimen/dp_26" + android:layout_marginTop="@dimen/dp_26" android:adjustViewBounds="true" android:scaleType="centerCrop" android:src="@drawable/icon_unselect" - app:layout_constraintBottom_toBottomOf="@+id/iv_icon" - app:layout_constraintEnd_toEndOf="@+id/iv_icon" /> + app:layout_constraintStart_toStartOf="@+id/iv_icon" + app:layout_constraintTop_toTopOf="@+id/iv_icon" />