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 super Drawable> 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" />