From 832acf27145e28ee440665d06dbcb85f8511a873 Mon Sep 17 00:00:00 2001 From: tongtongstudio Date: Fri, 23 Jan 2026 09:31:02 +0800 Subject: [PATCH] =?UTF-8?q?version:1.0.9=20fix:=20update:=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E6=8E=A8=E9=80=81=EF=BC=8C=E4=BC=98=E5=8C=96=E6=BF=80?= =?UTF-8?q?=E6=B4=BB=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 4 +- .../com/xwad/os/activity/ExitActivity.java | 7 +- .../xwad/os/activity/home/HomeActivity.java | 97 +++++-- .../com/xwad/os/base/BaseApplication.java | 44 +++- .../java/com/xwad/os/bean/SystemSettings.java | 104 ++++++-- .../java/com/xwad/os/config/CommonConfig.java | 1 + .../com/xwad/os/dialog/DeactivateDialog.java | 239 ++++++++++++++++++ .../xwad/os/fragment/app/AppViewModel.java | 10 +- .../com/xwad/os/manager/ControlManager.java | 29 ++- .../java/com/xwad/os/mdm/AdminManager.java | 24 +- .../java/com/xwad/os/push/PushManager.java | 65 ++++- .../com/xwad/os/service/ManagerService.java | 5 +- .../com/xwad/os/service/SocketService.java | 3 +- .../com/xwad/os/service/main/MainService.java | 1 + .../main/java/com/xwad/os/utils/JgyUtils.java | 14 +- .../java/com/xwad/os/utils/OpenApkUtils.java | 30 +++ .../main/java/com/xwad/os/utils/Utils.java | 69 +++-- app/src/main/res/layout/activity_home.xml | 1 + app/src/main/res/layout/dialog_deactivate.xml | 133 ++++++++++ 19 files changed, 766 insertions(+), 114 deletions(-) create mode 100644 app/src/main/java/com/xwad/os/dialog/DeactivateDialog.java create mode 100644 app/src/main/res/layout/dialog_deactivate.xml diff --git a/app/build.gradle b/app/build.gradle index b53923d..b21f0d9 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -17,8 +17,8 @@ android { minSdkVersion 23 targetSdkVersion 29 - versionCode 7 - versionName "1.0.6" + versionCode 10 + versionName "1.0.9" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/app/src/main/java/com/xwad/os/activity/ExitActivity.java b/app/src/main/java/com/xwad/os/activity/ExitActivity.java index 099a5dd..041f1fe 100644 --- a/app/src/main/java/com/xwad/os/activity/ExitActivity.java +++ b/app/src/main/java/com/xwad/os/activity/ExitActivity.java @@ -26,7 +26,7 @@ import com.xwad.os.base.BaseDataBindingActivity; import com.xwad.os.config.CommonConfig; import com.xwad.os.databinding.ActivityExitBinding; import com.xwad.os.mdm.AdminManager; -import com.xwad.os.utils.Utils; +import com.xwad.os.utils.ApkUtils; import java.util.List; import java.util.function.Function; @@ -179,15 +179,18 @@ public class ExitActivity extends BaseDataBindingActivity { // } // // startActivity(new Intent(Settings.ACTION_HOME_SETTINGS)); + AdminManager.getInstance().removeDisallowedRunningApp("com.hihonor.android.launcher"); + AdminManager.getInstance().clearDefaultLauncher(); AdminManager.getInstance().setDefaultLauncher("com.hihonor.android.launcher", "com.hihonor.android.launcher.unihome.UniHomeLauncher"); + ApkUtils.openPackage(this, "com.hihonor.android.launcher", "com.hihonor.android.launcher.unihome.UniHomeLauncher"); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { finishAndRemoveTask(); } else { finishAffinity(); } - + AdminManager.getInstance().killApplicationProcess(BuildConfig.APPLICATION_ID); android.os.Process.killProcess(android.os.Process.myPid()); System.exit(0); } diff --git a/app/src/main/java/com/xwad/os/activity/home/HomeActivity.java b/app/src/main/java/com/xwad/os/activity/home/HomeActivity.java index f7717b3..e05cb12 100644 --- a/app/src/main/java/com/xwad/os/activity/home/HomeActivity.java +++ b/app/src/main/java/com/xwad/os/activity/home/HomeActivity.java @@ -12,7 +12,6 @@ import android.content.res.Resources; import android.os.BatteryManager; import android.os.Build; import android.os.Bundle; -import android.os.Handler; import android.provider.Settings; import android.text.TextUtils; import android.util.Log; @@ -44,12 +43,12 @@ import com.xwad.os.activity.permission.PermissionActivity; import com.xwad.os.activity.update.UpdateActivity; import com.xwad.os.base.mvvm.BaseMvvmActivity; import com.xwad.os.bean.AppInfo; -import com.xwad.os.bean.AppUpdateInfo; import com.xwad.os.bean.PhraseContent; import com.xwad.os.bean.UserInfo; import com.xwad.os.bean.jxw.TabBean; import com.xwad.os.config.CommonConfig; import com.xwad.os.databinding.ActivityHomeBinding; +import com.xwad.os.dialog.DeactivateDialog; import com.xwad.os.dialog.PermissionsDialog; import com.xwad.os.dialog.PrivacyPolicyDialog; import com.xwad.os.eula.EulaDialog; @@ -70,11 +69,9 @@ import com.xwad.os.jxw.event.UpdateColorEvent; import com.xwad.os.jxw.event.UpdateGradeEvent; import com.xwad.os.jxw.fragment.SztzFragment; import com.xwad.os.jxw.util.Util; -import com.xwad.os.manager.DeviceSNManager; import com.xwad.os.mdm.AdminManager; import com.xwad.os.permission.PermissionUtils; import com.xwad.os.receiver.AoleDeviceAdminReceiver; -import com.xwad.os.service.main.MainService; import com.xwad.os.utils.ActivationUtil; import com.xwad.os.utils.ApkUtils; import com.xwad.os.utils.DataUtil; @@ -110,7 +107,7 @@ public class HomeActivity extends BaseMvvmActivity mPersistentApp=new ArrayList(){{ + private ArrayList mPersistentApp = new ArrayList() {{ this.add(BuildConfig.APPLICATION_ID); this.add("com.jxw.launcher"); this.add("com.jxw.zncd"); @@ -270,7 +267,7 @@ public class HomeActivity extends BaseMvvmActivity packageList = getDisallowedRunningApp(); +// List packageList = new ArrayList<>(); Log.e(TAG, "addDisallowedRunningApp: packageList = " + packageList); packageList.add(pkg); try { @@ -430,7 +440,12 @@ public class AdminManager { public List getDisallowedRunningApp() { try { - return mDeviceApplicationManager.getDisallowedRunningApp(mAdminName); + List strings = mDeviceApplicationManager.getDisallowedRunningApp(mAdminName); + Log.e(TAG, "getDisallowedRunningApp: " + strings); + if (strings == null) { + strings = new ArrayList<>(); + } + return strings; } catch (Exception e) { Log.e(TAG, "getDisallowedRunningApp: " + e.getMessage()); } @@ -549,8 +564,9 @@ public class AdminManager { /** * 设置可信任应用列表 - * 3.11.9 ~ 3.11.23 接口为拆分了以上功能的各个接口,该接口和 3.11.9 ~ 3.11.23 接 + * 3.11.9 ~ 3.11.23 接口为拆分了以上功能的各个接口,该接口和 3.11.9 ~ 3.11.23 接 * 口不可同时使用。 + * * @param packageNames */ public void setSuperTrustListForHwSystemManger(ArrayList packageNames) { diff --git a/app/src/main/java/com/xwad/os/push/PushManager.java b/app/src/main/java/com/xwad/os/push/PushManager.java index 4d97f78..3bd4a12 100644 --- a/app/src/main/java/com/xwad/os/push/PushManager.java +++ b/app/src/main/java/com/xwad/os/push/PushManager.java @@ -11,6 +11,7 @@ import android.util.Log; import com.google.gson.JsonElement; import com.google.gson.JsonObject; +import com.hjq.toast.Toaster; import com.tencent.mmkv.MMKV; import com.xwad.os.BuildConfig; import com.xwad.os.activity.home.HomeActivity; @@ -23,7 +24,6 @@ import com.xwad.os.gson.GsonUtils; import com.xwad.os.manager.ControlManager; import com.xwad.os.mdm.AdminManager; import com.xwad.os.network.NetInterfaceManager; -import com.hjq.toast.Toaster; import com.xwad.os.network.RetryCallback; import com.xwad.os.service.ManagerService; import com.xwad.os.service.main.MainService; @@ -34,7 +34,6 @@ import com.xwad.os.utils.ServiceAliveUtils; import com.xwad.os.utils.Utils; import java.io.File; -import java.io.IOException; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -276,6 +275,13 @@ public class PushManager { /*爱的鼓励*/ private static final String LOVE_ENCOURAGEMENT = "121"; + /*AI家庭教师开关*/ + private static final String AI_Tutor = "123"; + /*拍照搜题*/ + private static final String PHOTO_SEARCH_QUESTIONS = "124"; + /*AI答疑测试*/ + private static final String AI_QA_TEST = "125"; + public void setPushContent(String title, String extras) { switch (title) { @@ -357,10 +363,65 @@ public class PushManager { case LOVE_ENCOURAGEMENT: Toaster.debugShow("收到推送消息: 爱的鼓励"); sendEncouragement(extras); + break; + case AI_Tutor: + setAiTeacher(extras); + break; + case PHOTO_SEARCH_QUESTIONS: + setPhotoSearchQuestions(extras); + break; + case AI_QA_TEST: + setAiQuestionTest(extras); + break; default: } } + private void setAiTeacher(String extras) { + JsonObject jsonObject = GsonUtils.getJsonObject(extras); + JsonElement jsonElement = jsonObject.get("ai_teacher"); + if (jsonElement == null || jsonElement.isJsonNull()) { + Log.e(TAG, "setAiTeacher: jsonElement is null"); + return; + } + int ai_teacher = jsonElement.getAsInt(); + if (ai_teacher == 0) { + AdminManager.getInstance().addDisallowedRunningApp("com.jxw.aijtjs"); + } else { + AdminManager.getInstance().removeDisallowedRunningApp("com.jxw.aijtjs"); + } + } + + private void setPhotoSearchQuestions(String extras) { + JsonObject jsonObject = GsonUtils.getJsonObject(extras); + JsonElement jsonElement = jsonObject.get("photo_search_questions"); + if (jsonElement == null || jsonElement.isJsonNull()) { + Log.e(TAG, "setPhotoSearchQuestions: jsonElement is null"); + return; + } + int photo_search_questions = jsonElement.getAsInt(); + if (photo_search_questions == 0) { + AdminManager.getInstance().addDisallowedRunningApp("com.jxw.souti"); + } else { + AdminManager.getInstance().removeDisallowedRunningApp("com.jxw.souti"); + } + } + + private void setAiQuestionTest(String extras) { + JsonObject jsonObject = GsonUtils.getJsonObject(extras); + JsonElement jsonElement = jsonObject.get("ai_question_test"); + if (jsonElement == null || jsonElement.isJsonNull()) { + Log.e(TAG, "setAiQuestionTest: jsonElement is null"); + return; + } + int ai_question_test = jsonElement.getAsInt(); + if (ai_question_test == 0) { + AdminManager.getInstance().addDisallowedRunningApp("com.jxw.aizndy"); + } else { + AdminManager.getInstance().removeDisallowedRunningApp("com.jxw.aizndy"); + } + } + private void setNotification(String extras) { JsonObject jsonObject = GsonUtils.getJsonObject(extras); JsonElement jsonElement = jsonObject.get("is_notify_bar_show"); diff --git a/app/src/main/java/com/xwad/os/service/ManagerService.java b/app/src/main/java/com/xwad/os/service/ManagerService.java index b9dfa14..e66501b 100644 --- a/app/src/main/java/com/xwad/os/service/ManagerService.java +++ b/app/src/main/java/com/xwad/os/service/ManagerService.java @@ -44,7 +44,6 @@ import com.xwad.os.receiver.ApkInstallReceiver; import com.xwad.os.receiver.BootReceiver; import com.xwad.os.service.main.MainService; import com.xwad.os.utils.ActivationUtil; -import com.xwad.os.utils.ApkUtils; import com.xwad.os.utils.JgyUtils; import com.xwad.os.utils.ServiceAliveUtils; import com.xwad.os.utils.TimeUtils; @@ -522,8 +521,8 @@ public class ManagerService extends Service implements NetworkUtils.OnNetworkSta } }); - JgyUtils.getInstance().setDefaultDesktop("com.uiui.zyos", "com.uiui.zyos.activity.main.MainActivity"); - ApkUtils.openApp(ManagerService.this, "com.uiui.zyos"); +// JgyUtils.getInstance().setDefaultDesktop("com.uiui.zyos", "com.uiui.zyos.activity.main.MainActivity"); +// ApkUtils.openApp(ManagerService.this, "com.uiui.zyos"); } private void add(VerificationCodeView codeView, String text) { diff --git a/app/src/main/java/com/xwad/os/service/SocketService.java b/app/src/main/java/com/xwad/os/service/SocketService.java index 3ad93e5..3232866 100644 --- a/app/src/main/java/com/xwad/os/service/SocketService.java +++ b/app/src/main/java/com/xwad/os/service/SocketService.java @@ -18,14 +18,12 @@ import com.alibaba.sdk.android.push.noonesdk.PushServiceFactory; import com.blankj.utilcode.util.NetworkUtils; import com.google.gson.JsonElement; import com.google.gson.JsonObject; -import com.google.gson.JsonParser; import com.hjq.toast.Toaster; import com.tencent.mmkv.MMKV; import com.xwad.os.BuildConfig; import com.xwad.os.activity.login.LoginActivity; import com.xwad.os.config.CommonConfig; import com.xwad.os.gson.GsonUtils; -import com.xwad.os.manager.DeviceSNManager; import com.xwad.os.mdm.AdminManager; import com.xwad.os.network.NetInterfaceManager; import com.xwad.os.network.UrlAddress; @@ -156,6 +154,7 @@ public class SocketService extends Service implements NetworkUtils.OnNetworkStat initSsoSocketClient(); initPush(); break; + default: } } } diff --git a/app/src/main/java/com/xwad/os/service/main/MainService.java b/app/src/main/java/com/xwad/os/service/main/MainService.java index c2d80df..5b81d83 100644 --- a/app/src/main/java/com/xwad/os/service/main/MainService.java +++ b/app/src/main/java/com/xwad/os/service/main/MainService.java @@ -77,6 +77,7 @@ public class MainService extends BaseRxService implements MainSContact.MainSView mPresenter.getCloudLessonSettings(); mPresenter.getScreenLock(); mPresenter.getAdminApp(); + mPresenter.getSystemSettings(); registerReceivers(); NetworkUtils.registerNetworkStatusChangedListener(this); diff --git a/app/src/main/java/com/xwad/os/utils/JgyUtils.java b/app/src/main/java/com/xwad/os/utils/JgyUtils.java index 9237e96..a1dcf50 100644 --- a/app/src/main/java/com/xwad/os/utils/JgyUtils.java +++ b/app/src/main/java/com/xwad/os/utils/JgyUtils.java @@ -829,13 +829,13 @@ public class JgyUtils { if (TextUtils.isEmpty(className)) { openLauncher3(); } else { - setDefaultDesktop(pkg, className); + AdminManager.getInstance().setDefaultLauncher(pkg, className); } } } private void openLauncher3() { - setDefaultDesktop(Launcher3, Launcher3Class); + AdminManager.getInstance().setDefaultLauncher(Launcher3, Launcher3Class); // ApkUtils.openPackage(mContext, Launcher3); } @@ -887,11 +887,11 @@ public class JgyUtils { } public void setDefaultDesktop(String pkg, String className) { - if (!isDefaultLauncher(pkg, className)) { - AdminManager.getInstance().setDefaultLauncher(pkg, className); - } else { - Log.e(TAG, "setDefaultDesktop: pkg = already set default luancher"); - } +// if (!isDefaultLauncher(pkg, className)) { +// AdminManager.getInstance().setDefaultLauncher(pkg, className); +// } else { +// Log.e(TAG, "setDefaultDesktop: pkg = already set default luancher"); +// } // if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { // setRoleHolderAsUser(mContext, pkg); // Log.e(TAG, "setDefaultDesktop: setRoleHolderAsUser"); diff --git a/app/src/main/java/com/xwad/os/utils/OpenApkUtils.java b/app/src/main/java/com/xwad/os/utils/OpenApkUtils.java index 69fffa3..22643c6 100644 --- a/app/src/main/java/com/xwad/os/utils/OpenApkUtils.java +++ b/app/src/main/java/com/xwad/os/utils/OpenApkUtils.java @@ -64,12 +64,15 @@ public class OpenApkUtils { private LessonJson mLessonJson; private TimeUtils.ContralTime mContralTime; +// private Set mDisallowedRunningAppSet; + private OpenApkUtils(Context context) { if (context == null) { throw new RuntimeException("Context is NULL"); } this.mContext = context; this.mResolver = context.getContentResolver(); +// mDisallowedRunningAppSet = mMMKV.decodeStringSet(CommonConfig.DISALLOWED_RUNNING_APP_KEY, new HashSet<>()); refresh(); } @@ -86,6 +89,31 @@ public class OpenApkUtils { return sInstance; } +// public Set getDisallowedRunningAppSet() { +// if (mDisallowedRunningAppSet == null) { +// mDisallowedRunningAppSet = new HashSet<>(); +// } +// return mDisallowedRunningAppSet; +// } + +// public void addDisallowedRunningApp(String pkg) { +// Log.e(TAG, "addDisallowedRunningApp: " + pkg); +// if (mDisallowedRunningAppSet == null) { +// mDisallowedRunningAppSet = new HashSet<>(); +// } +// mDisallowedRunningAppSet.add(pkg); +// mMMKV.encode(CommonConfig.DISALLOWED_RUNNING_APP_KEY, mDisallowedRunningAppSet); +// } +// +// public void removeDisallowedRunningApp(String pkg) { +// Log.e(TAG, "removeDisallowedRunningApp: " + pkg); +// if (mDisallowedRunningAppSet == null) { +// mDisallowedRunningAppSet = new HashSet<>(); +// } +// mDisallowedRunningAppSet.remove(pkg); +// mMMKV.encode(CommonConfig.DISALLOWED_RUNNING_APP_KEY, mDisallowedRunningAppSet); +// } + private boolean checkActivation() { if (!ApkUtils.isAvailable(mContext, "com.uiui.zy")) { return true; @@ -720,6 +748,8 @@ public class OpenApkUtils { return; } + Log.e(TAG, "openJxwApp: " + AdminManager.getInstance().getDisallowedRunningApp()); + if (TextUtils.isEmpty(className)) { openApp(packageName); return; diff --git a/app/src/main/java/com/xwad/os/utils/Utils.java b/app/src/main/java/com/xwad/os/utils/Utils.java index 825463e..83b9cca 100644 --- a/app/src/main/java/com/xwad/os/utils/Utils.java +++ b/app/src/main/java/com/xwad/os/utils/Utils.java @@ -1,7 +1,6 @@ package com.xwad.os.utils; import android.Manifest; -import android.app.Activity; import android.app.ActivityManager; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; @@ -45,10 +44,8 @@ import com.google.zxing.common.BitMatrix; import com.google.zxing.qrcode.QRCodeWriter; import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; import com.tencent.mmkv.MMKV; -import com.xwad.os.BuildConfig; import com.xwad.os.R; import com.xwad.os.config.CommonConfig; -import com.xwad.os.mdm.AdminManager; import com.xwad.os.network.NetInterfaceManager; import java.io.BufferedReader; @@ -540,39 +537,39 @@ public class Utils { return powerManager.isInteractive(); } - public static void exitDesktop(Activity context) { - if ("HONOR".equalsIgnoreCase(Build.BRAND)) { -// AdminManager.getInstance().exitDesktop(); -// AdminManager.getInstance().setDefaultDesktop("com.hihonor.android.launcher"); - } else { - if ("U807".equals(BuildConfig.platform) && ApkUtils.isAvailable(context, "com.uiuipad.os")) { - AdminManager.getInstance().setDefaultLauncher("com.uiuipad.os"); - } else { - AdminManager.getInstance().setDefaultLauncher(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_CLASS_NAME)) { - ApkUtils.gotoLauncher(context); - } - } - } - context.finish(); - System.exit(0); - } +// public static void exitDesktop(Activity context) { +// if ("HONOR".equalsIgnoreCase(Build.BRAND)) { +//// AdminManager.getInstance().exitDesktop(); +//// AdminManager.getInstance().setDefaultDesktop("com.hihonor.android.launcher"); +// } else { +// if ("U807".equals(BuildConfig.platform) && ApkUtils.isAvailable(context, "com.uiuipad.os")) { +// AdminManager.getInstance().setDefaultLauncher("com.uiuipad.os"); +// } else { +// AdminManager.getInstance().setDefaultLauncher(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_CLASS_NAME)) { +// ApkUtils.gotoLauncher(context); +// } +// } +// } +// context.finish(); +// System.exit(0); +// } public static void triggerRebirth(Context context) { PackageManager packageManager = context.getPackageManager(); diff --git a/app/src/main/res/layout/activity_home.xml b/app/src/main/res/layout/activity_home.xml index 30dbf4e..ece7284 100644 --- a/app/src/main/res/layout/activity_home.xml +++ b/app/src/main/res/layout/activity_home.xml @@ -43,6 +43,7 @@ android:id="@+id/tv_notification" android:layout_width="0dp" android:layout_height="wrap_content" + android:visibility="gone" android:layout_marginEnd="8dp" android:ellipsize="marquee" android:focusable="true" diff --git a/app/src/main/res/layout/dialog_deactivate.xml b/app/src/main/res/layout/dialog_deactivate.xml new file mode 100644 index 0000000..aeef5c3 --- /dev/null +++ b/app/src/main/res/layout/dialog_deactivate.xml @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file