Merge branch 'master' into allwinner

# Conflicts:
#	app/src/main/java/com/aoleyun/sn/network/NetInterfaceManager.java
#	app/src/main/java/com/aoleyun/sn/push/PushManager.java
This commit is contained in:
2025-06-16 10:46:41 +08:00
14 changed files with 474 additions and 113 deletions

View File

@@ -0,0 +1,174 @@
package com.aoleyun.sn.bean;
import com.google.gson.annotations.SerializedName;
import java.io.Serializable;
public class ApkInfoPush implements Serializable {
private static final long serialVersionUID = 1566912665439013710L;
int app_id;
String app_name;
@SerializedName(value = "package_name", alternate = {"app_package", "package"})
String package_name;
String app_version_name;
long app_version_code;
long app_size;
String app_url;
String app_img;
String app_md5;
int app_attribution;
int app_forceinstall;
int is_auto;
int is_network;
int is_slide;
int is_upgrade;
int is_appstore;
int is_notification;
int is_dynamic_perm;
public int getApp_id() {
return app_id;
}
public void setApp_id(int app_id) {
this.app_id = app_id;
}
public String getApp_name() {
return app_name;
}
public void setApp_name(String app_name) {
this.app_name = app_name;
}
public String getPackage_name() {
return package_name;
}
public void setPackage_name(String package_name) {
this.package_name = package_name;
}
public String getApp_version_name() {
return app_version_name;
}
public void setApp_version_name(String app_version_name) {
this.app_version_name = app_version_name;
}
public long getApp_version_code() {
return app_version_code;
}
public void setApp_version_code(long app_version_code) {
this.app_version_code = app_version_code;
}
public long getApp_size() {
return app_size;
}
public void setApp_size(long app_size) {
this.app_size = app_size;
}
public String getApp_url() {
return app_url;
}
public void setApp_url(String app_url) {
this.app_url = app_url;
}
public String getApp_img() {
return app_img;
}
public void setApp_img(String app_img) {
this.app_img = app_img;
}
public String getApp_md5() {
return app_md5;
}
public void setApp_md5(String app_md5) {
this.app_md5 = app_md5;
}
public int getApp_attribution() {
return app_attribution;
}
public void setApp_attribution(int app_attribution) {
this.app_attribution = app_attribution;
}
public int getApp_forceinstall() {
return app_forceinstall;
}
public void setApp_forceinstall(int app_forceinstall) {
this.app_forceinstall = app_forceinstall;
}
public int getIs_auto() {
return is_auto;
}
public void setIs_auto(int is_auto) {
this.is_auto = is_auto;
}
public int getIs_network() {
return is_network;
}
public void setIs_network(int is_network) {
this.is_network = is_network;
}
public int getIs_slide() {
return is_slide;
}
public void setIs_slide(int is_slide) {
this.is_slide = is_slide;
}
public int getIs_upgrade() {
return is_upgrade;
}
public void setIs_upgrade(int is_upgrade) {
this.is_upgrade = is_upgrade;
}
public int getIs_appstore() {
return is_appstore;
}
public void setIs_appstore(int is_appstore) {
this.is_appstore = is_appstore;
}
public int getIs_notification() {
return is_notification;
}
public void setIs_notification(int is_notification) {
this.is_notification = is_notification;
}
public int getIs_dynamic_perm() {
return is_dynamic_perm;
}
public void setIs_dynamic_perm(int is_dynamic_perm) {
this.is_dynamic_perm = is_dynamic_perm;
}
}

View File

@@ -1,22 +1,15 @@
package com.aoleyun.sn.bean;
import java.io.Serializable;
import java.util.List;
import java.util.Set;
public class Batch implements Serializable {
private static final long serialVersionUID = -1762804079800707443L;
int id;
String batch;
int admin_id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
Set<String> group_en_name;
public String getBatch() {
return batch;
@@ -26,11 +19,11 @@ public class Batch implements Serializable {
this.batch = batch;
}
public int getAdmin_id() {
return admin_id;
public Set<String> getGroup_en_name() {
return group_en_name;
}
public void setAdmin_id(int admin_id) {
this.admin_id = admin_id;
public void setGroup_en_name(Set<String> group_en_name) {
this.group_en_name = group_en_name;
}
}

View File

@@ -0,0 +1,64 @@
package com.aoleyun.sn.bean;
import java.io.Serializable;
public class ElectronicFenceInfo implements Serializable {
private static final long serialVersionUID = 3539332214940698873L;
int id;
String name;
long longitude;
long latitude;
/*定位效验1是0否*/
int is_verify_location;
/*半径 米*/
int distance;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public long getLongitude() {
return longitude;
}
public void setLongitude(long longitude) {
this.longitude = longitude;
}
public long getLatitude() {
return latitude;
}
public void setLatitude(long latitude) {
this.latitude = latitude;
}
public int getIs_verify_location() {
return is_verify_location;
}
public void setIs_verify_location(int is_verify_location) {
this.is_verify_location = is_verify_location;
}
public int getDistance() {
return distance;
}
public void setDistance(int distance) {
this.distance = distance;
}
}

View File

@@ -61,6 +61,8 @@ public class CommonConfig {
public final static String LAST_CHECK_ALL_UPDATE_TIME = "lastCheckAllUpdateTime";
/*获取设备的标签*/
public final static String DEVICES_TAG = "Aoleyun_devices_tpush_tag";
/*分组标签*/
public final static String DEVICES_GROUP_TAG = "Aoleyun_devices_tpush_group_tag";
/*上次获取标签的时间*/
public final static String GET_DEVICES_TAG_LASTTIME = "Aoleyun_devices_tag_last_time";
/*专注模式刷新*/

View File

@@ -5,6 +5,7 @@ import android.content.Context;
import android.provider.Settings;
import android.util.Log;
import com.aoleyun.sn.bean.ElectronicFenceInfo;
import com.aoleyun.sn.utils.SPUtils;
import com.baidu.location.BDAbstractLocationListener;
import com.baidu.location.BDLocation;
@@ -377,7 +378,7 @@ public class MapManager {
}
};
public void createClientFence() {
public void createClientFence(ElectronicFenceInfo fenceInfo) {
// 轨迹服务ID
long serviceId = 241868;
// 设备标识

View File

@@ -72,7 +72,7 @@ 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.SnApi;
import com.aoleyun.sn.network.api.get.CloudLessonApi;
import com.aoleyun.sn.network.api.get.CloudLessonAppApi;
import com.aoleyun.sn.network.api.get.DefaultAppApi;
@@ -601,12 +601,20 @@ public class NetInterfaceManager {
}
public Observable<BaseResponse<List<ForceDownloadData>>> getTestUpdateObservable() {
return mRetrofit.create(CheckTestUpdateApi.class)
return mRetrofit.create(SnApi.class)
.getTestUpdate(Utils.getSerial(mContext))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
public Observable<BaseResponse> geElectronicFenceObservable() {
return mRetrofit.create(SnApi.class)
.geElectronicFence(Utils.getSerial(mContext))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
public Observable<BaseResponse<SnTimeControl>> getSnTimeObservable() {
return mRetrofit.create(SnTimeControlApi.class)
.getSnTimeControl(Utils.getSerial(mContext))
@@ -1200,55 +1208,93 @@ public class NetInterfaceManager {
});
}
public void getForceDownload(boolean refresh, BehaviorSubject<ActivityEvent> lifecycle, onCompleteCallback callback) {
ConnectMode connectMode = ConnectMode.DEFAULT;
if (refresh) {
connectMode = ConnectMode.DEFAULT;
}
if (ConnectManager.getInstance().isNeedConnect(UrlAddress.GET_FORCE_INSTALL_LIST, connectMode)) {
getForceDownload(lifecycle, callback);
} else {
String jsonString = cacheHelper.getAsString(UrlAddress.GET_FORCE_INSTALL_LIST);
//为 "" 是已经请求成功的
if (jsonString == null) {
getForceDownload(lifecycle, callback);
} else {
Gson gson = new Gson();
Type listType = new TypeToken<List<ForceDownloadData>>() {
}.getType();
List<ForceDownloadData> forceDownloadDataList = gson.fromJson(jsonString, listType);
if (forceDownloadDataList != null) {
JgyUtils.getInstance().forceDownload(forceDownloadDataList);
List<String> forceApp = forceDownloadDataList.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()) {
CubeMdmManager cubeMdmManager = (CubeMdmManager) mContext.getSystemService("cube_mdm");
cubeMdmManager.setForbidUnInstallPackageList(forceApp);
public void geElectronicFence(BehaviorSubject<ActivityEvent> lifecycle, onCompleteCallback callback) {
geElectronicFenceObservable()
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
Log.e("geElectronicFence", "onSubscribe: ");
}
}
callback.onComplete();
}
}
@Override
public void onNext(@NonNull BaseResponse baseResponse) {
Log.e("geElectronicFence", "onNext: " + baseResponse);
}
@Override
public void onError(@NonNull Throwable e) {
Log.e("geElectronicFence", "onError: " + e.getMessage());
if (callback != null) callback.onComplete();
}
@Override
public void onComplete() {
Log.e("geElectronicFence", "onComplete: ");
if (callback != null) callback.onComplete();
}
});
}
public void getForceDownload(BehaviorSubject<ActivityEvent> lifecycle, onCompleteCallback callback) {
getForceDownloadObservable()
// getForceDownloadObservable()
// .compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
// .subscribe(getForceDownloadObserver(callback));
Observable.zip(getForceDownloadObservable(), getGroupForceDownloadObservable(), new BiFunction<BaseResponse<List<ForceDownloadData>>,
BaseResponse<List<ForceDownloadData>>, List<ForceDownloadData>>() {
@Override
public List<ForceDownloadData> apply(BaseResponse<List<ForceDownloadData>> listBaseResponse, BaseResponse<List<ForceDownloadData>> listBaseResponse2) throws Throwable {
List<ForceDownloadData> forceDownloadData = new ArrayList<>();
if (listBaseResponse.code == 200) forceDownloadData.addAll(listBaseResponse.data);
if (listBaseResponse2.code == 200) forceDownloadData.addAll(listBaseResponse2.data);
return forceDownloadData;
}
})
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(getForceDownloadObserver(callback));
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(getForceDownloadListObserver(callback));
}
public void getForceDownload(onCompleteCallback callback) {
getForceDownloadObservable()
.subscribe(getForceDownloadObserver(callback));
// getForceDownloadObservable()
// .subscribe(getForceDownloadObserver(callback));
Observable.zip(getForceDownloadObservable(), getGroupForceDownloadObservable(), new BiFunction<BaseResponse<List<ForceDownloadData>>,
BaseResponse<List<ForceDownloadData>>, List<ForceDownloadData>>() {
@Override
public List<ForceDownloadData> apply(BaseResponse<List<ForceDownloadData>> listBaseResponse, BaseResponse<List<ForceDownloadData>> listBaseResponse2) throws Throwable {
List<ForceDownloadData> forceDownloadData = new ArrayList<>();
if (listBaseResponse.code == 200) forceDownloadData.addAll(listBaseResponse.data);
if (listBaseResponse2.code == 200) forceDownloadData.addAll(listBaseResponse2.data);
return forceDownloadData;
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(getForceDownloadListObserver(callback));
}
public void getForceDownload() {
getForceDownloadObservable()
.subscribe(getForceDownloadObserver(null));
// getForceDownloadObservable()
// .subscribe(getForceDownloadObserver(null));
Observable.zip(getForceDownloadObservable(), getGroupForceDownloadObservable(), new BiFunction<BaseResponse<List<ForceDownloadData>>,
BaseResponse<List<ForceDownloadData>>, List<ForceDownloadData>>() {
@Override
public List<ForceDownloadData> apply(BaseResponse<List<ForceDownloadData>> listBaseResponse, BaseResponse<List<ForceDownloadData>> listBaseResponse2) throws Throwable {
List<ForceDownloadData> forceDownloadData = new ArrayList<>();
if (listBaseResponse.code == 200) forceDownloadData.addAll(listBaseResponse.data);
if (listBaseResponse2.code == 200) forceDownloadData.addAll(listBaseResponse2.data);
return forceDownloadData;
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(getForceDownloadListObserver(null));
}
@Deprecated
private Observer<BaseResponse<List<ForceDownloadData>>> getForceDownloadObserver(onCompleteCallback callback) {
return new Observer<BaseResponse<List<ForceDownloadData>>>() {
@Override
@@ -1266,8 +1312,7 @@ public class NetInterfaceManager {
Aria.download(this).resumeAllTask();
JgyUtils.getInstance().forceDownload(forceDownloadData);
List<String> forceApp = forceDownloadData.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));
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()) {
CubeMdmManager cubeMdmManager = (CubeMdmManager) mContext.getSystemService("cube_mdm");
@@ -1303,6 +1348,47 @@ public class NetInterfaceManager {
};
}
private Observer<List<ForceDownloadData>> getForceDownloadListObserver(onCompleteCallback callback) {
return new Observer<List<ForceDownloadData>>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
Log.e("getForceDownload", "onSubscribe: ");
}
@Override
public void onNext(@NonNull List<ForceDownloadData> forceDownloadBean) {
Log.e("getForceDownload", "onNext: " + forceDownloadBean);
if (forceDownloadBean != null && !forceDownloadBean.isEmpty()) {
Log.e("getForceDownload", "onNext: getAsString: " + cacheHelper.getAsString(UrlAddress.GET_FORCE_INSTALL_LIST));
cacheHelper.put(UrlAddress.GET_FORCE_INSTALL_LIST, GsonUtils.toJSONString(forceDownloadBean));
Aria.download(this).resumeAllTask();
JgyUtils.getInstance().forceDownload(forceDownloadBean);
List<String> 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);
} else {
cacheHelper.put(UrlAddress.GET_FORCE_INSTALL_LIST, "");
boolean aole_force_app = Settings.System.putString(mContext.getContentResolver(), CommonConfig.AOLE_ACTION_FORCE_APP, "invalid");
Log.e("getForceDownload", "aole_force_app:" + aole_force_app);
}
}
@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(boolean refresh, BehaviorSubject<ActivityEvent> lifecycle, onCompleteCallback callback) {
ConnectMode connectMode = ConnectMode.ONE_MINUTE;
if (refresh) {
@@ -2542,6 +2628,9 @@ public class NetInterfaceManager {
if (response.code == OK) {
cacheHelper.put(UrlAddress.GET_DEVICES_TAGS, GsonUtils.toJSONString(response.data));
String batch = response.data.getBatch();
Set<String> groupTag = response.data.getGroup_en_name();
mMMKV.encode(CommonConfig.DEVICES_GROUP_TAG, groupTag);
tags.addAll(groupTag);
Log.e("setPushTags", "onNext: " + batch);
String lastBatch = mMMKV.decodeString(CommonConfig.DEVICES_TAG, "");
if (!lastBatch.equals(batch)) {
@@ -2561,6 +2650,7 @@ public class NetInterfaceManager {
}
} else {
mMMKV.encode(CommonConfig.DEVICES_TAG, "");
mMMKV.remove(CommonConfig.DEVICES_GROUP_TAG);
cacheHelper.put(UrlAddress.GET_DEVICES_TAGS, "");
if (callback != null)
callback.setPushTag("");
@@ -2573,8 +2663,11 @@ public class NetInterfaceManager {
public void onError(@NonNull Throwable e) {
Log.e("setPushTags", "onError: " + e.getMessage());
String batch = mMMKV.decodeString(CommonConfig.DEVICES_TAG, "");
Log.e("setPushTags", "tagSets: " + batch);
Log.e("setPushTags", "onError: tagSets = " + batch);
Set<String> groupTagSets = mMMKV.decodeStringSet(CommonConfig.DEVICES_GROUP_TAG, new HashSet<>());
Log.e("setPushTags", "onError: groupTagSets = " + groupTagSets);
Set<String> tags = new HashSet<>();
tags.addAll(groupTagSets);
if (!TextUtils.isEmpty(batch)) {
tags.add(batch);
}

View File

@@ -32,6 +32,9 @@ public class UrlAddress {
public static final String CHECK_UPDATE = "Silent/silent";
/*获取测试app*/
public static final String GET_SN_APP_TEST = "Sn/getSnAppTest";
/*电子围栏*/
public static final String GET_SN_EFENCE = "android/sn/efence";
/*应用白名单*/
public static final String SET_WHITE_PACKAGE_LIST = "firmware/index";
/*获取全部应用*/

View File

@@ -10,9 +10,14 @@ import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.GET;
import retrofit2.http.Query;
public interface CheckTestUpdateApi {
public interface SnApi {
@GET(UrlAddress.GET_SN_APP_TEST)
Observable<BaseResponse<List<ForceDownloadData>>> getTestUpdate(
@Query("sn") String sn
);
@GET(UrlAddress.GET_SN_EFENCE)
Observable<BaseResponse> geElectronicFence(
@Query("sn") String sn
);
}

View File

@@ -9,7 +9,9 @@ import java.util.List;
import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;
public interface ForceDownloadApi {
@FormUrlEncoded
@@ -19,11 +21,10 @@ public interface ForceDownloadApi {
@Field("sn") String sn
);
@FormUrlEncoded
@POST(UrlAddress.GROUP_APP_INSTALL_LIST)
@GET(UrlAddress.GROUP_APP_INSTALL_LIST)
Observable<BaseResponse<List<ForceDownloadData>>> getGroupForceDownloadApi(
@Field("key") String key,
@Field("sn") String sn
@Query("key") String key,
@Query("sn") String sn
);
}

View File

@@ -26,6 +26,7 @@ import android.view.WindowManager;
import com.aoleyun.sn.R;
import com.aoleyun.sn.activity.main.MainActivity;
import com.aoleyun.sn.bean.ApkInfoPush;
import com.aoleyun.sn.bean.BaseResponse;
import com.aoleyun.sn.bean.BatteryInfo;
import com.aoleyun.sn.bean.DownloadInfo;
@@ -267,12 +268,19 @@ public class PushManager {
private static final String GROUP_APP_INSTALL = "80";
/*分组应用卸载*/
private static final String GROUP_APP_UNINSTALL = "81";
/*电子围栏*/
private static final String ELECTRONIC_FENCE = "82";
public void setPushContent(String title, String extras) {
switch (title) {
case MSG_DELETE:
Toaster.debugShow("收到管控:应用删除");
deleteApp(extras);
if (!TextUtils.isEmpty(extras)) {
JsonObject jsonObject = GsonUtils.getJsonObject(extras);
String pkg = jsonObject.get("package_name").getAsString();
deleteApp(pkg);
}
break;
case MSG_SETTING:
Toaster.debugShow("收到管控:系统设置");
@@ -342,26 +350,9 @@ public class PushManager {
NetInterfaceManager.getInstance().sendAppUsedTime(random, sendType);
break;
case GET_FORCEDOWNLOADURL:
case GROUP_APP_INSTALL:
Toaster.debugShow("收到管控:应用强制安装");
File file = new File(JgyUtils.getInstance().getDownLoadPath());
if (!file.exists()) {
file.mkdirs();
}
if (TextUtils.isEmpty(extras)) {
Log.e(TAG, "settingNetControl extras is null");
return;
}
JsonObject extra = GsonUtils.getJsonObject(extras);
String app_name = extra.get("app_name").getAsString();
String app_package = extra.get("package").getAsString();
String url = extra.get("url").getAsString();
int versionCode = extra.get("version_code").getAsInt();
String app_id = extra.get("app_id").getAsString();
JsonObject packageObj = new JsonObject();
packageObj.addProperty("app_name", app_name);
packageObj.addProperty("app_package", app_package);
packageObj.addProperty("app_id", app_id);
Utils.ariaDownload(mContext, url, packageObj);
downloadForceInstallApk(extras);
break;
case SET_HOMEPAG_TAG:
Handler.getMain().postDelayed(new Runnable() {
@@ -559,6 +550,7 @@ public class PushManager {
NetInterfaceManager.getInstance().getAppLimit();
break;
case UPDATE_BATCH:
case UPDATE_CHILD_BATCH:
Toaster.debugShow("收到管控:更换批次不恢复出厂设置");
NetInterfaceManager.getInstance().setPushTags();
Aria.download(this).removeAllTask(true);
@@ -687,11 +679,33 @@ public class PushManager {
case GROUP_APP_INSTALL:
break;
case GROUP_APP_UNINSTALL:
Toaster.debugShow("收到管控:应用删除");
if (!TextUtils.isEmpty(extras)) {
JsonObject jsonObject = GsonUtils.getJsonObject(extras);
String pkg = jsonObject.get("app_package").getAsString();
deleteApp(pkg);
}
case ELECTRONIC_FENCE:
break;
default:
}
}
private void downloadForceInstallApk(String extras) {
File file = new File(JgyUtils.getInstance().getDownLoadPath());
if (!file.exists()) {
file.mkdirs();
}
if (TextUtils.isEmpty(extras)) {
Log.e(TAG, "settingNetControl extras is null");
return;
}
ApkInfoPush apkInfoPush = GsonUtils.toJavaObject(extras, ApkInfoPush.class);
JsonObject packageObj = GsonUtils.getJsonObject(GsonUtils.toJSONString(apkInfoPush));
Utils.ariaDownload(mContext, apkInfoPush.getApp_url(), packageObj);
}
private void setWallpaper(String extras) {
NetInterfaceManager.getInstance().getWallpaper();
}
@@ -706,31 +720,20 @@ public class PushManager {
NetInterfaceManager.getInstance().getCloudLessonSettings();
}
private void deleteApp(String extras) {
if (!TextUtils.isEmpty(extras)) {
JsonObject jsonObject = GsonUtils.getJsonObject(extras);
String pkg = jsonObject.get("package_name").getAsString();
if (TextUtils.isEmpty(pkg)) return;
String forceApp = Settings.System.getString(mContext.getContentResolver(), CommonConfig.AOLE_ACTION_FORCE_APP);
if (!TextUtils.isEmpty(forceApp)) {
List<String> forceAppList = new ArrayList<>(Arrays.asList(forceApp.split(",")));
forceAppList.remove(pkg);
if (forceAppList.size() != 0) {
if (JgyUtils.isAllWinnerDevice()) {
CubeMdmManager cubeMdmManager = (CubeMdmManager) mContext.getSystemService("cube_mdm");
cubeMdmManager.setForbidUnInstallPackageList(forceAppList);
}
Settings.System.putString(mContext.getContentResolver(), CommonConfig.AOLE_ACTION_FORCE_APP, String.join(",", forceAppList));
} else {
Settings.System.putString(mContext.getContentResolver(), CommonConfig.AOLE_ACTION_FORCE_APP, "");
if (JgyUtils.isAllWinnerDevice()) {
CubeMdmManager cubeMdmManager = (CubeMdmManager) mContext.getSystemService("cube_mdm");
cubeMdmManager.setForbidUnInstallPackageList(new ArrayList<>());
}
}
private void deleteApp(String pkg) {
Log.e(TAG, "deleteApp: " + pkg);
if (TextUtils.isEmpty(pkg)) return;
String forceApp = Settings.System.getString(mContext.getContentResolver(), CommonConfig.AOLE_ACTION_FORCE_APP);
if (!TextUtils.isEmpty(forceApp)) {
List<String> forceAppList = new ArrayList<>(Arrays.asList(forceApp.split(",")));
forceAppList.remove(pkg);
if (forceAppList.size() != 0) {
Settings.System.putString(mContext.getContentResolver(), CommonConfig.AOLE_ACTION_FORCE_APP, String.join(",", forceAppList));
} else {
Settings.System.putString(mContext.getContentResolver(), CommonConfig.AOLE_ACTION_FORCE_APP, "");
}
ApkUtils.UninstallAPP(mContext, pkg);
}
ApkUtils.UninstallAPP(mContext, pkg);
Handler.getMain().postDelayed(new Runnable() {
@Override
public void run() {

View File

@@ -41,7 +41,8 @@ public class MainSContact {
void getRomApp();
/*获取屏幕锁状态*/
void getScreenLockState();
/*电子围栏*/
void geteFence();
/*分支5 根据批次获取*/
/*获取设备后台设置*/
@@ -129,6 +130,8 @@ public class MainSContact {
void getRomAppFinish();
/*设置屏幕锁状态结束*/
void setScreenLockStateFinish(boolean locked, String tips);
/*获取电子围栏结束*/
void geteFenceFinish();
/*设置设备后台设置*/
void setSystemSetting();

View File

@@ -116,10 +116,13 @@ public class MainSPresenter implements MainSContact.Presenter {
}
});
String tagSets = mMMKV.decodeString(CommonConfig.DEVICES_TAG);
Log.e("setPushTags", "onComplete: tagSets =" + tagSets);
Log.e(TAG, "setPushTags: tagSets =" + tagSets);
Set<String> groupTagSets = mMMKV.decodeStringSet(CommonConfig.DEVICES_GROUP_TAG, new HashSet<>());
Log.e(TAG, "setPushTags: groupTagSets = " + groupTagSets);
String tagstring = cacheHelper.getAsString(UrlAddress.GET_DEVICES_TAGS);
Log.e("setPushTags", "onComplete: tags = " + tagstring);
Log.e(TAG, "setPushTags: tagstring = " + tagstring);
Set<String> tags = new HashSet<>();
tags.addAll(groupTagSets);
if (!TextUtils.isEmpty(tagSets)) {
tags.add(tagSets);
}
@@ -324,6 +327,16 @@ public class MainSPresenter implements MainSContact.Presenter {
});
}
@Override
public void geteFence() {
NetInterfaceManager.getInstance().geElectronicFence(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
@Override
public void onComplete() {
mView.geteFenceFinish();
}
});
}
@Override
public void getSystemSettingBegin() {
//重置设备
@@ -335,7 +348,7 @@ public class MainSPresenter implements MainSContact.Presenter {
@Override
public void getAppLimit() {
NetInterfaceManager.getInstance()
.getAppLimit( getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
.getAppLimit(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
@Override
public void onComplete() {
mView.getAppLimitFinish();
@@ -346,7 +359,7 @@ public class MainSPresenter implements MainSContact.Presenter {
@Override
public void getForceDownload() {
NetInterfaceManager.getInstance()
.getForceDownload(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
.getForceDownload(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
@Override
public void onComplete() {
mView.getForceDownloadFinish();
@@ -492,7 +505,7 @@ public class MainSPresenter implements MainSContact.Presenter {
@Override
public void getSystemSetting() {
NetInterfaceManager.getInstance()
.setSystemSetting( getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
.setSystemSetting(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
@Override
public void onComplete() {
mView.getSystemSettingFinish();

View File

@@ -1214,6 +1214,12 @@ public class MainService extends Service implements MainSContact.MainView, Netwo
SPUtils.put(this, "is_screen_lock", false);
SPUtils.put(this, "screen_tips", "");
}
mPresenter.geteFence();
}
@Override
public void geteFenceFinish() {
}
@Override

View File

@@ -1536,7 +1536,7 @@ public class JgyUtils {
packageInfo = pm.getPackageInfo(app_package, 0);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
Log.e("fht", "forceDownload=" + e.getMessage());
Log.e("forceDownload", "forceDownload=" + e.getMessage());
}
if (packageInfo != null) {
long appVersionCode;
@@ -1546,11 +1546,11 @@ public class JgyUtils {
appVersionCode = packageInfo.versionCode;
}
if (app_version_code > appVersionCode) {
Log.e("fht ", "download URL " + app_url);
Log.e("forceDownload ", "download URL " + app_url);
Utils.ariaDownload(mContext, app_url, jsonObject);
}
} else {
Log.e("fht ", "download URL " + app_url);
Log.e("forceDownload ", "download URL " + app_url);
Utils.ariaDownload(mContext, app_url, jsonObject);
}
}