diff --git a/app/build.gradle b/app/build.gradle
index 0f57d7e..c20cca9 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -29,8 +29,8 @@ android {
defaultConfig {
applicationId "com.aoleyun.sn"
- versionCode 221
- versionName "1.6.0522"
+ versionCode 226
+ versionName "1.6.05263"
//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 6af249d..ff6f07d 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -81,7 +81,7 @@
-
+
diff --git a/app/src/main/java/com/aoleyun/sn/activity/main/MainViewModel.java b/app/src/main/java/com/aoleyun/sn/activity/main/MainViewModel.java
index 54fea3a..05e82e5 100644
--- a/app/src/main/java/com/aoleyun/sn/activity/main/MainViewModel.java
+++ b/app/src/main/java/com/aoleyun/sn/activity/main/MainViewModel.java
@@ -21,6 +21,7 @@ import com.aoleyun.sn.comm.JGYActions;
import com.aoleyun.sn.databinding.ActivityMainBinding;
import com.aoleyun.sn.gson.GsonUtils;
import com.aoleyun.sn.network.NetInterfaceManager;
+import com.aoleyun.sn.network.UrlAddress;
import com.aoleyun.sn.utils.AES.CXAESUtil;
import com.aoleyun.sn.utils.JgyUtils;
import com.aoleyun.sn.utils.Utils;
@@ -82,6 +83,7 @@ public class MainViewModel extends BaseViewModel periods;
+ public int getUse_ctrl() {
+ return use_ctrl;
+ }
+
+ public void setUse_ctrl(int use_ctrl) {
+ this.use_ctrl = use_ctrl;
+ }
+
public List getPeriods() {
return periods;
}
@@ -15,4 +30,10 @@ public class TimeControlData implements Serializable {
public void setPeriods(List periods) {
this.periods = periods;
}
+
+ @NonNull
+ @Override
+ public String toString() {
+ return JsonParser.parseString(new Gson().toJson(this)).getAsJsonObject().toString();
+ }
}
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 085f0cd..98232cf 100644
--- a/app/src/main/java/com/aoleyun/sn/comm/CommonConfig.java
+++ b/app/src/main/java/com/aoleyun/sn/comm/CommonConfig.java
@@ -117,8 +117,6 @@ public class CommonConfig {
public final static String AOLE_APP_ALLOW_INSTALL = "aole_app_allow_install";
/*应用安装白名单*/
public final static String AOLE_ACTION_APP_FORBID = "aole_app_forbid";
- /*公共应用白名单*/
- public final static String AOLE_PUBLIC_APP_INSTALL_WHITELIST = "aole_public_app_install_whitelist_set";
/*强制安装应用,禁止卸载*/
public final static String AOLE_ACTION_FORCE_APP = "aole_force_app";
/*指定应用安装源 非指定包名不能安装apk*/
@@ -189,7 +187,11 @@ public class CommonConfig {
public final static String AOLE_ACTION_RESTORE_FORBID_ON = "aole_restore_forbid_on";
public final static String AOLE_ACTION_DISABLE_APP = "aole_disable_app_list";
-
+ /*公共应用白名单*/
+ public final static String AOLE_PUBLIC_APP_INSTALL_WHITELIST = "aole_public_app_install_whitelist_set";
+ /*分组应用白名单*/
+ public final static String AOLE_GROUP_APP_INSTALL_WHITELIST = "aole_group_app_install_whitelist_set";
+ /*所有白名单应用*/
public final static String AOLE_ALL_APP_WHITE_LIST_KEY = "aole_all_app_white_list";
/*系统设置菜单选项*/
public final static String AOLE_SETTINGS_DISALLOW = "aole_settings_disallow";
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 f2ef54e..fc0f2aa 100644
--- a/app/src/main/java/com/aoleyun/sn/network/NetInterfaceManager.java
+++ b/app/src/main/java/com/aoleyun/sn/network/NetInterfaceManager.java
@@ -1,11 +1,10 @@
package com.aoleyun.sn.network;
-import static com.google.gson.JsonParser.parseString;
-
import android.annotation.SuppressLint;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.app.StatusBarManager;
+import android.app.WallpaperManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
@@ -59,7 +58,6 @@ import com.aoleyun.sn.bean.SnSetting;
import com.aoleyun.sn.bean.SnTimeControl;
import com.aoleyun.sn.bean.StudentsInfo;
import com.aoleyun.sn.bean.TimeControlData;
-import com.aoleyun.sn.bean.TimeControlInfo;
import com.aoleyun.sn.bean.TopApp;
import com.aoleyun.sn.bean.Wallpaper;
import com.aoleyun.sn.bean.WhitelistBean;
@@ -138,7 +136,7 @@ import io.reactivex.rxjava3.core.Observable;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.functions.BiFunction;
-import io.reactivex.rxjava3.functions.Function3;
+import io.reactivex.rxjava3.functions.Function4;
import io.reactivex.rxjava3.functions.Function6;
import io.reactivex.rxjava3.functions.Function7;
import io.reactivex.rxjava3.schedulers.Schedulers;
@@ -159,6 +157,8 @@ import retrofit2.Retrofit;
import retrofit2.adapter.rxjava3.RxJava3CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;
+import static com.google.gson.JsonParser.parseString;
+
public class NetInterfaceManager {
private static final String TAG = "NetInterfaceManager";
private static final RxCacheManager CACHE_MANAGER = RxCacheManager.getInstance();
@@ -614,7 +614,7 @@ public class NetInterfaceManager {
public Observable> getStudesInfoObservable() {
return withCache(schedule(getDevicesStatusApi().getStudentsInfo(Utils.getSerial(mContext))),
UrlAddress.GET_STUDENTS_INFO,
- 720 * CACHE_EXPIRE_ONE_MINUTE);
+ 15 * CACHE_EXPIRE_ONE_MINUTE);
}
/**
@@ -713,6 +713,7 @@ public class NetInterfaceManager {
10 * CACHE_EXPIRE_ONE_MINUTE);
}
+ @Deprecated
public Observable> getSnTimeObservable() {
return schedule(getSystemSettingApi().getSnTimeControl(Utils.getSerial(mContext)));
}
@@ -1171,156 +1172,6 @@ public class NetInterfaceManager {
});
}
- public void getForceDownload(BehaviorSubject lifecycle, onCompleteCallback callback) {
-// getForceDownloadObservable()
-// .compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
-// .subscribe(getForceDownloadObserver(callback));
-
- Observable.zip(getForceDownloadObservable(), getGroupForceDownloadObservable(), new BiFunction>,
- BaseResponse>, List>() {
- @Override
- public List apply(BaseResponse> listBaseResponse, BaseResponse> listBaseResponse2) throws Throwable {
- List forceDownloadData = new ArrayList<>();
- if (listBaseResponse.isSuccess()) forceDownloadData.addAll(listBaseResponse.data);
- if (listBaseResponse2.isSuccess()) forceDownloadData.addAll(listBaseResponse2.data);
- return forceDownloadData;
- }
- })
- .compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(getForceDownloadListObserver(callback));
-
- }
-
- public void getForceDownload(onCompleteCallback callback) {
-// getForceDownloadObservable()
-// .subscribe(getForceDownloadObserver(callback));
- Observable.zip(getForceDownloadObservable(), getGroupForceDownloadObservable(), new BiFunction>,
- BaseResponse>, List>() {
- @Override
- public List apply(BaseResponse> listBaseResponse, BaseResponse> listBaseResponse2) throws Throwable {
- List forceDownloadData = new ArrayList<>();
- if (listBaseResponse.isSuccess()) forceDownloadData.addAll(listBaseResponse.data);
- if (listBaseResponse2.isSuccess()) forceDownloadData.addAll(listBaseResponse2.data);
- return forceDownloadData;
- }
- })
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(getForceDownloadListObserver(callback));
- }
-
- public void getForceDownload() {
- removeCache(UrlAddress.GET_FORCE_INSTALL_LIST);
- removeCache(UrlAddress.GROUP_APP_INSTALL_LIST);
-// getForceDownloadObservable()
-// .subscribe(getForceDownloadObserver(null));
- Observable.zip(getForceDownloadObservable(), getGroupForceDownloadObservable(), new BiFunction>,
- BaseResponse>, List>() {
- @Override
- public List apply(BaseResponse> listBaseResponse, BaseResponse> listBaseResponse2) throws Throwable {
- List forceDownloadData = new ArrayList<>();
- if (listBaseResponse.isSuccess()) forceDownloadData.addAll(listBaseResponse.data);
- if (listBaseResponse2.isSuccess()) forceDownloadData.addAll(listBaseResponse2.data);
- return forceDownloadData;
- }
- })
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(getForceDownloadListObserver(null));
- }
-
- @Deprecated
- private Observer>> getForceDownloadObserver(onCompleteCallback callback) {
- return new Observer>>() {
- @Override
- public void onSubscribe(@NonNull Disposable d) {
- Log.e("getForceDownload", "onSubscribe: ");
- }
-
- @Override
- public void onNext(@NonNull BaseResponse> forceDownloadBean) {
- Log.e("getForceDownload", "onNext: " + forceDownloadBean);
- if (forceDownloadBean.isSuccess()) {
- List forceDownloadData = forceDownloadBean.data;
- Aria.download(this).resumeAllTask();
- JgyUtils.getInstance().forceDownload(forceDownloadData);
- List forceApp = forceDownloadData.stream().map(ForceDownloadData::getApp_package).collect(Collectors.toList());
- Settings.System.putString(mContext.getContentResolver(), CommonConfig.AOLE_ACTION_FORCE_APP, String.join(",", forceApp));
- if (JgyUtils.isAllWinnerDevice()) {
- AllwinnerCubeMdmManager.getInstance().setForbidUnInstallPackageList(forceApp);
- }
- } else if (forceDownloadBean.code == -200) {
- Settings.System.putString(mContext.getContentResolver(), CommonConfig.AOLE_ACTION_FORCE_APP, "invalid");
- if (JgyUtils.isAllWinnerDevice()) {
- AllwinnerCubeMdmManager.getInstance().setForbidUnInstallPackageList(new ArrayList<>());
- }
- } else {
- Log.e("getForceDownload", forceDownloadBean.msg);
- }
- }
-
- @Override
- public void onError(@NonNull Throwable e) {
- Log.e("getForceDownload", "onError: " + e.getMessage());
- onComplete();
- }
-
- @Override
- public void onComplete() {
- Log.e("getForceDownload", "onComplete: ");
- if (callback != null) {
- callback.onComplete();
- }
- }
- };
- }
-
- private Observer> getForceDownloadListObserver(onCompleteCallback callback) {
- return new Observer>() {
- @Override
- public void onSubscribe(@NonNull Disposable d) {
- Log.e("getForceDownload", "onSubscribe: ");
- }
-
- @Override
- public void onNext(@NonNull List forceDownloadBean) {
- Log.e("getForceDownload", "onNext: " + forceDownloadBean);
- if (forceDownloadBean != null && !forceDownloadBean.isEmpty()) {
- Aria.download(this).resumeAllTask();
- JgyUtils.getInstance().forceDownload(forceDownloadBean);
- List forceApp = forceDownloadBean.stream().map(ForceDownloadData::getApp_package).collect(Collectors.toList());
- boolean aole_force_app = Settings.System.putString(mContext.getContentResolver(), CommonConfig.AOLE_ACTION_FORCE_APP, String.join(",", forceApp));
- Log.e("getForceDownload", "aole_force_app:" + aole_force_app);
- if (JgyUtils.isAllWinnerDevice()) {
- AllwinnerCubeMdmManager.getInstance().setForbidUnInstallPackageList(forceApp);
- }
- } else {
- boolean aole_force_app = Settings.System.putString(mContext.getContentResolver(), CommonConfig.AOLE_ACTION_FORCE_APP, "invalid");
- Log.e("getForceDownload", "aole_force_app:" + aole_force_app);
- if (JgyUtils.isAllWinnerDevice()) {
- AllwinnerCubeMdmManager.getInstance().setForbidUnInstallPackageList(new ArrayList<>());
- }
- }
- }
-
- @Override
- public void onError(@NonNull Throwable e) {
- Log.e("getForceDownload", "onError: " + e.getMessage());
- onComplete();
- }
-
- @Override
- public void onComplete() {
- Log.e("getForceDownload", "onComplete: ");
- if (callback != null) {
- callback.onComplete();
- }
- }
- };
- }
-
public void getDefaultDesktop(BehaviorSubject lifecycle, onCompleteCallback callback) {
Observable.zip(getDesktopObservable(), getDesktopsDiyUpdate(), new BiFunction, BaseResponse, List>() {
@Override
@@ -2951,9 +2802,218 @@ public class NetInterfaceManager {
});
}
- public void getAppLimit(BehaviorSubject lifecycle, onCompleteCallback callback) {
- Observable.zip(getAppLimitObservable(), getAdminAppObservable(), getRankCommonAppObservable(), getBiFunction())
+ // TODO: 2026/5/25 白名单应用统一由这里完成
+ public void getAllApp() {
+ Observable.zip(getAllForceDownloadObservable(), getAllAppObservable(), getAllAppBiFunction())
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(getAllAppObserver());
+ }
+
+ private BiFunction, List, Set> getAllAppBiFunction() {
+ return new BiFunction, List, Set>() {
+ @Override
+ public Set apply(List forceDownloadData, List strings) throws Throwable {
+ return null;
+ }
+ };
+ }
+
+ private Observer> getAllAppObserver() {
+ return new Observer>() {
+ @Override
+ public void onSubscribe(@NonNull Disposable d) {
+
+ }
+
+ @Override
+ public void onNext(@NonNull Set strings) {
+
+ }
+
+ @Override
+ public void onError(@NonNull Throwable e) {
+
+ }
+
+ @Override
+ public void onComplete() {
+
+ }
+ };
+ }
+
+ private Observable> getAllForceDownloadObservable() {
+ return Observable.zip(getForceDownloadObservable(), getGroupForceDownloadObservable(), getForceDownloadBiFunction())
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread());
+ }
+
+ public void getForceDownload(BehaviorSubject lifecycle, onCompleteCallback callback) {
+// getForceDownloadObservable()
+// .compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
+// .subscribe(getForceDownloadObserver(callback));
+
+ Observable.zip(getForceDownloadObservable(), getGroupForceDownloadObservable(), getForceDownloadBiFunction())
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(getForceDownloadListObserver(callback));
+
+ }
+
+ public void getForceDownload(onCompleteCallback callback) {
+// getForceDownloadObservable()
+// .subscribe(getForceDownloadObserver(callback));
+ Observable.zip(getForceDownloadObservable(), getGroupForceDownloadObservable(), getForceDownloadBiFunction())
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(getForceDownloadListObserver(callback));
+ }
+
+ public void getForceDownload() {
+ removeCache(UrlAddress.GET_FORCE_INSTALL_LIST);
+ removeCache(UrlAddress.GROUP_APP_INSTALL_LIST);
+// getForceDownloadObservable()
+// .subscribe(getForceDownloadObserver(null));
+ Observable.zip(getForceDownloadObservable(), getGroupForceDownloadObservable(), getForceDownloadBiFunction())
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(getForceDownloadListObserver(null));
+ }
+
+ private BiFunction>, BaseResponse>, List> getForceDownloadBiFunction() {
+ return new BiFunction>, BaseResponse>, List>() {
+ @Override
+ public List apply(BaseResponse> listBaseResponse, BaseResponse> listBaseResponse2) throws Throwable {
+ List forceDownloadData = new ArrayList<>();
+ if (listBaseResponse.isSuccess()) {
+ forceDownloadData.addAll(listBaseResponse.data);
+ } else {
+
+ }
+ if (listBaseResponse2.isSuccess()) {
+ List forceDownloadData2 = listBaseResponse2.data;
+ forceDownloadData.addAll(forceDownloadData2);
+ Set whitePackages2 = forceDownloadData2.stream().map(new Function() {
+ @Override
+ public String apply(ForceDownloadData forceDownloadData) {
+ return forceDownloadData.getApp_package();
+ }
+ }).collect(Collectors.toSet());
+ mMMKV.encode(CommonConfig.AOLE_GROUP_APP_INSTALL_WHITELIST, whitePackages2);
+ } else {
+ mMMKV.remove(CommonConfig.AOLE_GROUP_APP_INSTALL_WHITELIST);
+ }
+
+ return forceDownloadData;
+ }
+ };
+ }
+
+ private Observer> getForceDownloadListObserver(onCompleteCallback callback) {
+ return new Observer>() {
+ @Override
+ public void onSubscribe(@NonNull Disposable d) {
+ Log.e("getForceDownload", "onSubscribe: ");
+ }
+
+ @Override
+ public void onNext(@NonNull List forceDownloadBean) {
+ Log.e("getForceDownload", "onNext: " + forceDownloadBean);
+ if (forceDownloadBean != null && !forceDownloadBean.isEmpty()) {
+ Aria.download(this).resumeAllTask();
+ JgyUtils.getInstance().forceDownload(forceDownloadBean);
+ List forceApp = forceDownloadBean.stream().map(ForceDownloadData::getApp_package).collect(Collectors.toList());
+ boolean aole_force_app = Settings.System.putString(mContext.getContentResolver(), CommonConfig.AOLE_ACTION_FORCE_APP, String.join(",", forceApp));
+ Log.e("getForceDownload", "aole_force_app:" + aole_force_app);
+ if (JgyUtils.isAllWinnerDevice()) {
+ AllwinnerCubeMdmManager.getInstance().setForbidUnInstallPackageList(forceApp);
+ }
+ } else {
+ boolean aole_force_app = Settings.System.putString(mContext.getContentResolver(), CommonConfig.AOLE_ACTION_FORCE_APP, "invalid");
+ Log.e("getForceDownload", "aole_force_app:" + aole_force_app);
+ if (JgyUtils.isAllWinnerDevice()) {
+ AllwinnerCubeMdmManager.getInstance().setForbidUnInstallPackageList(new ArrayList<>());
+ }
+ }
+ }
+
+ @Override
+ public void onError(@NonNull Throwable e) {
+ Log.e("getForceDownload", "onError: " + e.getMessage());
+ if (callback != null) {
+ callback.onComplete();
+ }
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("getForceDownload", "onComplete: ");
+ if (callback != null) {
+ callback.onComplete();
+ }
+ }
+ };
+ }
+
+ @Deprecated
+ private Observer>> getForceDownloadObserver(onCompleteCallback callback) {
+ return new Observer>>() {
+ @Override
+ public void onSubscribe(@NonNull Disposable d) {
+ Log.e("getForceDownload", "onSubscribe: ");
+ }
+
+ @Override
+ public void onNext(@NonNull BaseResponse> forceDownloadBean) {
+ Log.e("getForceDownload", "onNext: " + forceDownloadBean);
+ if (forceDownloadBean.isSuccess()) {
+ List forceDownloadData = forceDownloadBean.data;
+ Aria.download(this).resumeAllTask();
+ JgyUtils.getInstance().forceDownload(forceDownloadData);
+ List forceApp = forceDownloadData.stream().map(ForceDownloadData::getApp_package).collect(Collectors.toList());
+ Settings.System.putString(mContext.getContentResolver(), CommonConfig.AOLE_ACTION_FORCE_APP, String.join(",", forceApp));
+ if (JgyUtils.isAllWinnerDevice()) {
+ AllwinnerCubeMdmManager.getInstance().setForbidUnInstallPackageList(forceApp);
+ }
+ } else if (forceDownloadBean.code == -200) {
+ Settings.System.putString(mContext.getContentResolver(), CommonConfig.AOLE_ACTION_FORCE_APP, "invalid");
+ if (JgyUtils.isAllWinnerDevice()) {
+ AllwinnerCubeMdmManager.getInstance().setForbidUnInstallPackageList(new ArrayList<>());
+ }
+ } else {
+ Log.e("getForceDownload", forceDownloadBean.msg);
+ }
+ }
+
+ @Override
+ public void onError(@NonNull Throwable e) {
+ Log.e("getForceDownload", "onError: " + e.getMessage());
+ onComplete();
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("getForceDownload", "onComplete: ");
+ if (callback != null) {
+ callback.onComplete();
+ }
+ }
+ };
+ }
+
+ private Observable> getAllAppObservable() {
+ return Observable.zip(getAppLimitObservable(), getAdminAppObservable(), getRankCommonAppObservable(), getGroupForceDownloadObservable(), getBiFunction())
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread());
+ }
+
+ public void getAppLimit(BehaviorSubject lifecycle, onCompleteCallback callback) {
+ Observable.zip(getAppLimitObservable(), getAdminAppObservable(), getRankCommonAppObservable(), getGroupForceDownloadObservable(), getBiFunction())
+ .compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
.subscribe(getAppLimitListObserver(callback));
// getAppLimitObservable()
// .compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
@@ -2961,7 +3021,9 @@ public class NetInterfaceManager {
}
public void getAppLimit(onCompleteCallback callback) {
- Observable.zip(getAppLimitObservable(), getAdminAppObservable(), getRankCommonAppObservable(), getBiFunction())
+ Observable.zip(getAppLimitObservable(), getAdminAppObservable(), getRankCommonAppObservable(), getGroupForceDownloadObservable(), getBiFunction())
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
.subscribe(getAppLimitListObserver(callback));
// getAppLimitObservable()
// .subscribe(getAppLimitObserver(callback));
@@ -2971,21 +3033,23 @@ public class NetInterfaceManager {
removeCache(UrlAddress.SET_WHITE_PACKAGE_LIST);
removeCache(UrlAddress.GET_ADMIN_APP);
removeCache(UrlAddress.HTTP_TAG_COMMOAPP);
- Observable.zip(getAppLimitObservable(), getAdminAppObservable(), getRankCommonAppObservable(), getBiFunction())
+ removeCache(UrlAddress.GROUP_APP_INSTALL_LIST);
+ Observable.zip(getAppLimitObservable(), getAdminAppObservable(), getRankCommonAppObservable(), getGroupForceDownloadObservable(), getBiFunction())
.subscribe(getAppLimitListObserver(null));
// getAppLimitObservable()
// .subscribe(getAppLimitObserver(null));
}
private void getAppLimitList() {
- Observable.zip(getAppLimitObservable(), getAdminAppObservable(), getRankCommonAppObservable(), getBiFunction())
+ Observable.zip(getAppLimitObservable(), getAdminAppObservable(), getRankCommonAppObservable(), getGroupForceDownloadObservable(), getBiFunction())
.subscribe(getAppLimitListObserver(null));
}
- private Function3, BaseResponse>, BaseResponse>, List> getBiFunction() {
- return new Function3, BaseResponse>, BaseResponse>, List>() {
+ private Function4, BaseResponse>, BaseResponse>, BaseResponse>, List> getBiFunction() {
+ return new Function4, BaseResponse>, BaseResponse>, BaseResponse>, List>() {
@Override
- public List apply(BaseResponse appLimitBaseResponse, BaseResponse> listBaseResponse, BaseResponse> appDateInfoResponse) throws Throwable {
+ public List apply(BaseResponse appLimitBaseResponse, BaseResponse> adminAppBaseResponse,
+ BaseResponse> rankAppResponse, BaseResponse> groupForcebaseResponse) throws Throwable {
List appNames = new ArrayList<>();
if (appLimitBaseResponse.isSuccess()) {
AppLimit appLimit = appLimitBaseResponse.data;
@@ -2993,8 +3057,8 @@ public class NetInterfaceManager {
List pkgs = new ArrayList<>(Arrays.asList(result.split(",")));
appNames.addAll(pkgs);
}
- if (listBaseResponse.isSuccess()) {
- List appDateInfos = listBaseResponse.data;
+ if (adminAppBaseResponse.isSuccess()) {
+ List appDateInfos = adminAppBaseResponse.data;
Set pkgs = appDateInfos.stream().map(new Function() {
@Override
public String apply(AppDateInfo appDateInfo) {
@@ -3003,8 +3067,8 @@ public class NetInterfaceManager {
}).collect(Collectors.toSet());
appNames.addAll(pkgs);
}
- if (appDateInfoResponse.isSuccess()) {
- List appDateInfos = appDateInfoResponse.data;
+ if (rankAppResponse.isSuccess()) {
+ List appDateInfos = rankAppResponse.data;
Set pkgs = appDateInfos.stream().map(new Function() {
@Override
public String apply(AppDateInfo appDateInfo) {
@@ -3016,6 +3080,20 @@ public class NetInterfaceManager {
} else {
mMMKV.remove(CommonConfig.AOLE_PUBLIC_APP_INSTALL_WHITELIST);
}
+
+ if (groupForcebaseResponse.isSuccess()) {
+ List groupAppInfoList = groupForcebaseResponse.data;
+ Set whitePackages2 = groupAppInfoList.stream().map(new Function() {
+ @Override
+ public String apply(ForceDownloadData forceDownloadData) {
+ return forceDownloadData.getApp_package();
+ }
+ }).collect(Collectors.toSet());
+ mMMKV.encode(CommonConfig.AOLE_GROUP_APP_INSTALL_WHITELIST, whitePackages2);
+ appNames.addAll(whitePackages2);
+ } else {
+ mMMKV.remove(CommonConfig.AOLE_GROUP_APP_INSTALL_WHITELIST);
+ }
return appNames;
}
};
@@ -3074,31 +3152,31 @@ public class NetInterfaceManager {
public void getAllInfoAndSetting(BehaviorSubject lifecycle) {
Observable.zip(getAllAppControl(), getAppAutoStartUpdateAndNetObservable(), new BiFunction>, BaseResponse>, List>() {
- @Override
- public List apply(BaseResponse> appListInfoResponse, BaseResponse> netAndLaunchDataResponse) throws Throwable {
- Log.e("getAllInfoAndSetting", "apply: appListInfoResponse code = " + appListInfoResponse.code);
- Log.e("getAllInfoAndSetting", "apply: netAndLaunchDataResponse code = " + netAndLaunchDataResponse.code);
+ @Override
+ public List apply(BaseResponse> appListInfoResponse, BaseResponse> netAndLaunchDataResponse) throws Throwable {
+ Log.e("getAllInfoAndSetting", "apply: appListInfoResponse code = " + appListInfoResponse.code);
+ Log.e("getAllInfoAndSetting", "apply: netAndLaunchDataResponse code = " + netAndLaunchDataResponse.code);
- if (appListInfoResponse.isSuccess() && netAndLaunchDataResponse.isSuccess()) {
- List appListInfos = appListInfoResponse.data;
- Set pkgList = appListInfos.stream().map(AppListInfo::getApp_package).collect(Collectors.toSet());
- mMMKV.encode(CommonConfig.ALL_APP_PKG_SET, pkgList);
+ if (appListInfoResponse.isSuccess() && netAndLaunchDataResponse.isSuccess()) {
+ List appListInfos = appListInfoResponse.data;
+ Set pkgList = appListInfos.stream().map(AppListInfo::getApp_package).collect(Collectors.toSet());
+ mMMKV.encode(CommonConfig.ALL_APP_PKG_SET, pkgList);
- List netAndLaunchDataList = netAndLaunchDataResponse.data;
- JgyUtils.getInstance().setNetAndlaunch(netAndLaunchDataList, appListInfos);
- return appListInfos;
- } else if (appListInfoResponse.isSuccess()) {
- List appListInfos = appListInfoResponse.data;
- Set pkgList = appListInfos.stream().map(AppListInfo::getApp_package).collect(Collectors.toSet());
- mMMKV.encode(CommonConfig.ALL_APP_PKG_SET, pkgList);
- return appListInfos;
- } else if (netAndLaunchDataResponse.isSuccess()) {
- List netAndLaunchDataList = netAndLaunchDataResponse.data;
- JgyUtils.getInstance().setNetAndlaunch(netAndLaunchDataList);
- }
- return null;
- }
- })
+ List netAndLaunchDataList = netAndLaunchDataResponse.data;
+ JgyUtils.getInstance().setNetAndlaunch(netAndLaunchDataList, appListInfos);
+ return appListInfos;
+ } else if (appListInfoResponse.isSuccess()) {
+ List appListInfos = appListInfoResponse.data;
+ Set pkgList = appListInfos.stream().map(AppListInfo::getApp_package).collect(Collectors.toSet());
+ mMMKV.encode(CommonConfig.ALL_APP_PKG_SET, pkgList);
+ return appListInfos;
+ } else if (netAndLaunchDataResponse.isSuccess()) {
+ List netAndLaunchDataList = netAndLaunchDataResponse.data;
+ JgyUtils.getInstance().setNetAndlaunch(netAndLaunchDataList);
+ }
+ return null;
+ }
+ })
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
@@ -3128,31 +3206,31 @@ public class NetInterfaceManager {
@Deprecated
public void getAllInfoAndSetting() {
Observable.zip(getAllAppControl(), getAppAutoStartUpdateAndNetObservable(), new BiFunction>, BaseResponse>, List>() {
- @Override
- public List apply(BaseResponse> appListInfoResponse, BaseResponse> netAndLaunchDataResponse) throws Throwable {
- Log.e("getAllInfoAndSetting", "apply: appListInfoResponse code = " + appListInfoResponse.code);
- Log.e("getAllInfoAndSetting", "apply: netAndLaunchDataResponse code = " + netAndLaunchDataResponse.code);
+ @Override
+ public List apply(BaseResponse> appListInfoResponse, BaseResponse> netAndLaunchDataResponse) throws Throwable {
+ Log.e("getAllInfoAndSetting", "apply: appListInfoResponse code = " + appListInfoResponse.code);
+ Log.e("getAllInfoAndSetting", "apply: netAndLaunchDataResponse code = " + netAndLaunchDataResponse.code);
- if (appListInfoResponse.isSuccess() && netAndLaunchDataResponse.isSuccess()) {
- List appListInfos = appListInfoResponse.data;
- Set pkgList = appListInfos.stream().map(AppListInfo::getApp_package).collect(Collectors.toSet());
- mMMKV.encode(CommonConfig.ALL_APP_PKG_SET, pkgList);
+ if (appListInfoResponse.isSuccess() && netAndLaunchDataResponse.isSuccess()) {
+ List appListInfos = appListInfoResponse.data;
+ Set pkgList = appListInfos.stream().map(AppListInfo::getApp_package).collect(Collectors.toSet());
+ mMMKV.encode(CommonConfig.ALL_APP_PKG_SET, pkgList);
- List netAndLaunchDataList = netAndLaunchDataResponse.data;
- JgyUtils.getInstance().setNetAndlaunch(netAndLaunchDataList, appListInfos);
- return appListInfos;
- } else if (appListInfoResponse.isSuccess()) {
- List appListInfos = appListInfoResponse.data;
- Set pkgList = appListInfos.stream().map(AppListInfo::getApp_package).collect(Collectors.toSet());
- mMMKV.encode(CommonConfig.ALL_APP_PKG_SET, pkgList);
- return appListInfos;
- } else if (netAndLaunchDataResponse.isSuccess()) {
- List netAndLaunchDataList = netAndLaunchDataResponse.data;
- JgyUtils.getInstance().setNetAndlaunch(netAndLaunchDataList);
- }
- return null;
- }
- })
+ List netAndLaunchDataList = netAndLaunchDataResponse.data;
+ JgyUtils.getInstance().setNetAndlaunch(netAndLaunchDataList, appListInfos);
+ return appListInfos;
+ } else if (appListInfoResponse.isSuccess()) {
+ List appListInfos = appListInfoResponse.data;
+ Set pkgList = appListInfos.stream().map(AppListInfo::getApp_package).collect(Collectors.toSet());
+ mMMKV.encode(CommonConfig.ALL_APP_PKG_SET, pkgList);
+ return appListInfos;
+ } else if (netAndLaunchDataResponse.isSuccess()) {
+ List netAndLaunchDataList = netAndLaunchDataResponse.data;
+ JgyUtils.getInstance().setNetAndlaunch(netAndLaunchDataList);
+ }
+ return null;
+ }
+ })
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer>() {
@@ -3303,8 +3381,7 @@ public class NetInterfaceManager {
@Deprecated
public void getSnTimeControl() {
- getSnTimeObservable()
- .subscribe(getSnTimeObserver(null));
+ getSnTimeObservable().subscribe(getSnTimeObserver(null));
}
@Deprecated
@@ -3377,8 +3454,7 @@ public class NetInterfaceManager {
Log.e("getTimeObserver", "onNext: " + response);
if (response.isSuccess()) {
TimeControlData timeControlData = response.data;
- List periods = timeControlData.getPeriods();
- mMMKV.encode(CommonConfig.TIME_CONTROL_DATA_KEY, GsonUtils.toJSONString(periods));
+ mMMKV.encode(CommonConfig.TIME_CONTROL_DATA_KEY, GsonUtils.toJSONString(timeControlData));
} else {
mMMKV.remove(CommonConfig.TIME_CONTROL_DATA_KEY);
}
@@ -4208,6 +4284,7 @@ public class NetInterfaceManager {
}
public void getWallpaper() {
+ removeCache(UrlAddress.GET_WALLPAPER);
getWallpaperObservable()
.subscribe(getWallpaperObserver(null));
}
@@ -4233,6 +4310,13 @@ public class NetInterfaceManager {
String url = wallpaper.getFile_url();
JgyUtils.getInstance().setWallpaper(url);
} else {
+ WallpaperManager wallpaperManager = WallpaperManager.getInstance(mContext);
+ try {
+ wallpaperManager.clear();
+ wallpaperManager.clear(WallpaperManager.FLAG_LOCK);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
mMMKV.encode(CommonConfig.WALLPAPER_URL_KEY, "");
}
}
diff --git a/app/src/main/java/com/aoleyun/sn/network/api/aoleyun/SystemSettingApi.java b/app/src/main/java/com/aoleyun/sn/network/api/aoleyun/SystemSettingApi.java
index 6f50d9b..f186fac 100644
--- a/app/src/main/java/com/aoleyun/sn/network/api/aoleyun/SystemSettingApi.java
+++ b/app/src/main/java/com/aoleyun/sn/network/api/aoleyun/SystemSettingApi.java
@@ -48,6 +48,7 @@ public interface SystemSettingApi {
);
@GET(UrlAddress.GET_SN_TIME_CONTROL)
+ @Deprecated
Observable> getSnTimeControl(
@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 5125646..e17d301 100644
--- a/app/src/main/java/com/aoleyun/sn/push/PushManager.java
+++ b/app/src/main/java/com/aoleyun/sn/push/PushManager.java
@@ -203,6 +203,8 @@ public class PushManager {
private static final String UPDATE_BATCH = "37";
/*添加wifi*/
private static final String UPDATE_WIFI_PW = "38";
+ /*应用密码锁*/
+ private static final String APP_LOCK_PASSWD = "39";
/*远程关机*/
private static final String DEVICES_SHUTDOWN_NOW = "40";
/*远程定时关机*/
@@ -325,15 +327,22 @@ public class PushManager {
Toaster.debugShow("收到管控:应用安装");
NetInterfaceManager.removeCache(UrlAddress.GET_FORCE_INSTALL_LIST);
NetInterfaceManager.removeCache(UrlAddress.GROUP_APP_INSTALL_LIST);
- doDownloadAndInstall(extras);
new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
@Override
public void run() {
+ NetInterfaceManager.getInstance().getAppLimit();
NetInterfaceManager.getInstance().getDesktopIcon();
NetInterfaceManager.getInstance().getDefaultDesktop();
NetInterfaceManager.getInstance().getAppAutoStartUpdateAndNet();
}
- }, 5234);
+ }, 2345);
+ new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
+ @Override
+ public void run() {
+ doDownloadAndInstall(extras);
+ }
+ }, 4321);
+
mContext.sendBroadcast(new Intent(AOLEYUN_REFRESH_DESKTOP));
break;
case MSG_LOCK:
@@ -358,7 +367,25 @@ public class PushManager {
case GET_FORCEDOWNLOADURL:
case GROUP_APP_INSTALL:
Toaster.debugShow("收到管控:应用强制安装");
- downloadForceInstallApk(extras);
+ NetInterfaceManager.removeCache(UrlAddress.GET_FORCE_INSTALL_LIST);
+ NetInterfaceManager.removeCache(UrlAddress.GROUP_APP_INSTALL_LIST);
+ new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
+ @Override
+ public void run() {
+ NetInterfaceManager.getInstance().getAppLimit();
+ NetInterfaceManager.getInstance().getDesktopIcon();
+ NetInterfaceManager.getInstance().getDefaultDesktop();
+ NetInterfaceManager.getInstance().getAppAutoStartUpdateAndNet();
+ }
+ }, 2345);
+ new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
+ @Override
+ public void run() {
+ downloadForceInstallApk(extras);
+ }
+ }, 4321);
+
+ mContext.sendBroadcast(new Intent(AOLEYUN_REFRESH_DESKTOP));
break;
case SET_HOMEPAG_TAG:
new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
@@ -575,6 +602,9 @@ public class PushManager {
case UPDATE_WIFI_PW:
NetInterfaceManager.getInstance().getWiFiPasswd();
break;
+ case APP_LOCK_PASSWD:
+ mContext.sendBroadcast(new Intent(AOLEYUN_REFRESH_DESKTOP));
+ break;
case DEVICES_SHUTDOWN_NOW:
JgyUtils.getInstance().shutdown();
break;
@@ -1124,7 +1154,7 @@ public class PushManager {
}
private void getTimeControl(String extras) {
- NetInterfaceManager.getInstance().getSnTimeControl();
+// NetInterfaceManager.getInstance().getSnTimeControl();
NetInterfaceManager.getInstance().getTimeControl();
}
diff --git a/app/src/main/java/com/aoleyun/sn/service/main/MainServiceModel.java b/app/src/main/java/com/aoleyun/sn/service/main/MainServiceModel.java
index b911ce1..5a1927b 100644
--- a/app/src/main/java/com/aoleyun/sn/service/main/MainServiceModel.java
+++ b/app/src/main/java/com/aoleyun/sn/service/main/MainServiceModel.java
@@ -299,23 +299,21 @@ public class MainServiceModel extends ViewModel {
}
public void getAppLimit() {
- NetInterfaceManager.getInstance()
- .getAppLimit(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
- @Override
- public void onComplete() {
+ NetInterfaceManager.getInstance().getAppLimit(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
+ @Override
+ public void onComplete() {
- }
- });
+ }
+ });
}
public void getForceDownload() {
- NetInterfaceManager.getInstance()
- .getForceDownload(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
- @Override
- public void onComplete() {
+ NetInterfaceManager.getInstance().getForceDownload(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
+ @Override
+ public void onComplete() {
- }
- });
+ }
+ });
}
public void getDefaultDesktop() {
@@ -477,13 +475,13 @@ public class MainServiceModel extends ViewModel {
}
public void getSnTimeControl() {
- NetInterfaceManager.getInstance()
- .getSnTimeControl(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
- @Override
- public void onComplete() {
-
- }
- });
+// NetInterfaceManager.getInstance()
+// .getSnTimeControl(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
+// @Override
+// public void onComplete() {
+//
+// }
+// });
NetInterfaceManager.getInstance()
.getTimeControl(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
@Override
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 fef3110..88a471c 100644
--- a/app/src/main/java/com/aoleyun/sn/utils/JgyUtils.java
+++ b/app/src/main/java/com/aoleyun/sn/utils/JgyUtils.java
@@ -1,7 +1,5 @@
package com.aoleyun.sn.utils;
-import static android.app.ActivityManager.RECENT_IGNORE_UNAVAILABLE;
-
import android.annotation.SuppressLint;
import android.app.ActivityManager;
import android.app.ActivityManagerNative;
@@ -57,6 +55,7 @@ import com.aoleyun.sn.bean.LessonJson;
import com.aoleyun.sn.bean.NetAndLaunchData;
import com.aoleyun.sn.bean.TTAppground;
import com.aoleyun.sn.bean.TimeControlApp;
+import com.aoleyun.sn.bean.TimeControlData;
import com.aoleyun.sn.bean.TimeControlInfo;
import com.aoleyun.sn.comm.CommonConfig;
import com.aoleyun.sn.comm.JGYActions;
@@ -126,6 +125,8 @@ import io.reactivex.rxjava3.core.ObservableOnSubscribe;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
+import static android.app.ActivityManager.RECENT_IGNORE_UNAVAILABLE;
+
public class JgyUtils {
private static final String TAG = "JgyUtils";
@@ -146,6 +147,9 @@ public class JgyUtils {
private LessonJson mLessonJson;
private TimeUtils.ContralTime mContralTime;
+ //1不能使用,0可用
+ private int mUseCtrl = 1;
+
private List mAppPeriods;
public static final int UnknowPlatform = 0;
@@ -3913,14 +3917,17 @@ public class JgyUtils {
return;
}
Gson gson = new Gson();
- Type type = new TypeToken>() {
+ Type type = new TypeToken() {
}.getType();
try {
- mAppPeriods = gson.fromJson(jsonString, type);
+ TimeControlData timeControlData = gson.fromJson(jsonString, type);
+ mAppPeriods = timeControlData.getPeriods();
+ mUseCtrl = timeControlData.getUse_ctrl();
Log.e(TAG, "checkTimePeriod: periods = " + mAppPeriods);
checkTimePeriod();
} catch (Exception e) {
Log.e(TAG, "checkTimePeriod: Exception = " + e.getMessage());
+ mMMKV.remove(CommonConfig.TIME_CONTROL_DATA_KEY);
}
}
@@ -3958,7 +3965,12 @@ public class JgyUtils {
if (packageNames.contains(foregroundPackage)) {
Log.e(TAG, "checkTimePeriod: " + foregroundPackage + " skip");
} else {
- gotoLauncher();
+ Log.e(TAG, "checkTimePeriod: " + mUseCtrl);
+ if (mUseCtrl != 0) {
+ gotoLauncher();
+ } else {
+ Log.d(TAG, "checkTimePeriod: allowed app start");
+ }
}
}
@@ -3999,7 +4011,8 @@ public class JgyUtils {
if (packageNames.contains(pkgName)) {
return true;
} else {
- return false;
+ Log.e(TAG, "checkTimePeriod: " + mUseCtrl);
+ return mUseCtrl == 0;
}
}
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 4e14d38..a941ee0 100644
--- a/app/src/main/java/com/aoleyun/sn/utils/SysSettingUtils.java
+++ b/app/src/main/java/com/aoleyun/sn/utils/SysSettingUtils.java
@@ -3,13 +3,16 @@ package com.aoleyun.sn.utils;
import android.annotation.SuppressLint;
import android.app.StatusBarManager;
import android.bluetooth.BluetoothAdapter;
+import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
+import android.content.pm.PackageManager;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log;
import com.aoleyun.sn.BuildConfig;
+import com.aoleyun.sn.activity.EyeProtectionActivity;
import com.aoleyun.sn.activity.main.MainActivity;
import com.aoleyun.sn.bean.BluetoothType;
import com.aoleyun.sn.bean.SnSetting;
@@ -73,7 +76,7 @@ public class SysSettingUtils {
setPanelShow(context, jsonObject);
setDisAllowCamera(context, jsonObject);
setSettingsMenuShow(context, jsonObject);
-
+ setEyeProtectionModeEntrance(context, jsonObject);
}
/**
@@ -109,7 +112,7 @@ public class SysSettingUtils {
setSystemAppDisable(context, 0);
setNotification(context, 0);
setSettingsMenuShow(context);
-
+ setEyeProtectionModeEntrance(context, 0);
}
/**
@@ -138,6 +141,7 @@ public class SysSettingUtils {
setAdminApp(context, 0);
setSystemAppDisable(context, 0);
setNotification(context, 1);
+ setEyeProtectionModeEntrance(context, 1);
}
public static void openMtp(Context context) {
@@ -1365,4 +1369,43 @@ public class SysSettingUtils {
private static void setSettingsMenuShow(Context context) {
Settings.System.putString(context.getContentResolver(), CommonConfig.AOLE_SETTINGS_DISALLOW, "");
}
+
+ private static void setEyeProtectionModeEntrance(Context context, JsonObject jsonObject) {
+ Log.e(TAG, "setEyeProtectionModeEntrance: " + jsonObject);
+ if (jsonObject.has("eye_protection_mode_entrance")) {
+ int app_management_general = jsonObject.get("eye_protection_mode_entrance").getAsInt();
+ if (app_management_general == 0) {
+ // 禁用 Launcher 入口
+ setComponentEnabledSetting(context, PackageManager.COMPONENT_ENABLED_STATE_DISABLED);
+ } else {
+ // 启用 Launcher 入口
+ setComponentEnabledSetting(context, PackageManager.COMPONENT_ENABLED_STATE_ENABLED);
+ }
+ } else {
+ setComponentEnabledSetting(context, PackageManager.COMPONENT_ENABLED_STATE_DISABLED);
+ }
+ }
+
+ private static void setEyeProtectionModeEntrance(Context context, int status) {
+ Log.e(TAG, "setEyeProtectionModeEntrance: status = " + status);
+ if (status == 0) {
+ setComponentEnabledSetting(context, PackageManager.COMPONENT_ENABLED_STATE_DISABLED);
+ } else {
+ setComponentEnabledSetting(context, PackageManager.COMPONENT_ENABLED_STATE_ENABLED);
+ }
+ }
+
+ private static boolean setComponentEnabledSetting(Context context, int componentState) {
+ Log.e(TAG, "setComponentEnabledSetting: componentState = " + componentState);
+
+ PackageManager pm = context.getPackageManager();
+ ComponentName componentName = new ComponentName(context, EyeProtectionActivity.class);
+ try {
+ pm.setComponentEnabledSetting(componentName, componentState, PackageManager.DONT_KILL_APP);
+ return true;
+ } catch (Exception e) {
+ Log.e(TAG, "setComponentEnabledSetting: " + e.getMessage());
+ }
+ return false;
+ }
}
diff --git a/app/src/main/res/drawable-hdpi/default_avatar.png b/app/src/main/res/drawable-hdpi/default_avatar.png
index a00c8dc..38cd7fb 100644
Binary files a/app/src/main/res/drawable-hdpi/default_avatar.png and b/app/src/main/res/drawable-hdpi/default_avatar.png differ