From dc1b12903921034561b37cf3b452c299706464d5 Mon Sep 17 00:00:00 2001 From: tongtongstudio Date: Mon, 16 Jun 2025 10:27:19 +0800 Subject: [PATCH] =?UTF-8?q?version:=20bugfixes:=E5=AF=B9=E6=8E=A5=E5=88=86?= =?UTF-8?q?=E7=BB=84=E6=A0=87=E7=AD=BE=E5=92=8C=E5=BC=BA=E5=88=B6=E4=B8=8B?= =?UTF-8?q?=E8=BD=BD=E5=88=86=E7=BB=84=E5=BA=94=E7=94=A8=EF=BC=8C=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=9C=B0=E7=90=86=E5=9B=B4=E6=A0=8F=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=EF=BC=8C=E5=9C=B0=E7=90=86=E5=9B=B4=E6=A0=8F=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E6=9C=AA=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/aoleyun/sn/bean/ApkInfoPush.java | 174 ++++++++++++++++++ .../main/java/com/aoleyun/sn/bean/Batch.java | 21 +-- .../aoleyun/sn/bean/ElectronicFenceInfo.java | 64 +++++++ .../com/aoleyun/sn/comm/CommonConfig.java | 2 + .../com/aoleyun/sn/manager/MapManager.java | 3 +- .../sn/network/NetInterfaceManager.java | 173 +++++++++++++---- .../com/aoleyun/sn/network/UrlAddress.java | 3 + .../{CheckTestUpdateApi.java => SnApi.java} | 7 +- .../sn/network/api/post/ForceDownloadApi.java | 9 +- .../java/com/aoleyun/sn/push/PushManager.java | 86 +++++---- .../aoleyun/sn/service/main/MainSContact.java | 5 +- .../sn/service/main/MainSPresenter.java | 23 ++- .../aoleyun/sn/service/main/MainService.java | 6 + .../java/com/aoleyun/sn/utils/JgyUtils.java | 6 +- 14 files changed, 476 insertions(+), 106 deletions(-) create mode 100644 app/src/main/java/com/aoleyun/sn/bean/ApkInfoPush.java create mode 100644 app/src/main/java/com/aoleyun/sn/bean/ElectronicFenceInfo.java rename app/src/main/java/com/aoleyun/sn/network/api/get/{CheckTestUpdateApi.java => SnApi.java} (74%) diff --git a/app/src/main/java/com/aoleyun/sn/bean/ApkInfoPush.java b/app/src/main/java/com/aoleyun/sn/bean/ApkInfoPush.java new file mode 100644 index 0000000..644789c --- /dev/null +++ b/app/src/main/java/com/aoleyun/sn/bean/ApkInfoPush.java @@ -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; + } +} diff --git a/app/src/main/java/com/aoleyun/sn/bean/Batch.java b/app/src/main/java/com/aoleyun/sn/bean/Batch.java index f479d2b..02d3c28 100644 --- a/app/src/main/java/com/aoleyun/sn/bean/Batch.java +++ b/app/src/main/java/com/aoleyun/sn/bean/Batch.java @@ -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 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 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 group_en_name) { + this.group_en_name = group_en_name; } } diff --git a/app/src/main/java/com/aoleyun/sn/bean/ElectronicFenceInfo.java b/app/src/main/java/com/aoleyun/sn/bean/ElectronicFenceInfo.java new file mode 100644 index 0000000..327de4f --- /dev/null +++ b/app/src/main/java/com/aoleyun/sn/bean/ElectronicFenceInfo.java @@ -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; + } +} 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 5dfbb22..5fcd2df 100644 --- a/app/src/main/java/com/aoleyun/sn/comm/CommonConfig.java +++ b/app/src/main/java/com/aoleyun/sn/comm/CommonConfig.java @@ -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"; /*专注模式刷新*/ diff --git a/app/src/main/java/com/aoleyun/sn/manager/MapManager.java b/app/src/main/java/com/aoleyun/sn/manager/MapManager.java index f4f6b00..1c8b817 100644 --- a/app/src/main/java/com/aoleyun/sn/manager/MapManager.java +++ b/app/src/main/java/com/aoleyun/sn/manager/MapManager.java @@ -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; // 设备标识 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 494bf2a..7df2b09 100644 --- a/app/src/main/java/com/aoleyun/sn/network/NetInterfaceManager.java +++ b/app/src/main/java/com/aoleyun/sn/network/NetInterfaceManager.java @@ -71,7 +71,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; @@ -600,12 +600,20 @@ public class NetInterfaceManager { } public Observable>> getTestUpdateObservable() { - return mRetrofit.create(CheckTestUpdateApi.class) + return mRetrofit.create(SnApi.class) .getTestUpdate(Utils.getSerial(mContext)) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()); } + + public Observable geElectronicFenceObservable() { + return mRetrofit.create(SnApi.class) + .geElectronicFence(Utils.getSerial(mContext)) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()); + } + public Observable> getSnTimeObservable() { return mRetrofit.create(SnTimeControlApi.class) .getSnTimeControl(Utils.getSerial(mContext)) @@ -1199,51 +1207,93 @@ public class NetInterfaceManager { }); } - public void getForceDownload(boolean refresh, BehaviorSubject 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>() { - }.getType(); - List forceDownloadDataList = gson.fromJson(jsonString, listType); - if (forceDownloadDataList != null) { - JgyUtils.getInstance().forceDownload(forceDownloadDataList); - List 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); - } - callback.onComplete(); - } - } + public void geElectronicFence(BehaviorSubject lifecycle, onCompleteCallback callback) { + geElectronicFenceObservable() + .compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY)) + .subscribe(new Observer() { + @Override + public void onSubscribe(@NonNull Disposable d) { + Log.e("geElectronicFence", "onSubscribe: "); + } + + @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 lifecycle, onCompleteCallback callback) { - getForceDownloadObservable() +// 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.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>() { + @Override + public List apply(BaseResponse> listBaseResponse, BaseResponse> listBaseResponse2) throws Throwable { + List 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>() { + @Override + public List apply(BaseResponse> listBaseResponse, BaseResponse> listBaseResponse2) throws Throwable { + List 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>> getForceDownloadObserver(onCompleteCallback callback) { return new Observer>>() { @Override @@ -1261,8 +1311,7 @@ public class NetInterfaceManager { Aria.download(this).resumeAllTask(); JgyUtils.getInstance().forceDownload(forceDownloadData); List 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); } else if (forceDownloadBean.code == -200) { cacheHelper.put(UrlAddress.GET_FORCE_INSTALL_LIST, ""); @@ -1290,6 +1339,47 @@ public class NetInterfaceManager { }; } + 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()) { + 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 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 lifecycle, onCompleteCallback callback) { ConnectMode connectMode = ConnectMode.ONE_MINUTE; if (refresh) { @@ -2529,6 +2619,9 @@ public class NetInterfaceManager { if (response.code == OK) { cacheHelper.put(UrlAddress.GET_DEVICES_TAGS, GsonUtils.toJSONString(response.data)); String batch = response.data.getBatch(); + Set 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)) { @@ -2548,6 +2641,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(""); @@ -2560,8 +2654,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 groupTagSets = mMMKV.decodeStringSet(CommonConfig.DEVICES_GROUP_TAG, new HashSet<>()); + Log.e("setPushTags", "onError: groupTagSets = " + groupTagSets); Set tags = new HashSet<>(); + tags.addAll(groupTagSets); if (!TextUtils.isEmpty(batch)) { tags.add(batch); } diff --git a/app/src/main/java/com/aoleyun/sn/network/UrlAddress.java b/app/src/main/java/com/aoleyun/sn/network/UrlAddress.java index 1347f07..f78f878 100644 --- a/app/src/main/java/com/aoleyun/sn/network/UrlAddress.java +++ b/app/src/main/java/com/aoleyun/sn/network/UrlAddress.java @@ -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"; /*获取全部应用*/ diff --git a/app/src/main/java/com/aoleyun/sn/network/api/get/CheckTestUpdateApi.java b/app/src/main/java/com/aoleyun/sn/network/api/get/SnApi.java similarity index 74% rename from app/src/main/java/com/aoleyun/sn/network/api/get/CheckTestUpdateApi.java rename to app/src/main/java/com/aoleyun/sn/network/api/get/SnApi.java index 6716900..b9ffa6f 100644 --- a/app/src/main/java/com/aoleyun/sn/network/api/get/CheckTestUpdateApi.java +++ b/app/src/main/java/com/aoleyun/sn/network/api/get/SnApi.java @@ -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>> getTestUpdate( @Query("sn") String sn ); + + @GET(UrlAddress.GET_SN_EFENCE) + Observable geElectronicFence( + @Query("sn") String sn + ); } diff --git a/app/src/main/java/com/aoleyun/sn/network/api/post/ForceDownloadApi.java b/app/src/main/java/com/aoleyun/sn/network/api/post/ForceDownloadApi.java index b09c2f9..190fc95 100644 --- a/app/src/main/java/com/aoleyun/sn/network/api/post/ForceDownloadApi.java +++ b/app/src/main/java/com/aoleyun/sn/network/api/post/ForceDownloadApi.java @@ -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>> getGroupForceDownloadApi( - @Field("key") String key, - @Field("sn") String sn + @Query("key") String key, + @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 00672d3..436389a 100644 --- a/app/src/main/java/com/aoleyun/sn/push/PushManager.java +++ b/app/src/main/java/com/aoleyun/sn/push/PushManager.java @@ -25,6 +25,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; @@ -266,12 +267,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("收到管控:系统设置"); @@ -308,6 +316,7 @@ public class PushManager { sendRefreshBroadcast(mContext); break; + case MSG_INSTALL: Toaster.debugShow("收到管控:应用安装"); doDownloadAndInstall(extras); @@ -341,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() { @@ -558,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); @@ -681,16 +674,34 @@ public class PushManager { case SET_WALLPAPER: setWallpaper(extras); break; - case UPDATE_CHILD_BATCH: - break; - 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(); } @@ -705,23 +716,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 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, ""); - } + 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 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() { diff --git a/app/src/main/java/com/aoleyun/sn/service/main/MainSContact.java b/app/src/main/java/com/aoleyun/sn/service/main/MainSContact.java index 5a9c7c7..aecbf3c 100644 --- a/app/src/main/java/com/aoleyun/sn/service/main/MainSContact.java +++ b/app/src/main/java/com/aoleyun/sn/service/main/MainSContact.java @@ -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(); diff --git a/app/src/main/java/com/aoleyun/sn/service/main/MainSPresenter.java b/app/src/main/java/com/aoleyun/sn/service/main/MainSPresenter.java index db8ac07..a47e5b7 100644 --- a/app/src/main/java/com/aoleyun/sn/service/main/MainSPresenter.java +++ b/app/src/main/java/com/aoleyun/sn/service/main/MainSPresenter.java @@ -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 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 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(); diff --git a/app/src/main/java/com/aoleyun/sn/service/main/MainService.java b/app/src/main/java/com/aoleyun/sn/service/main/MainService.java index 6a4d75c..03bc1e2 100644 --- a/app/src/main/java/com/aoleyun/sn/service/main/MainService.java +++ b/app/src/main/java/com/aoleyun/sn/service/main/MainService.java @@ -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 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 3cf19dc..512c449 100644 --- a/app/src/main/java/com/aoleyun/sn/utils/JgyUtils.java +++ b/app/src/main/java/com/aoleyun/sn/utils/JgyUtils.java @@ -1535,7 +1535,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; @@ -1545,11 +1545,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); } }