version:2.2.10.25

fix:
update:增加禁用app
This commit is contained in:
2022-10-26 09:20:21 +08:00
parent 5875eff3c6
commit 2db37bdfa4
20 changed files with 442 additions and 68 deletions

View File

@@ -91,7 +91,7 @@ android {
MTKnewly {
flavorDimensions "default"
versionCode 31
versionName "2.2.8.19"
versionName "2.2.10.25"
buildConfigField "String", "platform", '"MTK"'
}
}

View File

@@ -17,4 +17,5 @@ interface SystemInfoInterface {
String getTopAppPackage();
boolean SystemPutInt(String name, int value);
void setDefaultDesktop(String pkg);
List<String> getDisableApp();
}

View File

@@ -284,6 +284,11 @@ public class CheckNetActivity extends BaseActivity implements CheckNetContact.Ma
@Override
public void getAppAutoStartUpdateAndNetFinish() {
mCheckNetPresenter.getSnAppAttr();
}
@Override
public void getSnAppAttrFinish() {
mCheckNetPresenter.getAppIDControl();
}

View File

@@ -54,6 +54,8 @@ public class CheckNetContact {
void getDesktopIcon();
//获取应用自启升级和网络权限管理
void getAppAutoStartUpdateAndNet();
/*获取禁用app*/
void getSnAppAttr();
//获取第三方应用子页面ID连网限制
void getAppIDControl();
//获取第三方应用内部网页跳转屏蔽
@@ -126,6 +128,8 @@ public class CheckNetContact {
void getDesktopIconFinish();
//获取应用自启升级和网络权限管理结束
void getAppAutoStartUpdateAndNetFinish();
/*获取禁用app*/
void getSnAppAttrFinish();
//获取第三方应用子页面ID连网限制结束
void getAppIDControlFinish();
//获取第三方应用内部网页跳转屏蔽结束

View File

@@ -293,6 +293,16 @@ public class CheckNetPresenter implements CheckNetContact.Presenter {
});
}
@Override
public void getSnAppAttr() {
mNetInterfaceManager.getSnAppAttr(new NetInterfaceManager.onCompleteCallback() {
@Override
public void onComplete() {
mView.getSnAppAttrFinish();
}
});
}
@Override
public void getAppIDControl() {
mNetInterfaceManager.getAppIDControl(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() {

View File

@@ -0,0 +1,27 @@
package com.aoleyun.sn.bean;
import java.io.Serializable;
public class AppAttr implements Serializable {
private static final long serialVersionUID = -4530860765778383316L;
String app_package;
/*应用是否允许打开 0不允许 1允许*/
int is_open;
public String getApp_package() {
return app_package;
}
public void setApp_package(String app_package) {
this.app_package = app_package;
}
public int getIs_open() {
return is_open;
}
public void setIs_open(int is_open) {
this.is_open = is_open;
}
}

View File

@@ -112,5 +112,6 @@ 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";
}

View File

@@ -0,0 +1,144 @@
package com.aoleyun.sn.gson;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
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 java.lang.reflect.Type;
import java.util.List;
import java.util.Map;
import java.util.Objects;
public class GsonUtils {
//https://blog.csdn.net/zte1055889498/article/details/122400299
public static JsonObject getJsonObject(String jsonString) {
JsonObject jsonObject = JsonParser.parseString(jsonString).getAsJsonObject();
return jsonObject;
}
private static final Gson gson;
static {
GsonBuilder builder = new GsonBuilder();
builder.registerTypeAdapterFactory(new NullStringToEmptyAdapterFactory());
builder.registerTypeAdapter(Integer.class, new IntegerDefault0Adapter());
builder.registerTypeAdapter(int.class, new IntegerDefault0Adapter());
builder.disableHtmlEscaping();
builder.enableComplexMapKeySerialization();
// builder.excludeFieldsWithoutExposeAnnotation();
builder.setDateFormat("yyyy-MM-dd HH:mm:ss");
gson = builder.create();
}
public static Type makeJavaType(Type rawType, Type... typeArguments) {
return TypeToken.getParameterized(rawType, typeArguments).getType();
}
public static String toString(Object value) {
if (Objects.isNull(value)) {
return null;
}
if (value instanceof String) {
return (String) value;
}
return toJSONString(value);
}
public static String toJSONString(Object value) {
return gson.toJson(value);
}
public static String toPrettyString(Object value) {
return gson.newBuilder().setPrettyPrinting().create().toJson(value);
}
public static JsonElement fromJavaObject(Object value) {
JsonElement result = null;
if (Objects.nonNull(value) && (value instanceof String)) {
result = parseObject((String) value);
} else {
result = gson.toJsonTree(value);
}
return result;
}
public static JsonElement parseObject(String content) {
return JsonParser.parseString(content);
}
public static JsonElement getJsonElement(JsonObject node, String name) {
return node.get(name);
}
public static JsonElement getJsonElement(JsonArray node, int index) {
return node.get(index);
}
public static <T> T toJavaObject(JsonElement node, Class<T> clazz) {
return gson.fromJson(node, clazz);
}
public static <T> T toJavaObject(JsonElement node, Type type) {
return gson.fromJson(node, type);
}
public static <T> T toJavaObject(JsonElement node, TypeToken<?> typeToken) {
return toJavaObject(node, typeToken.getType());
}
public static <E> List<E> toJavaList(JsonElement node, Class<E> clazz) {
return toJavaObject(node, makeJavaType(List.class, clazz));
}
public static List<Object> toJavaList(JsonElement node) {
return toJavaObject(node, new TypeToken<List<Object>>() {
}.getType());
}
public static <V> Map<String, V> toJavaMap(JsonElement node, Class<V> clazz) {
return toJavaObject(node, makeJavaType(Map.class, String.class, clazz));
}
public static Map<String, Object> toJavaMap(JsonElement node) {
return toJavaObject(node, new TypeToken<Map<String, Object>>() {
}.getType());
}
public static <T> T toJavaObject(String content, Class<T> clazz) {
JsonObject jsonObject = getJsonObject(content);
String jsonString = jsonObject.toString();
return gson.fromJson(jsonString, clazz);
}
public static <T> T toJavaObject(String content, Type type) {
return gson.fromJson(content, type);
}
public static <T> T toJavaObject(String content, TypeToken<?> typeToken) {
return toJavaObject(content, typeToken.getType());
}
public static <E> List<E> toJavaList(String content, Class<E> clazz) {
return toJavaObject(content, makeJavaType(List.class, clazz));
}
public static List<Object> toJavaList(String content) {
return toJavaObject(content, new TypeToken<List<Object>>() {
}.getType());
}
public static <V> Map<String, V> toJavaMap(String content, Class<V> clazz) {
return toJavaObject(content, makeJavaType(Map.class, String.class, clazz));
}
public static Map<String, Object> toJavaMap(String content) {
return toJavaObject(content, new TypeToken<Map<String, Object>>() {
}.getType());
}
}

View File

@@ -0,0 +1,35 @@
package com.aoleyun.sn.gson;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonParseException;
import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import com.google.gson.JsonSyntaxException;
import java.lang.reflect.Type;
public class IntegerDefault0Adapter implements JsonSerializer<Integer>, JsonDeserializer<Integer> {
@Override
public Integer deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
throws JsonParseException {
try {
if (json.getAsString().equals("")) {
return 0;
}
} catch (Exception ignore) {
}
try {
return json.getAsInt();
} catch (NumberFormatException e) {
throw new JsonSyntaxException(e);
}
}
@Override
public JsonElement serialize(Integer src, Type typeOfSrc, JsonSerializationContext context) {
return new JsonPrimitive(src);
}
}

View File

@@ -15,6 +15,7 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.aoleyun.sn.BuildConfig;
import com.aoleyun.sn.bean.AppAttr;
import com.aoleyun.sn.bean.AppID;
import com.aoleyun.sn.bean.AppLimit;
import com.aoleyun.sn.bean.AppListInfo;
@@ -44,20 +45,22 @@ import com.aoleyun.sn.comm.CommonConfig;
import com.aoleyun.sn.comm.JGYActions;
import com.aoleyun.sn.comm.PackageNames;
import com.aoleyun.sn.disklrucache.CacheHelper;
import com.aoleyun.sn.gson.GsonUtils;
import com.aoleyun.sn.gson.NullStringToEmptyAdapterFactory;
import com.aoleyun.sn.manager.ConnectManager;
import com.aoleyun.sn.manager.ConnectMode;
import com.aoleyun.sn.network.api.GetPublicIPApi;
import com.aoleyun.sn.network.api.GetWhoisApi;
import com.aoleyun.sn.network.api.get.CheckTestUpdateApi;
import com.aoleyun.sn.network.api.get.DefaultAppApi;
import com.aoleyun.sn.network.api.get.GetDesktopApi;
import com.aoleyun.sn.network.api.get.GetDeveloperApi;
import com.aoleyun.sn.network.api.get.GetPushTagsApi;
import com.aoleyun.sn.network.api.GetPublicIPApi;
import com.aoleyun.sn.network.api.get.GetSnRunLogApi;
import com.aoleyun.sn.network.api.get.GetWiFiAliasApi;
import com.aoleyun.sn.network.api.get.LogoImgApi;
import com.aoleyun.sn.network.api.get.ScreenLockStateApi;
import com.aoleyun.sn.network.api.get.SnAppAttrApi;
import com.aoleyun.sn.network.api.get.SnTimeControlApi;
import com.aoleyun.sn.network.api.get.TopAppControlApi;
import com.aoleyun.sn.network.api.post.AppLimitApi;
@@ -100,7 +103,6 @@ import com.aoleyun.sn.statistics.StatisticsInfo;
import com.aoleyun.sn.utils.ApkUtils;
import com.aoleyun.sn.utils.CacheUtils;
import com.aoleyun.sn.utils.ForegroundAppUtil;
import com.aoleyun.sn.utils.GsonUtils;
import com.aoleyun.sn.utils.JGYUtils;
import com.aoleyun.sn.utils.MD5Util;
import com.aoleyun.sn.utils.NetworkUtils;
@@ -426,6 +428,13 @@ public class NetInterfaceManager {
.observeOn(AndroidSchedulers.mainThread());
}
public Observable<BaseResponse<List<AppAttr>>> getSnAppAttrObservable() {
return mRetrofit.create(SnAppAttrApi.class)
.getSnAppAttr(Utils.getSerial(mContext))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
public Observable<BaseResponse<AppID>> getAppIDControlObservable() {
return mRetrofit.create(DeselectIDApi.class)
.getDeselectIDApi(NetInterfaceManager.HTTP_KEY, Utils.getSerial(mContext))
@@ -767,7 +776,7 @@ public class NetInterfaceManager {
@Override
public void onNext(@NonNull List<AppUpdateInfo> appUpdateInfos) {
String jsonString = GsonUtils.toJsonString(appUpdateInfos);
String jsonString = GsonUtils.toJSONString(appUpdateInfos);
cacheHelper.put(UrlAddress.CHECK_UPDATE, jsonString);
Log.e("checkAoleyunUpdate", "onNext: " + jsonString);
for (AppUpdateInfo info : appUpdateInfos) {
@@ -844,7 +853,7 @@ public class NetInterfaceManager {
public void onNext(BaseResponse<List<ForceDownloadData>> listBaseResponse) {
Log.e("checkTestUpdate", "onNext: " + listBaseResponse.data);
if (listBaseResponse.code == OK) {
cacheHelper.put(UrlAddress.GET_SN_APP_TEST, GsonUtils.toJsonString(listBaseResponse.data));
cacheHelper.put(UrlAddress.GET_SN_APP_TEST, GsonUtils.toJSONString(listBaseResponse.data));
List<ForceDownloadData> APPlist = listBaseResponse.data;
JGYUtils.getInstance().installTestAPK(APPlist);
} else {
@@ -925,7 +934,7 @@ public class NetInterfaceManager {
if (forceDownloadBean.code == OK) {
cacheHelper.getAsString(UrlAddress.GET_FORCE_INSTALL_LIST);
List<ForceDownloadData> forceDownloadData = forceDownloadBean.data;
cacheHelper.put(UrlAddress.GET_FORCE_INSTALL_LIST, GsonUtils.toJsonString(forceDownloadData));
cacheHelper.put(UrlAddress.GET_FORCE_INSTALL_LIST, GsonUtils.toJSONString(forceDownloadData));
Aria.download(this).resumeAllTask();
JGYUtils.getInstance().forceDownload(forceDownloadData);
List<String> forceApp = forceDownloadData.stream().map(ForceDownloadData::getApp_package).collect(Collectors.toList());
@@ -1008,7 +1017,7 @@ public class NetInterfaceManager {
Log.e("getDefaultDesktop", "onNext: " + baseResponse);
if (baseResponse.code == OK) {
ForceDownloadData desktopInfo = baseResponse.data;
String jsonString = GsonUtils.toJsonString(desktopInfo);
String jsonString = GsonUtils.toJSONString(desktopInfo);
JSONObject data = JSON.parseObject(jsonString);
cacheHelper.put(UrlAddress.GET_DESKTOP, jsonString);
JGYUtils.getInstance().installDesktop(data);
@@ -1099,7 +1108,7 @@ public class NetInterfaceManager {
Log.e("setLogoImg", "onNext: " + logoImgBaseResponse.data);
if (logoImgBaseResponse.code == OK) {
LogoImg logoImg = logoImgBaseResponse.data;
cacheHelper.put(UrlAddress.GET_LOGO_IMG, GsonUtils.toJsonString(logoImg));
cacheHelper.put(UrlAddress.GET_LOGO_IMG, GsonUtils.toJSONString(logoImg));
String file_url = logoImg.getFile_url();
String file_md5 = logoImg.getFile_md5();
String batch = logoImg.getBatch();
@@ -1165,7 +1174,7 @@ public class NetInterfaceManager {
Log.e("getDeveloper", "onNext: " + baseResponse);
if (baseResponse.code == OK) {
DeveloperBean developerBean = baseResponse.data;
cacheHelper.put(UrlAddress.GET_DEVELOPER, GsonUtils.toJsonString(developerBean));
cacheHelper.put(UrlAddress.GET_DEVELOPER, GsonUtils.toJSONString(developerBean));
int is_developer = developerBean.getIs_developer();
Log.e("getDeveloper", "onNext: " + is_developer);
//后台1是0否 底层0是1否
@@ -1231,7 +1240,7 @@ public class NetInterfaceManager {
Log.e("getROMApp", "onNext: " + baseResponse);
if (baseResponse.code == OK) {
CustomROMApp customROMApp = baseResponse.data;
cacheHelper.put(UrlAddress.GET_ROM_APP, GsonUtils.toJsonString(customROMApp));
cacheHelper.put(UrlAddress.GET_ROM_APP, GsonUtils.toJSONString(customROMApp));
String packageName = customROMApp.getPackage_name();
Settings.System.putString(mContext.getContentResolver(), "jgy_customromapp", packageName);
} else {
@@ -1329,7 +1338,7 @@ public class NetInterfaceManager {
String data = response.data.toString();
if (!TextUtils.isEmpty(data)) {
List<String> newList = Arrays.asList(data.split(","));//新的list
cacheHelper.put(UrlAddress.GET_HIDE_DESKTOPICON, GsonUtils.toJsonString(newList));
cacheHelper.put(UrlAddress.GET_HIDE_DESKTOPICON, GsonUtils.toJSONString(newList));
PackageManager pm = mContext.getPackageManager();
for (String pack : newList) {
try {
@@ -1408,7 +1417,7 @@ public class NetInterfaceManager {
public void onNext(@NonNull NetAndLaunchBean netAndLaunchBean) {
Log.e("getAppAutoStart", "onNext: " + netAndLaunchBean.toString());
if (netAndLaunchBean.getCode() == OK) {
cacheHelper.put(UrlAddress.NET_AND_LAUNCH_API, GsonUtils.toJsonString(netAndLaunchBean));
cacheHelper.put(UrlAddress.NET_AND_LAUNCH_API, GsonUtils.toJSONString(netAndLaunchBean));
JGYUtils.getInstance().setNetAndlaunch(netAndLaunchBean);
} else {
cacheHelper.put(UrlAddress.NET_AND_LAUNCH_API, "");
@@ -1488,7 +1497,7 @@ public class NetInterfaceManager {
Log.e("getAppIDControl", "onNext: " + baseResponse);
if (baseResponse.code == OK) {
AppID appID = baseResponse.data;
cacheHelper.put(UrlAddress.GET_APPID, GsonUtils.toJsonString(appID));
cacheHelper.put(UrlAddress.GET_APPID, GsonUtils.toJSONString(appID));
String ids = appID.getIds();
String packages = appID.getPackages();
if (appID == null) {
@@ -1518,6 +1527,63 @@ public class NetInterfaceManager {
};
}
public void getSnAppAttr(BehaviorSubject<ActivityEvent> lifecycle, onCompleteCallback callback) {
getSnAppAttrObservable()
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(getSnAppAttrObserver(callback));
}
public void getSnAppAttr(onCompleteCallback callback) {
getSnAppAttrObservable()
.subscribe(getSnAppAttrObserver(callback));
}
public void getSnAppAttr() {
getSnAppAttrObservable()
.subscribe(getSnAppAttrObserver(null));
}
public Observer<BaseResponse<List<AppAttr>>> getSnAppAttrObserver(onCompleteCallback onCompleteCallback) {
return new Observer<BaseResponse<List<AppAttr>>>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
Log.e("getSnAppAttr", "onSubscribe: ");
}
@Override
public void onNext(@NonNull BaseResponse<List<AppAttr>> baseResponse) {
Log.e("getSnAppAttr", "onNext: " + baseResponse);
if (baseResponse.code == 200) {
List<AppAttr> appAttrList = baseResponse.data;
if (appAttrList == null || appAttrList.size() == 0) {
Log.e("getSnAppAttr", "onNext: appAttrList is empty");
Settings.Global.putString(mContext.getContentResolver(), CommonConfig.AOLE_ACTION_DISABLE_APP, "null");
} else {
String disableApp = appAttrList.stream()
.filter(appAttr -> appAttr.getIs_open() == 0)
.map(AppAttr::getApp_package)
.collect(Collectors.joining(","));
Log.e("getSnAppAttr", "onNext: disableApp = " + disableApp);
Settings.Global.putString(mContext.getContentResolver(), CommonConfig.AOLE_ACTION_DISABLE_APP, disableApp);
}
} else {
Settings.Global.putString(mContext.getContentResolver(), CommonConfig.AOLE_ACTION_DISABLE_APP, "null");
}
}
@Override
public void onError(@NonNull Throwable e) {
Log.e("getSnAppAttr", "onError: " + e.getMessage());
onComplete();
}
@Override
public void onComplete() {
Log.e("getSnAppAttr", "onComplete: ");
}
};
}
public void setSystemSetting(boolean refresh, BehaviorSubject<ActivityEvent> lifecycle, onCompleteCallback callback) {
ConnectMode connectMode = ConnectMode.ONE_HOUR;
@@ -1556,7 +1622,7 @@ public class NetInterfaceManager {
Log.e("setSystemSetting", "onNext: " + baseResponse);
SPUtils.put(mContext, CommonConfig.JGY_FIRST_CONNECT, 1);
if (baseResponse.code == OK) {
String data = GsonUtils.toJsonString(baseResponse.data);
String data = GsonUtils.toJSONString(baseResponse.data);
Log.e("setSystemSetting", "onNext: " + data);
cacheHelper.put(UrlAddress.GET_FIRMWARE, data);
//结果保存到本地
@@ -1627,7 +1693,7 @@ public class NetInterfaceManager {
Log.e("getEBagCode", "onNext: " + baseResponse);
if (baseResponse.code == OK) {
EBagCode eBagCode = baseResponse.data;
cacheHelper.put(UrlAddress.GET_EBAG_CODE, GsonUtils.toJsonString(eBagCode));
cacheHelper.put(UrlAddress.GET_EBAG_CODE, GsonUtils.toJSONString(eBagCode));
String ebagCode = eBagCode.getEbagCode();
SPUtils.put(mContext, "ebagCode", ebagCode);
} else {
@@ -1787,7 +1853,7 @@ public class NetInterfaceManager {
Log.e("getStudesInfo", "onNext: " + studentsInfoBaseResponse.data);
if (studentsInfoBaseResponse.code == OK) {
studesInfoListener.setStudentsInfo(studentsInfoBaseResponse.data);
cacheHelper.put(UrlAddress.GET_STUDENTS_INFO, GsonUtils.toJsonString(studentsInfoBaseResponse.data));
cacheHelper.put(UrlAddress.GET_STUDENTS_INFO, GsonUtils.toJSONString(studentsInfoBaseResponse.data));
} else {
cacheHelper.put(UrlAddress.GET_STUDENTS_INFO, "");
Log.e("getStudesInfo", "onNext: " + studentsInfoBaseResponse.toString());
@@ -1991,7 +2057,7 @@ public class NetInterfaceManager {
public void onNext(@NonNull BaseResponse<Batch> response) {
if (response.code == OK) {
String batch = response.data.getBatch();
cacheHelper.put(CommonConfig.DEVICES_TAG, GsonUtils.toJsonString(response.data));
cacheHelper.put(CommonConfig.DEVICES_TAG, GsonUtils.toJSONString(response.data));
Log.e(TAG + ":" + "setPushTags", "onNext: " + batch);
if (!TextUtils.isEmpty(batch)) {
set.add(batch);
@@ -2359,7 +2425,7 @@ public class NetInterfaceManager {
private void setBrowserBookmarks(BaseResponse<BrowserBookmarks> browserBookmarksBaseResponse) {
if (browserBookmarksBaseResponse.code == 200) {
BrowserBookmarks browserBookmarks = browserBookmarksBaseResponse.data;
cacheHelper.put(UrlAddress.SET_HOMEPAG_TAG, GsonUtils.toJsonString(browserBookmarks));
cacheHelper.put(UrlAddress.SET_HOMEPAG_TAG, GsonUtils.toJSONString(browserBookmarks));
//主页不包含白名单添加进去
String homepagURL = browserBookmarks.getHomepage();
@@ -2453,7 +2519,7 @@ public class NetInterfaceManager {
//黑白名单
if (browserDataBaseResponse.code == 200) {
BrowserData browserData = browserDataBaseResponse.data;
cacheHelper.put(UrlAddress.SET_BROWSER_LIST, GsonUtils.toJsonString(browserData));
cacheHelper.put(UrlAddress.SET_BROWSER_LIST, GsonUtils.toJSONString(browserData));
String white = browserData.getWhite();
if (!TextUtils.isEmpty(white)) {
if (!TextUtils.isEmpty(homePage) && !white.contains(homePage)) {
@@ -2540,7 +2606,7 @@ public class NetInterfaceManager {
Log.e("getScreenLockState", "onNext: " + response);
if (response.code == OK) {
ScreenLockState screenLockState = response.data;
cacheHelper.put(UrlAddress.GET_LOCK_SCREEN_STATE, GsonUtils.toJsonString(screenLockState));
cacheHelper.put(UrlAddress.GET_LOCK_SCREEN_STATE, GsonUtils.toJSONString(screenLockState));
int is_screen_lock = screenLockState.getIs_screen_lock();
String name = screenLockState.getName();
listener.setScreenLockState(is_screen_lock == 1, name);
@@ -2617,7 +2683,7 @@ public class NetInterfaceManager {
Log.e("getAppLimit", "onNext: " + baseResponse);
if (baseResponse.code == 200) {
AppLimit appLimit = baseResponse.data;
cacheHelper.put(UrlAddress.SET_WHITE_PACKAGE_LIST, GsonUtils.toJsonString(appLimit));
cacheHelper.put(UrlAddress.SET_WHITE_PACKAGE_LIST, GsonUtils.toJSONString(appLimit));
String result = appLimit.getResult();
//开机图标 只记录后台传的包名
boolean write = Settings.System.putString(mContext.getContentResolver(), JGYActions.ACTION_JGY_SHORTCUTLIST, result);
@@ -2701,7 +2767,7 @@ public class NetInterfaceManager {
Log.e("getAllAppList", "onNext: " + listBaseResponse);
if (listBaseResponse.code == 200) {
List<AppListInfo> appListInfos = listBaseResponse.data;
cacheHelper.put(UrlAddress.GET_ALL_APP, GsonUtils.toJsonString(appListInfos));
cacheHelper.put(UrlAddress.GET_ALL_APP, GsonUtils.toJSONString(appListInfos));
getAppAutoStartUpdateAndNet(appListInfos);
} else {
cacheHelper.put(UrlAddress.GET_ALL_APP, "");
@@ -2922,7 +2988,7 @@ public class NetInterfaceManager {
Log.e("getTopApp", "onNext: " + response.data);
if (response.code == OK) {
String app_package = response.data.getApp_package();
cacheHelper.put(UrlAddress.GET_TOP_APP_CONTROL, GsonUtils.toJsonString(response.data));
cacheHelper.put(UrlAddress.GET_TOP_APP_CONTROL, GsonUtils.toJSONString(response.data));
ForegroundAppUtil.setTopAppClass(mContext, app_package);
Settings.Global.putString(mContext.getContentResolver(), ForegroundAppUtil.TOPAPP_KEY, app_package);
ForegroundAppUtil.openTopApp(mContext);
@@ -3069,7 +3135,7 @@ public class NetInterfaceManager {
Log.e("getPoweroffTime", "onNext: " + listBaseResponse);
if (listBaseResponse.code == 200) {
List<PoweroffBean> poweroffBeanList = listBaseResponse.data;
String poweroffTime = GsonUtils.toJsonString(poweroffBeanList);
String poweroffTime = GsonUtils.toJSONString(poweroffBeanList);
cacheHelper.put(UrlAddress.GET_POWEROFF_TIME, poweroffTime);
mMMKV.encode("poweroffTime", poweroffTime);
} else {
@@ -3146,7 +3212,7 @@ public class NetInterfaceManager {
public void onNext(BaseResponse<List<WiFiAlias>> listBaseResponse) {
Log.e("getWiFiPasswd", "onNext: " + listBaseResponse);
if (listBaseResponse.code == OK) {
cacheHelper.put(UrlAddress.GET_WIFI_ALIAS_PW, GsonUtils.toJsonString(listBaseResponse.data));
cacheHelper.put(UrlAddress.GET_WIFI_ALIAS_PW, GsonUtils.toJSONString(listBaseResponse.data));
WiFiUtils.saveWiFiPasswd(listBaseResponse.data);
mMMKV.encode("WiFiPassword", parseString(new Gson().toJson(listBaseResponse.data)).toString());
} else {

View File

@@ -22,6 +22,8 @@ public class UrlAddress {
public static final String GET_ROM_APP = "And/getFirmwareApp";
/*获取应用升级自启*/
public static final String NET_AND_LAUNCH_API = "automatic/get";
/*获取禁用的app包名*/
public static final String GET_SN_APP_ATTR = "automatic/getSnAppAttr";
/*获取顶部app管控*/
public static final String GET_TOP_APP_CONTROL = "Sn/getSnAppControl";
/*APPID管控*/

View File

@@ -0,0 +1,18 @@
package com.aoleyun.sn.network.api.get;
import com.aoleyun.sn.bean.AppAttr;
import com.aoleyun.sn.bean.BaseResponse;
import com.aoleyun.sn.network.UrlAddress;
import java.util.List;
import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.GET;
import retrofit2.http.Query;
public interface SnAppAttrApi {
@GET(UrlAddress.GET_SN_APP_ATTR)
Observable<BaseResponse<List<AppAttr>>> getSnAppAttr(
@Query("sn") String sn
);
}

View File

@@ -5,9 +5,11 @@ import android.content.Intent;
import android.os.IBinder;
import android.os.RemoteException;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log;
import com.aoleyun.sn.SystemInfoInterface;
import com.aoleyun.sn.comm.CommonConfig;
import com.aoleyun.sn.comm.PackageNames;
import com.aoleyun.sn.utils.CacheUtils;
import com.aoleyun.sn.utils.ForegroundAppUtil;
@@ -15,6 +17,8 @@ import com.aoleyun.sn.utils.JGYUtils;
import com.aoleyun.sn.utils.SPUtils;
import com.aoleyun.sn.utils.Utils;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class RemoteService extends Service {
@@ -89,5 +93,16 @@ public class RemoteService extends Service {
}
}
@Override
public List<String> getDisableApp() throws RemoteException {
String disable_app_list = Settings.Global.getString(getContentResolver(), CommonConfig.AOLE_ACTION_DISABLE_APP);
Log.e(TAG, "getDisableApp: " + disable_app_list);
if (TextUtils.isEmpty(disable_app_list)) {
return new ArrayList<>();
} else {
return new ArrayList<>(Arrays.asList(disable_app_list.split(",")));
}
}
};
}

View File

@@ -60,6 +60,8 @@ public class MainSContact {
void getDesktopIcon();
/*获取应用自启升级和网络权限管理*/
void getAppAutoStartUpdateAndNet();
/*获取禁用app*/
void getSnAppAttr();
/*获取第三方应用子页面ID连网限制*/
void getAppIDControl();
/*获取第三方应用内部网页跳转屏蔽*/
@@ -134,6 +136,8 @@ public class MainSContact {
void getDesktopIconFinish();
/*获取应用自启升级和网络权限管理结束*/
void getAppAutoStartUpdateAndNetFinish();
/*获取禁用app*/
void getSnAppAttrFinish();
/*获取第三方应用子页面ID连网限制结束*/
void getAppIDControlFinish();
/*获取第三方应用内部网页跳转屏蔽结束*/

View File

@@ -374,6 +374,16 @@ public class MainSPresenter implements MainSContact.Presenter {
});
}
@Override
public void getSnAppAttr() {
NetInterfaceManager.getInstance().getSnAppAttr(new NetInterfaceManager.onCompleteCallback() {
@Override
public void onComplete() {
mView.getSnAppAttrFinish();
}
});
}
@Override
public void getAppIDControl() {
NetInterfaceManager.getInstance()

View File

@@ -1022,6 +1022,11 @@ public class MainService extends Service implements MainSContact.MainView, Netwo
@Override
public void getAppAutoStartUpdateAndNetFinish() {
mPresenter.getSnAppAttr();
}
@Override
public void getSnAppAttrFinish() {
mPresenter.getAppIDControl();
}

View File

@@ -30,6 +30,7 @@ import com.aoleyun.sn.bean.ScreenLockState;
import com.aoleyun.sn.comm.CommonConfig;
import com.aoleyun.sn.comm.JGYActions;
import com.aoleyun.sn.disklrucache.CacheHelper;
import com.aoleyun.sn.gson.GsonUtils;
import com.aoleyun.sn.gson.NullStringToEmptyAdapterFactory;
import com.aoleyun.sn.manager.MapManager;
import com.aoleyun.sn.network.NetInterfaceManager;
@@ -43,7 +44,6 @@ import com.aoleyun.sn.utils.BatteryUtils;
import com.aoleyun.sn.utils.CacheUtils;
import com.aoleyun.sn.utils.CmdUtil;
import com.aoleyun.sn.utils.ForegroundAppUtil;
import com.aoleyun.sn.utils.GsonUtils;
import com.aoleyun.sn.utils.JGYUtils;
import com.aoleyun.sn.utils.MySQLData;
import com.aoleyun.sn.utils.SPUtils;
@@ -182,8 +182,12 @@ public class MessageReceiver extends XGPushBaseReceiver {
private final String CLEAN_MEMORY = "47";
/*运行日志设置*/
private final String SN_LOG_SETTING = "48";
/*禁止应用打开*/
private final String DISABLE_APP_USAGE = "51";
/*上传电池信息*/
private final String INFO_BATTERY_INFO = "53";
/*判断是否更新桌面*/
private final String UPDATE_DESKTOP = "56";
private Context mContext;
@@ -802,13 +806,33 @@ public class MessageReceiver extends XGPushBaseReceiver {
case SN_LOG_SETTING:
senSNLogFile(extras);
break;
case DISABLE_APP_USAGE:
disableApp(content, extras);
break;
case INFO_BATTERY_INFO:
getBatteryInfo(context);
break;
case UPDATE_DESKTOP:
break;
default:
}
}
private void disableApp(String content, String extras) {
JsonObject jsonObject = GsonUtils.getJsonObject(extras);
try {
String packages = jsonObject.get("package").getAsString();
int is_open = jsonObject.get("is_open").getAsInt();
if (is_open == 0) {
JGYUtils.getInstance().killBackgroundProcesses(packages);
}
} catch (Exception e) {
Log.e(TAG, "disableApp: " + e.getMessage());
}
Handler.getMain().postDelayed(() -> NetInterfaceManager.getInstance().getSnAppAttr(), 1234);
}
private void setLock_screen(int state, String name) {
if (ServiceAliveUtils.isServiceAlive(mContext)) {
mContext.startService(new Intent(mContext, MainService.class));
@@ -816,7 +840,7 @@ public class MessageReceiver extends XGPushBaseReceiver {
ScreenLockState screenLockState = new ScreenLockState();
screenLockState.setIs_screen_lock(state);
screenLockState.setName(name);
cacheHelper.put(UrlAddress.GET_LOCK_SCREEN_STATE, GsonUtils.toJsonString(screenLockState));
cacheHelper.put(UrlAddress.GET_LOCK_SCREEN_STATE, GsonUtils.toJSONString(screenLockState));
Intent intent = new Intent();
intent.putExtra("name", name);
if (state == 1) {

View File

@@ -944,6 +944,30 @@ public class ApkUtils {
this.add("com.android.calculator2");
this.add("com.qi.TFSystem");
this.add("com.qi.appstore");
this.add("com.wyt.evaluating");
this.add("com.wyt.picturebook");
this.add("com.hhdd.kadahd");
this.add("com.wyt.onlinedic");
this.add("com.ximalaya.ting.kid");
this.add("com.baidu.duershow.child");
this.add("com.gl.souti");
this.add("com.ihuman.pinyin");
this.add("com.hongen.app.word");
this.add("com.wyt.parents_assistant");
this.add("com.wyt.forbitpoint");
this.add("com.wyt.lessonhelper");
this.add("com.wyt.wangkexueximvvm");
this.add("com.wyt.clicktoread");
this.add("com.robot.app_ai");
this.add("com.wyt.appstore");
this.add("air.com.wyt.GLLearnMain");
this.add("com.wyt.examcenter");
this.add("com.gl.compositioncorrection");
this.add("com.gl.compositioncorrectionen");
this.add("cn.wps.moffice_eng");
this.add("com.ckl.launcher");
}};
public static void showAllAPP(Context context) {

View File

@@ -1,28 +0,0 @@
package com.aoleyun.sn.utils;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.reflect.TypeToken;
import java.io.Serializable;
import java.lang.reflect.Type;
public class GsonUtils {
public static JsonObject getJsonObject(String jsonString) {
JsonObject jsonObject = JsonParser.parseString(jsonString).getAsJsonObject();
return jsonObject;
}
// TODO: 2022/3/31 暂时没有实现
public static <T> T getJsonFromType(String jsonString, Class clazz) {
Gson gson = new Gson();
T t = (T) gson.fromJson(jsonString, clazz);
return t;
}
public static String toJsonString(Object o) {
return new Gson().toJson(o);
}
}

View File

@@ -1120,10 +1120,12 @@ public class JGYUtils {
this.add("com.calendar.uiui");
this.add("com.alarmclock.uiui");
this.add("com.uiui.videoplayer");
}};
HashSet<String> pkgSet = new HashSet<>(Arrays.asList(packageList.split(",")));
pkgSet.addAll(packages);
pkgSet.addAll(ApkUtils.desktopAPP);
pkgSet.addAll(ApkUtils.aoleyunAPP);
pkgSet.addAll(ApkUtils.aihuaApp);
pkgSet.removeIf(TextUtils::isEmpty);
String aole_app_forbid = String.join(",", pkgSet);
Log.e(TAG, "writeAppPackageList: " + aole_app_forbid);
@@ -1799,18 +1801,23 @@ public class JGYUtils {
}
public void removeTask(String packageName) {
List<ActivityManager.RecentTaskInfo> list = getRecentTasks(ActivityManager.getMaxRecentTasksStatic(), getCurrentUserId());
HashMap<String, Integer> taskMap = new HashMap<>();
for (ActivityManager.RecentTaskInfo info : list) {
taskMap.put(info.realActivity.getPackageName(), info.id);
}
try {
ActivityManagerNative.getDefault().removeTask(taskMap.get(packageName));
} catch (RemoteException e) {
e.printStackTrace();
Log.e(TAG, "removeTask: " + e.getMessage());
} catch (NullPointerException e) {
Log.e(TAG, "removeTask: " + e.getMessage());
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.P) {
List<ActivityManager.RecentTaskInfo> list = getRecentTasks(ActivityManager.getMaxRecentTasksStatic(), getCurrentUserId());
HashMap<String, Integer> taskMap = new HashMap<>();
for (ActivityManager.RecentTaskInfo info : list) {
taskMap.put(info.realActivity.getPackageName(), info.id);
}
try {
ActivityManagerNative.getDefault().removeTask(taskMap.get(packageName));
} catch (RemoteException e) {
e.printStackTrace();
Log.e(TAG, "removeTask: " + e.getMessage());
} catch (NullPointerException e) {
Log.e(TAG, "removeTask: " + e.getMessage());
}
} else {
ActivityManager activityManager = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE);
// TODO: 2022/10/25
}
}