diff --git a/app/build.gradle b/app/build.gradle index 55773f0..425af4b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -29,8 +29,8 @@ android { defaultConfig { applicationId "com.aoleyun.sn" - versionCode 143 - versionName "1.4.0608" + versionCode 153 + versionName "1.4.0705" //There are no CERT files because If the mini sdk version is 23+, the AGP will ignore the V1 scheme signature. minSdkVersion 24 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 1307a74..b832374 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -79,7 +79,7 @@ - + diff --git a/app/src/main/java/com/aoleyun/sn/activity/main/MainActivity.java b/app/src/main/java/com/aoleyun/sn/activity/main/MainActivity.java index 1a84461..c50f75e 100644 --- a/app/src/main/java/com/aoleyun/sn/activity/main/MainActivity.java +++ b/app/src/main/java/com/aoleyun/sn/activity/main/MainActivity.java @@ -313,7 +313,7 @@ public class MainActivity extends BaseMvvmActivity>>() { @Override public void onSubscribe(@NonNull Disposable d) { - Log.e("getAdminApp", "onSubscribe: "); + Log.e("getExclusiveAdminApp", "onSubscribe: "); } @Override public void onNext(@NonNull BaseResponse> listBaseResponse) { - Log.e("getAdminApp", "onNext: " + listBaseResponse); + Log.e("getExclusiveAdminApp", "onNext: " + listBaseResponse); if (listBaseResponse.code == 200) { List adminAppInfos = listBaseResponse.data; JGYUtils.getInstance().installAdminApp(adminAppInfos); @@ -139,12 +140,12 @@ public class MainViewModel extends BaseViewModel blacklist; + + public List getBlacklist() { + return blacklist; + } + + public void setBlacklist(List blacklist) { + this.blacklist = blacklist; + } +} diff --git a/app/src/main/java/com/aoleyun/sn/bean/BluetoothType.java b/app/src/main/java/com/aoleyun/sn/bean/BluetoothType.java new file mode 100644 index 0000000..bf258f8 --- /dev/null +++ b/app/src/main/java/com/aoleyun/sn/bean/BluetoothType.java @@ -0,0 +1,53 @@ +package com.aoleyun.sn.bean; + +import java.io.Serializable; + +public class BluetoothType implements Serializable { + private static final long serialVersionUID = -1105070316766010023L; + + int headset; + int sound; + int mobile; + int computer; + int keyboard; + + public int getHeadset() { + return headset; + } + + public void setHeadset(int headset) { + this.headset = headset; + } + + public int getSound() { + return sound; + } + + public void setSound(int sound) { + this.sound = sound; + } + + public int getMobile() { + return mobile; + } + + public void setMobile(int mobile) { + this.mobile = mobile; + } + + public int getComputer() { + return computer; + } + + public void setComputer(int computer) { + this.computer = computer; + } + + public int getKeyboard() { + return keyboard; + } + + public void setKeyboard(int keyboard) { + this.keyboard = keyboard; + } +} diff --git a/app/src/main/java/com/aoleyun/sn/comm/CommonConfig.java b/app/src/main/java/com/aoleyun/sn/comm/CommonConfig.java index 0a54a27..77d686e 100644 --- a/app/src/main/java/com/aoleyun/sn/comm/CommonConfig.java +++ b/app/src/main/java/com/aoleyun/sn/comm/CommonConfig.java @@ -112,7 +112,8 @@ public class CommonConfig { public final static String AOLE_ACTION_NETWORK_DISALLOW = "aole_network_disallow"; /*允许联网应用 G10P*/ public final static String AOLE_ACTION_NETWORK_ALLOW = "aole_network_allow"; - + /*全局黑名单*/ + public static final String AOLE_APP_WEB_BLACK_LIST = "app_web_black_list"; /*存储卡管控*/ public final static String AOLE_ACTION_SDCARD_FORBID_ON = "aole_sdcard_forbid_on"; @@ -135,6 +136,18 @@ public class CommonConfig { public final static String AOLE_ACTION_BT_FORBID_ON = "aole_bt_forbid_on"; /*蓝牙音频开关*/ public final static String AOLE_ACTION_BHTVIDEO_FORBID_ON = "aole_bhtvideo_forbid_on"; + /*控制设备连接蓝牙类型*/ + public final static String AOLE_ACTION_BT_DEVICE_TYPE = "aole_bt_device_type"; + /*蓝牙耳机*/ + public final static String AOLE_BT_HEADSET_KEY = "aole_bt_headset_on"; + /*音箱*/ + public final static String AOLE_BT_BOX_KEY = "aole_bt_box_on"; + /*手机*/ + public final static String AOLE_BT_PHONE_KEY = "aole_bt_phone_on"; + /*计算机*/ + public final static String AOLE_BT_COMPUTER_KEY = "aole_bt_computer_on"; + /*鼠标键盘*/ + public final static String AOLE_BT_KEYBOARD_KEY = "aole_bt_keyboard_on" ; /*电话白名单开关*/ public final static String AOLE_ACTION_WHITE_LIST_ON = "aole_white_list_on"; diff --git a/app/src/main/java/com/aoleyun/sn/comm/PackageNames.java b/app/src/main/java/com/aoleyun/sn/comm/PackageNames.java index a82c8a0..51026b6 100644 --- a/app/src/main/java/com/aoleyun/sn/comm/PackageNames.java +++ b/app/src/main/java/com/aoleyun/sn/comm/PackageNames.java @@ -16,7 +16,7 @@ public class PackageNames { public static final String NOTIFICATIONS = "com.aoleyun.info"; public static final String BROWSER = "com.aoleyun.browser"; public static final String AILOG = "com.aoleyun.ailog"; - public static final String APP_STORE_BOOTRECEIVER = "com.aoleyun.appstore.receiver.BootReceiver"; +// public static final String APP_STORE_BOOTRECEIVER = "com.aoleyun.appstore.receiver.BootReceiver"; public static final String LEARNING_DESKTOP = "com.aoleyunos.dop2"; public static final String YIXUEPAI_DESKTOP = "com.ygyb.yischool"; diff --git a/app/src/main/java/com/aoleyun/sn/network/NetInterfaceManager.java b/app/src/main/java/com/aoleyun/sn/network/NetInterfaceManager.java index 79c7479..8eb2736 100644 --- a/app/src/main/java/com/aoleyun/sn/network/NetInterfaceManager.java +++ b/app/src/main/java/com/aoleyun/sn/network/NetInterfaceManager.java @@ -35,6 +35,7 @@ import com.aoleyun.sn.bean.Appground; import com.aoleyun.sn.bean.BaseResponse; import com.aoleyun.sn.bean.Batch; import com.aoleyun.sn.bean.BatteryInfo; +import com.aoleyun.sn.bean.BlacklistBean; import com.aoleyun.sn.bean.BrowserBookmarks; import com.aoleyun.sn.bean.BrowserData; import com.aoleyun.sn.bean.CustomROMApp; @@ -67,6 +68,7 @@ import com.aoleyun.sn.manager.ConnectMode; import com.aoleyun.sn.network.api.GetWhoisApi; import com.aoleyun.sn.network.api.aolelearn.ExclusiveAdminAppApi; import com.aoleyun.sn.network.api.get.AppSettingApi; +import com.aoleyun.sn.network.api.get.BlackListApi; import com.aoleyun.sn.network.api.get.CheckTestUpdateApi; import com.aoleyun.sn.network.api.get.CloudLessonApi; import com.aoleyun.sn.network.api.get.CloudLessonAppApi; @@ -743,6 +745,12 @@ public class NetInterfaceManager { .observeOn(AndroidSchedulers.mainThread()); } + public Observable> getBlackListObservable() { + return mRetrofit.create(BlackListApi.class) + .getBlackList(Utils.getSerial(mContext)) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()); + } /* * @@ -863,7 +871,7 @@ public class NetInterfaceManager { void onComplete(); } - synchronized public void checkAoleyunUpdate(boolean refresh, BehaviorSubject lifecycle, onCompleteCallback callback) { + public void checkAoleyunUpdate(boolean refresh, BehaviorSubject lifecycle, onCompleteCallback callback) { ConnectMode connectMode = ConnectMode.ONE_HOUR; if (refresh) { connectMode = ConnectMode.DEFAULT; @@ -897,7 +905,7 @@ public class NetInterfaceManager { * @param lifecycle * @param callback */ - synchronized public void checkAoleyunUpdate(BehaviorSubject lifecycle, onCompleteCallback callback) { + public void checkAoleyunUpdate(BehaviorSubject lifecycle, onCompleteCallback callback) { Observable> infoUpdateObservable = NetInterfaceManager.getInstance() .getUpdateApi().getUpdate(BuildConfig.APPLICATION_ID, JGYUtils.getInstance().checkAppPlatform()); Observable> storeUpdateObservable = NetInterfaceManager.getInstance() @@ -992,7 +1000,7 @@ public class NetInterfaceManager { void onUpdate(List appUpdateInfos); } - synchronized public void checkAoleyunUpdate(BehaviorSubject lifecycle, UpdateCallback callback) { + public void checkAoleyunUpdate(BehaviorSubject lifecycle, UpdateCallback callback) { Observable> infoUpdateObservable = NetInterfaceManager.getInstance() .getUpdateApi().getUpdate(BuildConfig.APPLICATION_ID, JGYUtils.getInstance().checkAppPlatform()); Observable> storeUpdateObservable = NetInterfaceManager.getInstance() @@ -1166,7 +1174,7 @@ public class NetInterfaceManager { } public void getForceDownload(boolean refresh, BehaviorSubject lifecycle, onCompleteCallback callback) { - ConnectMode connectMode = ConnectMode.ONE_MINUTE; + ConnectMode connectMode = ConnectMode.DEFAULT; if (refresh) { connectMode = ConnectMode.DEFAULT; } @@ -1722,9 +1730,9 @@ public class NetInterfaceManager { } public void getAppAutoStartUpdateAndNet(boolean refresh, BehaviorSubject lifecycle, onCompleteCallback callback) { - ConnectMode connectMode = ConnectMode.ONE_HOUR; + ConnectMode connectMode = ConnectMode.DEFAULT; if (refresh) { - connectMode = ConnectMode.ONE_MINUTE; + connectMode = ConnectMode.DEFAULT; } if (ConnectManager.getInstance().isNeedConnect(UrlAddress.NET_AND_LAUNCH_API, connectMode)) { getAppAutoStartUpdateAndNet(lifecycle, callback); @@ -2225,6 +2233,12 @@ public class NetInterfaceManager { if (TextUtils.isEmpty(default_launcher)) { if (JGYUtils.getInstance().checkAppPlatform() == JGYUtils.YXPD1Platform) { JGYUtils.getInstance().setDop7DefaultDesktop(); + } else if (JGYUtils.getInstance().checkAppPlatform() == JGYUtils.G11Platform) { + JGYUtils.getInstance().setJXWDefaultDesktop(); +// } else if (JGYUtils.getInstance().checkAppPlatform() == JGYUtils.ZhanruiPlatform) { +// JGYUtils.getInstance().setJXWDefaultDesktop(); + } else if (JGYUtils.getInstance().checkAppPlatform() == JGYUtils.G11Platform) { + JGYUtils.getInstance().setAiuduDefaultDesktop(); } else { JGYUtils.getInstance().setDefaultDesktop(); } @@ -3685,8 +3699,7 @@ public class NetInterfaceManager { } public void getAppAutoStartUpdateAndNet(List appListInfos) { - NetInterfaceManager.getInstance() - .getAppAutoStartUpdateAndNetObservable() + getAppAutoStartUpdateAndNetObservable() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer() { @@ -3719,8 +3732,7 @@ public class NetInterfaceManager { } public void getNetAndLaunchSetting() { - NetInterfaceManager.getInstance() - .getAppAutoStartUpdateAndNetObservable() + getAppAutoStartUpdateAndNetObservable() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer() { @@ -4334,4 +4346,66 @@ public class NetInterfaceManager { } }; } + + public void getBlackList(BehaviorSubject lifecycle, onCompleteCallback callback) { + NetInterfaceManager.getInstance().getBlackListObservable() + .compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY)) + .subscribe(getBlackListObserver(callback)); + } + + public void getBlackList(onCompleteCallback callback) { + NetInterfaceManager.getInstance().getBlackListObservable() + .subscribe(getBlackListObserver(callback)); + } + + public void getBlackList() { + NetInterfaceManager.getInstance().getBlackListObservable() + .subscribe(getBlackListObserver(null)); + } + + public Observer> getBlackListObserver(onCompleteCallback callback) { + return new Observer>() { + @Override + public void onSubscribe(@NonNull Disposable d) { + Log.e("getBlackList", "onSubscribe: "); + } + + @Override + public void onNext(@NonNull BaseResponse blacklistBeanBaseResponse) { + Log.e("getBlackList", "onNext: " + blacklistBeanBaseResponse); + if (blacklistBeanBaseResponse.code == 200) { + BlacklistBean blacklistBean = blacklistBeanBaseResponse.data; + if (blacklistBean == null) { + Settings.System.putString(mContext.getContentResolver(), CommonConfig.AOLE_APP_WEB_BLACK_LIST, ""); + } else { + List strings = blacklistBean.getBlacklist(); + if (strings == null || strings.isEmpty()) { + Settings.System.putString(mContext.getContentResolver(), CommonConfig.AOLE_APP_WEB_BLACK_LIST, ""); + } else { + Settings.System.putString(mContext.getContentResolver(), CommonConfig.AOLE_APP_WEB_BLACK_LIST, String.join(",", strings)); + } + } + } else { + Settings.System.putString(mContext.getContentResolver(), CommonConfig.AOLE_APP_WEB_BLACK_LIST, ""); + } + + } + + @Override + public void onError(@NonNull Throwable e) { + Log.e("getBlackList", "onError: " + e.getMessage()); + onComplete(); + } + + @Override + public void onComplete() { + Log.e("getBlackList", "onComplete: "); + if (callback != null) { + callback.onComplete(); + } + } + }; + } + + } diff --git a/app/src/main/java/com/aoleyun/sn/network/UrlAddress.java b/app/src/main/java/com/aoleyun/sn/network/UrlAddress.java index 21a6e11..183be69 100644 --- a/app/src/main/java/com/aoleyun/sn/network/UrlAddress.java +++ b/app/src/main/java/com/aoleyun/sn/network/UrlAddress.java @@ -106,6 +106,8 @@ public class UrlAddress { public static final String GET_POWEROFF_TIME = "And/getTimedShutdown"; /*获取管控APP设置*/ public static final String APP_SETTING = "android/sn-control/app-setting"; + /*获取设备批次全局黑名单*/ + public static final String BLACKLIST = "android/common/blacklist"; /** * 浏览器策略 diff --git a/app/src/main/java/com/aoleyun/sn/network/api/get/BlackListApi.java b/app/src/main/java/com/aoleyun/sn/network/api/get/BlackListApi.java new file mode 100644 index 0000000..a43ba3d --- /dev/null +++ b/app/src/main/java/com/aoleyun/sn/network/api/get/BlackListApi.java @@ -0,0 +1,16 @@ +package com.aoleyun.sn.network.api.get; + +import com.aoleyun.sn.bean.BaseResponse; +import com.aoleyun.sn.bean.BlacklistBean; +import com.aoleyun.sn.network.UrlAddress; + +import io.reactivex.rxjava3.core.Observable; +import retrofit2.http.GET; +import retrofit2.http.Query; + +public interface BlackListApi { + @GET(UrlAddress.BLACKLIST) + Observable> getBlackList( + @Query("sn") String sn + ); +} diff --git a/app/src/main/java/com/aoleyun/sn/push/PushManager.java b/app/src/main/java/com/aoleyun/sn/push/PushManager.java index 94c6b8b..c5ad497 100644 --- a/app/src/main/java/com/aoleyun/sn/push/PushManager.java +++ b/app/src/main/java/com/aoleyun/sn/push/PushManager.java @@ -248,6 +248,10 @@ public class PushManager { /*绑定设备*/ private static final String BIND_DEVICE = "71"; + /*打开应用*/ + private static final String OPEN_APK = "73"; + /*全局黑名单*/ + private static final String GLOBAL_BALCK_LIST = "74"; public void setPushContent(String title, String extras) { @@ -646,6 +650,12 @@ public class PushManager { case BIND_DEVICE: bindService(extras); break; + case OPEN_APK: + openApk(extras); + break; + case GLOBAL_BALCK_LIST: + NetInterfaceManager.getInstance().getBlackList(); + break; default: } } @@ -874,7 +884,7 @@ public class PushManager { String allow = jSONObject.get("not").getAsString(); HashSet disallowApp = new HashSet<>(Arrays.asList(disallow.split(","))); HashSet allowApp = new HashSet<>(Arrays.asList(allow.split(","))); - JGYUtils.setAppNetwork(mContext, disallowApp, allowApp); + JGYUtils.getInstance().setAppNetwork(mContext, disallowApp, allowApp); } private void settingPowerOn(String s) { @@ -1323,9 +1333,9 @@ public class PushManager { pkgs.remove(pkg); Log.e(TAG, "orderDeleteApp: pkgs = " + pkgs); mMMKV.encode(DEBUG_APP_LIST, pkgs); - if (ApkUtils.isSystemApp(mContext,pkg)){ + if (ApkUtils.isSystemApp(mContext, pkg)) { JGYUtils.getInstance().hideApp(pkg); - }else { + } else { ApkUtils.UninstallAPP(mContext, pkg); } } @@ -1490,4 +1500,10 @@ public class PushManager { intent.setPackage("com.teclast.zyos"); mContext.sendBroadcast(intent); } + + private void openApk(String extras) { + JsonObject jsonObject = GsonUtils.getJsonObject(extras); + String app_package = jsonObject.get("app_package").getAsString(); + ApkUtils.openPackage(mContext, app_package); + } } diff --git a/app/src/main/java/com/aoleyun/sn/receiver/BootReceiver.java b/app/src/main/java/com/aoleyun/sn/receiver/BootReceiver.java index aef356a..24dd341 100644 --- a/app/src/main/java/com/aoleyun/sn/receiver/BootReceiver.java +++ b/app/src/main/java/com/aoleyun/sn/receiver/BootReceiver.java @@ -22,7 +22,7 @@ import io.reactivex.rxjava3.core.Observer; import io.reactivex.rxjava3.disposables.Disposable; public class BootReceiver extends BroadcastReceiver { - private static String TAG = BootReceiver.class.getSimpleName() + ":myappstore"; + private static String TAG = BootReceiver.class.getSimpleName() + ":aoleyunsn"; public static final String BOOT_COMPLETED = "aoleyun.intent.action.BOOT_COMPLETED"; static { diff --git a/app/src/main/java/com/aoleyun/sn/receiver/NewAppReceiver.java b/app/src/main/java/com/aoleyun/sn/receiver/NewAppReceiver.java index 3d736ce..65aac1a 100644 --- a/app/src/main/java/com/aoleyun/sn/receiver/NewAppReceiver.java +++ b/app/src/main/java/com/aoleyun/sn/receiver/NewAppReceiver.java @@ -103,7 +103,8 @@ public class NewAppReceiver extends BroadcastReceiver { @Override public void onNext(@NonNull String s) { Log.e("sendAppInfo", "onNext: " + s); - JGYUtils.getInstance().checkForceDownload(); +// JGYUtils.getInstance().checkForceDownload(); + NetInterfaceManager.getInstance().getForceDownload(); JGYUtils.getInstance().updateNetworkWhiteList(); NetInterfaceManager.getInstance().getAppLimit(); NetInterfaceManager.getInstance().getDefaultDesktop(); diff --git a/app/src/main/java/com/aoleyun/sn/service/GuardService.java b/app/src/main/java/com/aoleyun/sn/service/GuardService.java index bca4024..2184687 100644 --- a/app/src/main/java/com/aoleyun/sn/service/GuardService.java +++ b/app/src/main/java/com/aoleyun/sn/service/GuardService.java @@ -297,12 +297,13 @@ public class GuardService extends Service { /*在8.0以上 除了开机广播其他广播基本上没有用 *当静默安装升级时,app不会被唤醒,只有通过显示广播唤醒 * */ - Intent intent1 = new Intent(BootReceiver.BOOT_COMPLETED); - intent1.setComponent(new ComponentName(PackageNames.APPSTORE, PackageNames.APP_STORE_BOOTRECEIVER)); - // 携带数据 - //intent1.putExtra("test", "我是来测 A 应用的Android 8.0 系统静态广播的测试数据"); - // 启动发送广播 - sendBroadcast(intent1); +// Intent intent1 = new Intent(BootReceiver.BOOT_COMPLETED); +// intent1.setComponent(new ComponentName(PackageNames.APPSTORE, PackageNames.APP_STORE_BOOTRECEIVER)); +// // 携带数据 +// //intent1.putExtra("test", "我是来测 A 应用的Android 8.0 系统静态广播的测试数据"); +// // 启动发送广播 +// sendBroadcast(intent1); + JGYUtils.startServices(GuardService.this); if (JGYUtils.getInstance().checkAppPlatform() == JGYUtils.ZhanruiPlatform) { int setting_statusbar = Settings.System.getInt(context.getContentResolver(), CommonConfig.AOLE_ACTION_HIDE_STATUS_BAR, 0); @@ -330,7 +331,7 @@ public class GuardService extends Service { long time = System.currentTimeMillis(); getLockState("1", String.valueOf(time)); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - JGYUtils.getInstance().wakeUpAoleyunAPP(); +// JGYUtils.getInstance().wakeUpAoleyunAPP(); JGYUtils.getInstance().deleteScreenshots(); } // sendScreenStatus(2); diff --git a/app/src/main/java/com/aoleyun/sn/service/main/MainSContact.java b/app/src/main/java/com/aoleyun/sn/service/main/MainSContact.java index cfa866a..c82c418 100644 --- a/app/src/main/java/com/aoleyun/sn/service/main/MainSContact.java +++ b/app/src/main/java/com/aoleyun/sn/service/main/MainSContact.java @@ -87,8 +87,11 @@ public class MainSContact { void getEbagCode(); /*获取学习应用*/ void getExclusiveAdminApp(); + /*获取全局黑名单*/ + void getBlackList(); /*获取wifi密码*/ void getWiFiPasswd(); + } public interface MainView extends BaseView { @@ -166,6 +169,8 @@ public class MainSContact { /*获取学习应用*/ void getExclusiveAdminAppFinish(); /*获取wifi密码结束*/ + void getBlackListFinish(); + /*获取wifi密码结束*/ void setWiFiPasswd(); } diff --git a/app/src/main/java/com/aoleyun/sn/service/main/MainSPresenter.java b/app/src/main/java/com/aoleyun/sn/service/main/MainSPresenter.java index ad3a3a5..2ac1b58 100644 --- a/app/src/main/java/com/aoleyun/sn/service/main/MainSPresenter.java +++ b/app/src/main/java/com/aoleyun/sn/service/main/MainSPresenter.java @@ -11,6 +11,7 @@ import com.alibaba.sdk.android.push.CommonCallback; import com.alibaba.sdk.android.push.noonesdk.PushServiceFactory; import com.aoleyun.sn.bean.AdminAppInfo; import com.aoleyun.sn.bean.BaseResponse; +import com.aoleyun.sn.bean.BlacklistBean; import com.aoleyun.sn.bean.StudentsInfo; import com.aoleyun.sn.comm.CommonConfig; import com.aoleyun.sn.comm.JGYActions; @@ -584,12 +585,12 @@ public class MainSPresenter implements MainSContact.Presenter { .subscribe(new Observer>>() { @Override public void onSubscribe(@NonNull Disposable d) { - Log.e("getAdminApp", "onSubscribe: "); + Log.e("getExclusiveAdminApp", "onSubscribe: "); } @Override public void onNext(@NonNull BaseResponse> listBaseResponse) { - Log.e("getAdminApp", "onNext: " + listBaseResponse); + Log.e("getExclusiveAdminApp", "onNext: " + listBaseResponse); if (listBaseResponse.code == 200) { List adminAppInfos = listBaseResponse.data; JGYUtils.getInstance().installAdminApp(adminAppInfos); @@ -598,18 +599,28 @@ public class MainSPresenter implements MainSContact.Presenter { @Override public void onError(@NonNull Throwable e) { - Log.e("getAdminApp", "onError: " + e.getMessage()); + Log.e("getExclusiveAdminApp", "onError: " + e.getMessage()); onComplete(); } @Override public void onComplete() { - Log.e("getAdminApp", "onComplete: "); + Log.e("getExclusiveAdminApp", "onComplete: "); mView.getExclusiveAdminAppFinish(); } }); } + @Override + public void getBlackList() { + NetInterfaceManager.getInstance().getBlackList(getLifecycle(), new NetInterfaceManager.onCompleteCallback() { + @Override + public void onComplete() { + mView.getBlackListFinish(); + } + }); + } + @Override public void getWiFiPasswd() { NetInterfaceManager.getInstance() @@ -620,4 +631,6 @@ public class MainSPresenter implements MainSContact.Presenter { } }); } + + } diff --git a/app/src/main/java/com/aoleyun/sn/service/main/MainService.java b/app/src/main/java/com/aoleyun/sn/service/main/MainService.java index af7285a..ce2220f 100644 --- a/app/src/main/java/com/aoleyun/sn/service/main/MainService.java +++ b/app/src/main/java/com/aoleyun/sn/service/main/MainService.java @@ -186,6 +186,49 @@ public class MainService extends Service implements MainSContact.MainView, Netwo }); } + private static KillAppListener killAppListener; + + public interface KillAppListener { + void killApp(String action); + } + + private final ObservableOnSubscribe killSubscribe = new ObservableOnSubscribe() { + @Override + public void subscribe(ObservableEmitter emitter) throws Exception { + killAppListener = new KillAppListener() { + @Override + public void killApp(String action) { + emitter.onNext(action); + } + }; + } + }; + + private Observer killObserver = new Observer() { + @Override + public void onSubscribe(Disposable d) { + Log.e("killObserver", "onSubscribe: "); + } + + @Override + public void onNext(String action) { + Log.e("killObserver", "onNext: " + action); + JGYUtils.getInstance().killPackage(PackageNames.APPSTORE); + JGYUtils.getInstance().killPackage(PackageNames.NOTIFICATIONS); + JGYUtils.getInstance().killPackage(PackageNames.AILOG); + } + + @Override + public void onError(Throwable e) { + Log.e("killObserver", "onError: " + e.getMessage()); + } + + @Override + public void onComplete() { + Log.e("killObserver", "onComplete: "); + } + }; + private final BehaviorSubject lifecycleSubject = BehaviorSubject.create(); @Override @@ -322,6 +365,7 @@ public class MainService extends Service implements MainSContact.MainView, Netwo checkAliyunPushStatus(); break; case Intent.ACTION_SCREEN_OFF: + killAppListener.killApp(action); break; default: break; @@ -329,6 +373,7 @@ public class MainService extends Service implements MainSContact.MainView, Netwo } } + private void checkAliyunPushStatus() { CloudPushService mPushService = PushServiceFactory.getCloudPushService(); mPushService.checkPushChannelStatus(new CommonCallback() { @@ -505,6 +550,10 @@ public class MainService extends Service implements MainSContact.MainView, Netwo } mMMKV.encode(CommonConfig.DEVICES_FRIST_START, 1); + Observable.create(killSubscribe) + .throttleLast(30, TimeUnit.SECONDS) +// .throttleLast(3, TimeUnit.SECONDS) + .subscribe(killObserver); } @Override @@ -911,7 +960,7 @@ public class MainService extends Service implements MainSContact.MainView, Netwo } } - synchronized private void setFloatingWindow() { + private void setFloatingWindow() { Log.e(TAG, "setFloatingWindow: "); long nowTime = System.currentTimeMillis(); mTopApp.open(nowTime); @@ -1033,7 +1082,7 @@ public class MainService extends Service implements MainSContact.MainView, Netwo * @param pkg 包名 */ @SuppressLint("NewApi") - synchronized private void installApkByPackage(String filePath, String pkg) { + private void installApkByPackage(String filePath, String pkg) { String oldListString = Settings.System.getString(getContentResolver(), CommonConfig.AOLE_ACTION_APP_FORBID); HashSet packageList = new HashSet<>(Arrays.asList(oldListString.split(","))); if (!packageList.contains(pkg)) { @@ -1266,17 +1315,24 @@ public class MainService extends Service implements MainSContact.MainView, Netwo @Override public void getEbagCodeFinish(boolean activation) { if (activation) { - mPresenter.getExclusiveAdminApp(); +// mPresenter.getExclusiveAdminApp(); Log.e(TAG, "getEBagCodeFinish: " + "已激活"); } else { - mPresenter.getWiFiPasswd(); +// mPresenter.getBlackList(); Log.e(TAG, "getEBagCodeFinish: " + "未激活"); } + mPresenter.getBlackList(); } + @Deprecated @Override public void getExclusiveAdminAppFinish() { Log.e(TAG, "getAdminAppFinish: "); + } + + @Override + public void getBlackListFinish() { + Log.e(TAG, "getBlackListFinish: "); mPresenter.getWiFiPasswd(); } @@ -1284,4 +1340,6 @@ public class MainService extends Service implements MainSContact.MainView, Netwo public void setWiFiPasswd() { Log.e(TAG, "setWiFiPasswd: "); } + + } diff --git a/app/src/main/java/com/aoleyun/sn/utils/ApkUtils.java b/app/src/main/java/com/aoleyun/sn/utils/ApkUtils.java index c9fc7f8..a74de8c 100644 --- a/app/src/main/java/com/aoleyun/sn/utils/ApkUtils.java +++ b/app/src/main/java/com/aoleyun/sn/utils/ApkUtils.java @@ -82,6 +82,7 @@ public class ApkUtils { this.add("com.qunyu.dividedroad"); this.add("com.ygyb.yischool"); this.add("com.yxxmk.uiui"); + this.add("com.yxxmk.uiuios"); this.add("com.uiui.floatwindow"); this.add("com.uiuipad.find"); this.add("com.uiuipad.appstore"); @@ -94,6 +95,9 @@ public class ApkUtils { this.add("com.ttstd.ttutils"); this.add("com.ttstd.qin"); this.add("com.uiuios.ailog"); + + this.add("com.android.documentsui"); + this.add("com.android.settings"); }}; /** @@ -143,7 +147,7 @@ public class ApkUtils { this.add("com.verizon.remoteSimlock"); this.add("com.android.protips"); this.add("com.android.theme.icon_pack.rounded.systemui"); - this.add("com.android.documentsui"); +// this.add("com.android.documentsui"); this.add("com.android.externalstorage"); this.add("com.mediatek.ygps"); this.add("com.mediatek.simprocessor"); @@ -246,7 +250,7 @@ public class ApkUtils { this.add("com.android.theme.icon.squircle"); this.add("com.android.storagemanager"); this.add("com.android.bookmarkprovider"); - this.add("com.android.settings"); +// this.add("com.android.settings"); this.add("com.google.android.inputmethod.pinyin"); this.add("com.android.theme.icon_pack.filled.launcher"); this.add("com.android.networkstack.permissionconfig"); @@ -422,6 +426,16 @@ public class ApkUtils { }}; + public static final Set yixuepaiApp = new HashSet() {{ + this.add("com.qi.airoom"); + this.add("com.qi.AiStudyRoom"); + this.add("com.eusoft.eudic"); + this.add("com.fenbi.android.solar"); + this.add("com.eduyun.app.factory.ykt"); + this.add("com.yaerxing.fkst"); + this.add("com.jxw.usagedate"); + }}; + /** * 学习桌面和九学王app @@ -481,7 +495,14 @@ public class ApkUtils { this.add("com.jxw.souti"); this.add("com.jxw.xdfzq"); - this.add("com.uiui.zysn"); + }}; + + public static final Set G11Pkgs = new HashSet() {{ + /*G11 平台*/ + this.add("com.lhcx.drawing"); + this.add("com.dingwei.htbtool"); + this.add("com.tencent.wemeet.app"); + this.add("net.xmind.doughnut"); }}; /** @@ -1406,6 +1427,7 @@ public class ApkUtils { this.add("com.alarmclock.uiui"); this.add("com.uiui.speed"); this.add("com.books.wisdom"); + }}; @@ -1429,10 +1451,14 @@ public class ApkUtils { //排除所有系统应用,不显示 if (isSystemApp(context, packageName)) { if (!AoleyunOSApp.contains(packageName) + && !aoleyunAPP.contains(packageName) && !aihuaApp.contains(packageName) && !dongwa.contains(packageName) + && !yixuepaiApp.contains(packageName) + && !mJxwApp.contains(packageName) && !allPkgSet.contains(packageName) ) { + Log.e(TAG, "getRunningAppInfo: continue = " + packageName); continue; } } else { diff --git a/app/src/main/java/com/aoleyun/sn/utils/JGYUtils.java b/app/src/main/java/com/aoleyun/sn/utils/JGYUtils.java index 023224c..8f6521b 100644 --- a/app/src/main/java/com/aoleyun/sn/utils/JGYUtils.java +++ b/app/src/main/java/com/aoleyun/sn/utils/JGYUtils.java @@ -57,7 +57,6 @@ import com.aoleyun.sn.network.NetInterfaceManager; import com.aoleyun.sn.network.UrlAddress; import com.aoleyun.sn.receiver.BootReceiver; import com.aoleyun.sn.service.GuardService; -import com.aoleyun.sn.service.LogcatService; import com.aoleyun.sn.service.StepService; import com.aoleyun.sn.service.main.MainService; import com.blankj.utilcode.util.FileUtils; @@ -77,7 +76,6 @@ import com.tencent.mmkv.MMKV; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; -import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Constructor; import java.lang.reflect.Field; @@ -87,9 +85,6 @@ import java.net.Inet4Address; import java.net.InetAddress; import java.net.NetworkInterface; import java.net.SocketException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; import java.util.ArrayList; import java.util.Arrays; import java.util.Enumeration; @@ -534,8 +529,7 @@ public class JGYUtils { * * @param netAndLaunchBean */ - @SuppressLint("NewApi") - synchronized public void setNetAndlaunch(NetAndLaunchBean netAndLaunchBean, List appListInfos) { + public void setNetAndlaunch(NetAndLaunchBean netAndLaunchBean, List appListInfos) { Log.e(TAG, "setNetAndlaunch: " + "应用联网管控: " + netAndLaunchBean.getData().toString()); Log.e(TAG, "setNetAndlaunch: "); HashSet autoLaunchApp = new HashSet<>();//开机自启app @@ -663,8 +657,7 @@ public class JGYUtils { } } - @SuppressLint("NewApi") - synchronized public void setNetAndlaunch(NetAndLaunchBean netAndLaunchBean) { + public void setNetAndlaunch(NetAndLaunchBean netAndLaunchBean) { Log.e(TAG, "setNetAndlaunch: " + "应用联网管控: " + netAndLaunchBean.getData().toString()); Log.e(TAG, "setNetAndlaunch: "); HashSet autoLaunchApp = new HashSet<>();//开机自启app @@ -772,31 +765,33 @@ public class JGYUtils { } } - @SuppressLint("NewApi") - synchronized public static void setAppNetwork(Context context, HashSet blackList, HashSet whiteList) { + public void setAppNetwork(Context context, HashSet blackList, HashSet whiteList) { ContentResolver contentResolver = context.getContentResolver(); - Log.e(TAG, "setAppNetwork: " + "设置应用联网管控" + blackList); + Log.e(TAG, "setAppNetwork: " + "设置应用联网管控 blackList =" + blackList); + Log.e(TAG, "setAppNetwork: " + "设置应用联网管控 whiteList =" + whiteList); if (!MTK11Tag.equals(JGYUtils.getInstance().getAppPlatform())) { if (blackList == null || blackList.size() == 0) { - SPUtils.put(context, CommonConfig.AOLE_ACTION_NETWORK_DISALLOW, ""); +// SPUtils.put(context, CommonConfig.AOLE_ACTION_NETWORK_DISALLOW, ""); Settings.System.putString(contentResolver, CommonConfig.AOLE_ACTION_NETWORK_DISALLOW, ""); } else { String net_not = String.join(",", blackList); - SPUtils.put(context, CommonConfig.AOLE_ACTION_NETWORK_DISALLOW, net_not); +// SPUtils.put(context, CommonConfig.AOLE_ACTION_NETWORK_DISALLOW, net_not); Settings.System.putString(contentResolver, CommonConfig.AOLE_ACTION_NETWORK_DISALLOW, net_not); Log.e(TAG, "setAppNetwork: " + net_not); } } + mMMKV.encode(CommonConfig.AOLE_ACTION_NETWORK_ALLOW, whiteList); if (whiteList == null || whiteList.size() == 0) { - SPUtils.put(context, CommonConfig.AOLE_ACTION_NETWORK_ALLOW, ""); -// Settings.System.putString(contentResolver, CommonConfig.AOLE_ACTION_NETWORK_ALLOW, ""); + Settings.System.putString(contentResolver, CommonConfig.AOLE_ACTION_NETWORK_ALLOW, ""); } else { + // TODO: 2024/6/28 暂时所有的都为白名单 + Settings.System.putString(contentResolver, CommonConfig.AOLE_ACTION_NETWORK_ALLOW, ""); + String net_not = String.join(",", whiteList); - SPUtils.put(context, CommonConfig.AOLE_ACTION_NETWORK_ALLOW, net_not); Log.e(TAG, "setAppNetwork: net_not = " + net_not); - List filterList = whiteList.stream().filter(s -> !ApkUtils.isAvailable(context, s)).collect(Collectors.toList()); + List filterList = whiteList.stream().filter(s -> ApkUtils.isAvailable(context, s)).collect(Collectors.toList()); if (filterList.size() == 0) { // Settings.System.putString(contentResolver, CommonConfig.AOLE_ACTION_NETWORK_ALLOW, ""); } else { @@ -815,13 +810,13 @@ public class JGYUtils { } public void updateNetworkWhiteList() { - String whiteString = (String) SPUtils.get(mContext, CommonConfig.AOLE_ACTION_NETWORK_ALLOW, ""); - if (TextUtils.isEmpty(whiteString)) { + Set pkgs = mMMKV.decodeStringSet(CommonConfig.AOLE_ACTION_NETWORK_ALLOW, new HashSet<>()); + if (pkgs.isEmpty()) { Log.e(TAG, "updateNetworkWhiteList: allow content is empty"); return; } - List whiteList = new ArrayList<>(Arrays.asList(whiteString.split(","))); - List filterList = whiteList.stream().filter(s -> !ApkUtils.isAvailable(mContext, s)).collect(Collectors.toList()); + List whiteList = new ArrayList<>(pkgs); + List filterList = whiteList.stream().filter(s -> ApkUtils.isAvailable(mContext, s)).collect(Collectors.toList()); if (filterList.size() == 0) { // Settings.System.putString(crv, CommonConfig.AOLE_ACTION_NETWORK_ALLOW, ""); } else { @@ -830,8 +825,7 @@ public class JGYUtils { Log.e(TAG, "updateNetworkWhiteList: " + filterList); } - @SuppressLint("NewApi") - synchronized public void onBootSendNetwork() { + public void onBootSendNetwork() { if (!MTK11Tag.equals(JGYUtils.getInstance().getAppPlatform())) { String oldBlackListString = (String) SPUtils.get(mContext, CommonConfig.AOLE_ACTION_NETWORK_DISALLOW, ""); HashSet oldBlackListSet = new HashSet<>(Arrays.asList(oldBlackListString.split(","))); @@ -897,7 +891,7 @@ public class JGYUtils { } } - synchronized public void setAppinsideWeb(BaseResponse> response) { + public void setAppinsideWeb(BaseResponse> response) { if (response.code == 200) { List appgrounds = response.data; if (appgrounds != null && appgrounds.size() > 0) { @@ -951,7 +945,7 @@ public class JGYUtils { /** * @param response 黑白名单都可以管控 */ - synchronized public void setNewAppinsideWeb(BaseResponse response) { + public void setNewAppinsideWeb(BaseResponse response) { Log.e(TAG, "setNewAppinsideWeb: " + "应用内部联网管控: " + response); if (response.code == 200) { String jsonString = GsonUtils.toJSONString(response.data); @@ -989,7 +983,7 @@ public class JGYUtils { // public static final String JGY_APPINSIDE_FIRST_WRITE = "JGY_APPINSIDE_FIRST_WRITE"; @SuppressLint("NewApi") - synchronized private void setWhiteApp(List appgrounds) { + private void setWhiteApp(List appgrounds) { //去重 List ttAppgrounds = appgrounds.stream().distinct().collect(Collectors.toList()); List old = getOldWhitelist(); @@ -997,7 +991,7 @@ public class JGYUtils { setWhiteList(ttAppgrounds); } - synchronized private void comparedAppground(List oldAppgrounds, List newAppgrounds) { + private void comparedAppground(List oldAppgrounds, List newAppgrounds) { List addAppgrounds = new ArrayList<>(); List deleteAppgrounds = new ArrayList<>(); List changedAppgrounds = new ArrayList<>(); @@ -1131,7 +1125,7 @@ public class JGYUtils { /** * @param pkg 开启app白名单 */ - synchronized private void addPackage(String pkg) { + private void addPackage(String pkg) { Log.e(TAG, "addPackage: " + pkg); Intent intent26 = new Intent(); intent26.setAction("qch_app_inside_website"); @@ -1144,7 +1138,7 @@ public class JGYUtils { * @param pkg * @param urls 添加app白名单 */ - synchronized private void addToWhitelist(String pkg, String urls) { + private void addToWhitelist(String pkg, String urls) { if (TextUtils.isEmpty(urls)) { Log.e(TAG, "addToWhitelist: " + "urls is NULL"); return; @@ -1169,7 +1163,7 @@ public class JGYUtils { * @param pkg * @param urls 删除某个app 内某个白名单 */ - synchronized private void deleteWhitelistUrl(String pkg, String urls) { + private void deleteWhitelistUrl(String pkg, String urls) { if (TextUtils.isEmpty(urls)) { Log.e(TAG, "addToWhitelist: " + "urls is NULL"); return; @@ -1192,7 +1186,7 @@ public class JGYUtils { /** * @param pkg 开启和关闭白名单管控都需要发送 */ - synchronized private void deleteOtherAppWhitelist(String pkg) { + private void deleteOtherAppWhitelist(String pkg) { Log.e(TAG, "disableAppWhitelist: " + pkg); Intent intent24 = new Intent(); intent24.setAction("qch_app_setDelAppWhitUid"); @@ -1204,7 +1198,7 @@ public class JGYUtils { /** * @param appgrounds 设置黑名单管控 */ - synchronized private void setBlackApp(List appgrounds) { + private void setBlackApp(List appgrounds) { Log.e(TAG, "setBlackApp: " + appgrounds); StringBuilder blackList = new StringBuilder(); StringBuilder packageList = new StringBuilder();//单条管控名单 @@ -1244,7 +1238,7 @@ public class JGYUtils { } } - synchronized private static void sendAllweb(Context context) { + private static void sendAllweb(Context context) { Log.e(TAG, "sendAllweb: "); Intent intent = new Intent("qch_app_website") .setPackage("com.android.settings"); @@ -1252,7 +1246,7 @@ public class JGYUtils { context.sendBroadcast(intent); } - synchronized private static void sendwebUrl(Context context) { + private static void sendwebUrl(Context context) { Log.e(TAG, "sendwebUrl: "); Intent intent = new Intent("qch_app_inside_website") .setPackage("com.android.settings"); @@ -1260,7 +1254,7 @@ public class JGYUtils { context.sendBroadcast(intent); } - synchronized public void SettingSysData(String data) { + public void SettingSysData(String data) { SPUtils.put(mContext, "SystemSettingData", data); if (TextUtils.isEmpty(data)) { Log.e(TAG, "SettingSysData: " + "data is empty"); @@ -1292,11 +1286,16 @@ public class JGYUtils { this.add("com.notepad.uiui"); this.add("com.calendar.uiui"); this.add("com.alarmclock.uiui"); - this.add("com.uiui.videoplayer"); +// this.add("com.uiui.videoplayer"); this.add("com.ygyb.yischool"); this.add("com.books.wisdom"); this.add("com.qi.airoom"); this.add("com.qi.AiStudyRoom"); + this.add("com.eusoft.eudic"); + this.add("com.fenbi.android.solar"); + this.add("com.eduyun.app.factory.ykt"); + this.add("com.yaerxing.fkst"); + this.add("com.jxw.usagedate"); }}; private Set getWhitePkgList() { @@ -1315,6 +1314,9 @@ public class JGYUtils { if ("G23".equals(Build.MODEL)) { pkgSet.addAll(ApkUtils.zhengwu); } + if (JGYUtils.getInstance().checkAppPlatform() == JGYUtils.G11Platform) { + pkgSet.addAll(ApkUtils.G11Pkgs); + } if (JGYUtils.getInstance().checkAppPlatform() == JGYUtils.YXPD1Platform) { pkgSet.add("com.tencent.wemeet.app"); } @@ -1362,19 +1364,20 @@ public class JGYUtils { } public void checkForceDownload() { - String jsonString = cacheHelper.getAsString(UrlAddress.GET_FORCE_INSTALL_LIST); - //为 "" 是已经请求成功的 - if (jsonString == null) { - NetInterfaceManager.getInstance().getForceDownload(); - } else { - Gson gson = new Gson(); - Type listType = new TypeToken>() { - }.getType(); - List forceDownloadData = gson.fromJson(jsonString, listType); - if (forceDownloadData != null) { - JGYUtils.getInstance().forceDownload(forceDownloadData); - } - } +// String jsonString = cacheHelper.getAsString(UrlAddress.GET_FORCE_INSTALL_LIST); +// //为 "" 是已经请求成功的 +// if (jsonString == null) { +// NetInterfaceManager.getInstance().getForceDownload(); +// } else { +// Gson gson = new Gson(); +// Type listType = new TypeToken>() { +// }.getType(); +// List forceDownloadData = gson.fromJson(jsonString, listType); +// if (forceDownloadData != null) { +// JGYUtils.getInstance().forceDownload(forceDownloadData); +// } +// } + NetInterfaceManager.getInstance().getForceDownload(); } @@ -2009,6 +2012,7 @@ public class JGYUtils { public void killPackage(String pkg) { + Log.e(TAG, "killPackage: " + pkg); ActivityManager manager = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE); manager.killBackgroundProcesses(pkg); CmdUtil.execute("am force-stop " + pkg); @@ -2329,12 +2333,13 @@ public class JGYUtils { context.startService(new Intent(context, MainService.class)); context.startService(new Intent(context, StepService.class)); context.startService(new Intent(context, GuardService.class)); - context.startService(new Intent(context, LogcatService.class)); +// context.startService(new Intent(context, LogcatService.class)); } } private String Launcher3 = "com.android.launcher3"; private String Launcher3Class = "com.android.launcher3.Launcher"; + private String Launcher3QuickstepClass = "com.android.launcher3.uioverrides.QuickstepLauncher"; private String AoleyunOs = "com.aoleyun.os"; private String AoleyunOsClass = "com.aoleyun.os.Launcher"; @@ -2407,6 +2412,12 @@ public class JGYUtils { if (TextUtils.isEmpty(pkg)) { if (JGYUtils.getInstance().checkAppPlatform() == JGYUtils.YXPD1Platform) { JGYUtils.getInstance().setDop7DefaultDesktop(); + } else if (JGYUtils.getInstance().checkAppPlatform() == JGYUtils.G11Platform) { + JGYUtils.getInstance().setJXWDefaultDesktop(); +// } else if (JGYUtils.getInstance().checkAppPlatform() == JGYUtils.ZhanruiPlatform) { +// JGYUtils.getInstance().setJXWDefaultDesktop(); + } else if (JGYUtils.getInstance().checkAppPlatform() == JGYUtils.AUDG104Platform) { + JGYUtils.getInstance().setAiuduDefaultDesktop(); } } else { if (pkg.equalsIgnoreCase(desktopPkg)) { @@ -2438,29 +2449,45 @@ public class JGYUtils { * 设置奥乐云桌面为默认 */ public void setDefaultDesktop() { + Log.e(TAG, "setDefaultDesktop: "); setDefaultDesktop(PackageNames.DESKTOP); } public void setYxpDefaultDesktop() { + Log.e(TAG, "setYxpDefaultDesktop: "); setDefaultDesktop(PackageNames.YIXUEPAI_DESKTOP); } public void setDop7DefaultDesktop() { + Log.e(TAG, "setDop7DefaultDesktop: "); setDefaultDesktop("com.aoleyunos.dop7"); } + public void setJXWDefaultDesktop() { + Log.e(TAG, "setJXWDefaultDesktop: "); + setDefaultDesktop("com.jxw.launcher"); + } + + public void setAiuduDefaultDesktop() { + Log.e(TAG, "setAiuduDefaultDesktop: "); +// setDefaultDesktop("com.aoleyun.audos"); +// setLauncher3(); + setDefaultDesktop(Launcher3, Launcher3QuickstepClass); + + } + /** * 设置默认桌面 * * @param pkg */ public void setDefaultDesktop(String pkg) { - Log.e(TAG, "setDefaultDesktop: " + pkg); + Log.e(TAG, "setDefaultDesktop: pkg = " + pkg); if (TextUtils.isEmpty(pkg)) { setLauncher3(); } else { String className = getStartClassName(pkg); - Log.e(TAG, "setDefaultDesktop: " + className); + Log.e(TAG, "setDefaultDesktop: className = " + className); if (TextUtils.isEmpty(className)) { setLauncher3(); } else { @@ -2479,14 +2506,18 @@ public class JGYUtils { } } - private void setLauncher3() { + public void setLauncher3() { if (ApkUtils.isAvailable(mContext, AoleyunOs) || "C2".equals(Build.MODEL)) { setDefaultDesktop(AoleyunOs, AoleyunOsClass); } else if ("Aiud_A8_ag_1095".equals(Build.MODEL)) { setDefaultDesktop(AiUDuOs, AiUDuOsClass); } else { - setDefaultDesktop(Launcher3, Launcher3Class); + if (Build.VERSION.SDK_INT > Build.VERSION_CODES.Q) { + setDefaultDesktop(Launcher3, Launcher3QuickstepClass); + } else { + setDefaultDesktop(Launcher3, Launcher3Class); + } } } @@ -2544,7 +2575,7 @@ public class JGYUtils { } else { //爱华设置,暂时屏蔽 // setDefaultLauncher(mContext, pkg, className); - Log.e(TAG, "setDefaultDesktop: setDefaultLauncher: " + pkg); + Log.e(TAG, "setDefaultDesktop: setDefaultLauncher: pkg = " + pkg); } // String oldDesktop = (String) SPUtils.get(mContext, "default_launcher", ""); // if (Objects.equals(oldDesktop, pkg)) { @@ -2569,10 +2600,42 @@ public class JGYUtils { Log.e(TAG, "setDefaultDesktop: " + pkg + ":" + className); Log.e(TAG, "setDefaultDesktop: " + "persist.sys.launcher.pkgname = " + SystemProperties.get("persist.sys.launcher.pkgname")); Log.e(TAG, "setDefaultDesktop: " + "persist.sys.launcher.classname = " + SystemProperties.get("persist.sys.launcher.classname")); - + Log.e(TAG, "setDefaultDesktop: getDefaultLaunchers = " + getDefaultLaunchers()); setDefaultLauncher(new ComponentName(pkg, className)); } + public Set getDefaultLaunchers() { + Set defaultLaunchers = new HashSet(); + PackageManager packageManager = mContext.getPackageManager(); + Intent intent = new Intent(Intent.ACTION_MAIN); + intent.addCategory(Intent.CATEGORY_HOME); + // 查询所有已安装的桌面应用 + List launcherList = packageManager.queryIntentActivities(intent, + PackageManager.MATCH_DEFAULT_ONLY); + // 获取默认的桌面应用,没有指定默认桌面时返回"android" + ResolveInfo defaultLauncher = packageManager.resolveActivity(intent, + PackageManager.MATCH_DEFAULT_ONLY); + if (launcherList != null && defaultLauncher != null) { + String pkgName = defaultLauncher.activityInfo.packageName; + Log.e("getDefaultLaunchers", "default launcher is : " + pkgName); + // 没有指定默认桌面时返回的是"android",故这里过滤下防止"android"被添加到默认桌面列表中 + for (ResolveInfo info : launcherList) { + Log.e("getDefaultLaunchers", "launcher : " + info.activityInfo.packageName); + if (info.activityInfo.packageName.equals(pkgName)) { + defaultLaunchers.add(pkgName); + } + } + } + // 有多个桌面应用,且目前没有指定默认桌面时,返回所有的桌面应用 + if (defaultLaunchers.isEmpty() && launcherList != null) { + for (ResolveInfo resolveInfo : launcherList) { + defaultLaunchers.add(resolveInfo.activityInfo.packageName); + } + } + Log.e("getDefaultLaunchers", "defaultLaunchers : " + defaultLaunchers); + return defaultLaunchers; + } + public String getMacJson(Context context) { JsonObject jsonObject = new JsonObject(); jsonObject.addProperty("sn", Utils.getSerial(context)); @@ -2800,9 +2863,10 @@ public class JGYUtils { mContext.sendBroadcast(bootIntent); } + @Deprecated public void wakeUpAoleyunAPP() { - wakeUpAppstore(); - wakeUpNotify(); +// wakeUpAppstore(); +// wakeUpNotify(); } public static String getModel() { diff --git a/app/src/main/java/com/aoleyun/sn/utils/SysSettingUtils.java b/app/src/main/java/com/aoleyun/sn/utils/SysSettingUtils.java index 43f5f21..e0bfd8f 100644 --- a/app/src/main/java/com/aoleyun/sn/utils/SysSettingUtils.java +++ b/app/src/main/java/com/aoleyun/sn/utils/SysSettingUtils.java @@ -6,27 +6,29 @@ import android.bluetooth.BluetoothAdapter; import android.content.Context; import android.content.Intent; import android.cube.SuperPower; -import android.os.Build; import android.provider.Settings; import android.text.TextUtils; import android.util.Log; import com.aoleyun.sn.BuildConfig; import com.aoleyun.sn.activity.main.MainActivity; +import com.aoleyun.sn.bean.BluetoothType; import com.aoleyun.sn.bean.SnSetting; import com.aoleyun.sn.comm.CommonConfig; import com.aoleyun.sn.comm.JGYActions; import com.aoleyun.sn.gson.GsonUtils; +import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; +import com.google.gson.reflect.TypeToken; import com.hjq.toast.Toaster; import com.tencent.mmkv.MMKV; +import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List; -import java.util.Objects; public class SysSettingUtils { @@ -348,6 +350,46 @@ public class SysSettingUtils { int setting_bhtvideo = changeNum(jsonObject.get("setting_bhtvideo").getAsInt()); Log.e(TAG, "setBluetooth: setting_bhtvideo = " + setting_bhtvideo); + //蓝牙设备连接类型开关 + int setting_bluetooth_type = changeNum(jsonObject.get("setting_bluetooth_type").getAsInt()); + Log.e(TAG, "setBluetooth: setting_bluetooth_type = " + setting_bluetooth_type); + if (setting_bluetooth_type == 1) { + Settings.System.putString(context.getContentResolver(), CommonConfig.AOLE_ACTION_BT_DEVICE_TYPE, ""); + } else { + String bluetooth_type_control = jsonObject.get("bluetooth_type_control").getAsString(); + Log.e(TAG, "setBluetooth: bluetooth_type_control = " + bluetooth_type_control); + if (TextUtils.isEmpty(bluetooth_type_control)) { + Settings.System.putString(context.getContentResolver(), CommonConfig.AOLE_ACTION_BT_DEVICE_TYPE, ""); + } else { + Gson gson = new Gson(); + Type listType = new TypeToken() { + }.getType(); + BluetoothType bluetoothType = gson.fromJson(bluetooth_type_control, listType); + if (bluetoothType == null) { + Settings.System.putString(context.getContentResolver(), CommonConfig.AOLE_ACTION_BT_DEVICE_TYPE, ""); + } else { + List typeList = new ArrayList<>(); + if (bluetoothType.getHeadset() == 1) { + typeList.add(CommonConfig.AOLE_BT_HEADSET_KEY); + } + if (bluetoothType.getSound() == 1) { + typeList.add(CommonConfig.AOLE_BT_BOX_KEY); + } + if (bluetoothType.getMobile() == 1) { + typeList.add(CommonConfig.AOLE_BT_PHONE_KEY); + } + if (bluetoothType.getComputer() == 1) { + typeList.add(CommonConfig.AOLE_BT_COMPUTER_KEY); + } + if (bluetoothType.getKeyboard() == 1) { + typeList.add(CommonConfig.AOLE_BT_KEYBOARD_KEY); + } + Settings.System.putString(context.getContentResolver(), CommonConfig.AOLE_ACTION_BT_DEVICE_TYPE, String.join(",", typeList)); + } + } + } + + int old_setting_bht = Settings.System.getInt(context.getContentResolver(), CommonConfig.AOLE_ACTION_BHT_FORBID_ON, 1); int old_setting_bluetooth = Settings.System.getInt(context.getContentResolver(), CommonConfig.AOLE_ACTION_BT_FORBID_ON, 1); int old_setting_bhtvideo = mmkv.decodeInt(CommonConfig.AOLE_ACTION_BHTVIDEO_FORBID_ON, 1); @@ -895,6 +937,11 @@ public class SysSettingUtils { Settings.System.putInt(context.getContentResolver(), "qch_app_browser", 0); } + Intent intent = new Intent("BrowserInternetControlKey"); + intent.setPackage("com.aoleyun.browser"); + context.sendBroadcast(intent); + + JsonElement smsCategory = jsonObject.get("setting_sms"); if (smsCategory != null && !smsCategory.isJsonNull()) { int setting_sms = smsCategory.getAsInt(); diff --git a/app/src/main/java/com/aoleyun/sn/utils/WiFiUtils.java b/app/src/main/java/com/aoleyun/sn/utils/WiFiUtils.java index 4cc039f..cd09878 100644 --- a/app/src/main/java/com/aoleyun/sn/utils/WiFiUtils.java +++ b/app/src/main/java/com/aoleyun/sn/utils/WiFiUtils.java @@ -176,7 +176,7 @@ public class WiFiUtils { } - synchronized public static void saveWiFiPasswd(List passwd) { + public static void saveWiFiPasswd(List passwd) { String jsonString = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE).decodeString("WiFiPassword", ""); Log.e(TAG, "saveWiFiPasswd: " + jsonString); Gson gson = new Gson(); @@ -254,7 +254,7 @@ public class WiFiUtils { } - synchronized private static boolean wifiSaved(String ssid) { + private static boolean wifiSaved(String ssid) { // 获取已保存wifi配置链表 List configs = mWifiManager.getConfiguredNetworks(); boolean saved = false;