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; package com.aoleyun.sn.bean;
import java.io.Serializable; import java.io.Serializable;
import java.util.List;
import java.util.Set;
public class Batch implements Serializable { public class Batch implements Serializable {
private static final long serialVersionUID = -1762804079800707443L; private static final long serialVersionUID = -1762804079800707443L;
int id;
String batch; String batch;
int admin_id; Set<String> group_en_name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getBatch() { public String getBatch() {
return batch; return batch;
@@ -26,11 +19,11 @@ public class Batch implements Serializable {
this.batch = batch; this.batch = batch;
} }
public int getAdmin_id() { public Set<String> getGroup_en_name() {
return admin_id; return group_en_name;
} }
public void setAdmin_id(int admin_id) { public void setGroup_en_name(Set<String> group_en_name) {
this.admin_id = admin_id; 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 LAST_CHECK_ALL_UPDATE_TIME = "lastCheckAllUpdateTime";
/*获取设备的标签*/ /*获取设备的标签*/
public final static String DEVICES_TAG = "Aoleyun_devices_tpush_tag"; 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"; 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.provider.Settings;
import android.util.Log; import android.util.Log;
import com.aoleyun.sn.bean.ElectronicFenceInfo;
import com.aoleyun.sn.utils.SPUtils; import com.aoleyun.sn.utils.SPUtils;
import com.baidu.location.BDAbstractLocationListener; import com.baidu.location.BDAbstractLocationListener;
import com.baidu.location.BDLocation; import com.baidu.location.BDLocation;
@@ -377,7 +378,7 @@ public class MapManager {
} }
}; };
public void createClientFence() { public void createClientFence(ElectronicFenceInfo fenceInfo) {
// 轨迹服务ID // 轨迹服务ID
long serviceId = 241868; 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.aolelearn.ExclusiveAdminAppApi;
import com.aoleyun.sn.network.api.get.AppSettingApi; import com.aoleyun.sn.network.api.get.AppSettingApi;
import com.aoleyun.sn.network.api.get.BlackListApi; 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.CloudLessonApi;
import com.aoleyun.sn.network.api.get.CloudLessonAppApi; import com.aoleyun.sn.network.api.get.CloudLessonAppApi;
import com.aoleyun.sn.network.api.get.DefaultAppApi; import com.aoleyun.sn.network.api.get.DefaultAppApi;
@@ -601,12 +601,20 @@ public class NetInterfaceManager {
} }
public Observable<BaseResponse<List<ForceDownloadData>>> getTestUpdateObservable() { public Observable<BaseResponse<List<ForceDownloadData>>> getTestUpdateObservable() {
return mRetrofit.create(CheckTestUpdateApi.class) return mRetrofit.create(SnApi.class)
.getTestUpdate(Utils.getSerial(mContext)) .getTestUpdate(Utils.getSerial(mContext))
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()); .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() { public Observable<BaseResponse<SnTimeControl>> getSnTimeObservable() {
return mRetrofit.create(SnTimeControlApi.class) return mRetrofit.create(SnTimeControlApi.class)
.getSnTimeControl(Utils.getSerial(mContext)) .getSnTimeControl(Utils.getSerial(mContext))
@@ -1200,55 +1208,93 @@ public class NetInterfaceManager {
}); });
} }
public void getForceDownload(boolean refresh, BehaviorSubject<ActivityEvent> lifecycle, onCompleteCallback callback) { public void geElectronicFence(BehaviorSubject<ActivityEvent> lifecycle, onCompleteCallback callback) {
ConnectMode connectMode = ConnectMode.DEFAULT; geElectronicFenceObservable()
if (refresh) { .compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
connectMode = ConnectMode.DEFAULT; .subscribe(new Observer<BaseResponse>() {
} @Override
if (ConnectManager.getInstance().isNeedConnect(UrlAddress.GET_FORCE_INSTALL_LIST, connectMode)) { public void onSubscribe(@NonNull Disposable d) {
getForceDownload(lifecycle, callback); Log.e("geElectronicFence", "onSubscribe: ");
} 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);
} }
}
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) { 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)) .compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(getForceDownloadObserver(callback)); .subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(getForceDownloadListObserver(callback));
} }
public void getForceDownload(onCompleteCallback callback) { public void getForceDownload(onCompleteCallback callback) {
getForceDownloadObservable() // getForceDownloadObservable()
.subscribe(getForceDownloadObserver(callback)); // .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() { public void getForceDownload() {
getForceDownloadObservable() // getForceDownloadObservable()
.subscribe(getForceDownloadObserver(null)); // .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) { private Observer<BaseResponse<List<ForceDownloadData>>> getForceDownloadObserver(onCompleteCallback callback) {
return new Observer<BaseResponse<List<ForceDownloadData>>>() { return new Observer<BaseResponse<List<ForceDownloadData>>>() {
@Override @Override
@@ -1266,8 +1312,7 @@ public class NetInterfaceManager {
Aria.download(this).resumeAllTask(); Aria.download(this).resumeAllTask();
JgyUtils.getInstance().forceDownload(forceDownloadData); JgyUtils.getInstance().forceDownload(forceDownloadData);
List<String> forceApp = forceDownloadData.stream().map(ForceDownloadData::getApp_package).collect(Collectors.toList()); 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, boolean aole_force_app = Settings.System.putString(mContext.getContentResolver(), CommonConfig.AOLE_ACTION_FORCE_APP, String.join(",", forceApp));
String.join(",", forceApp));
Log.e("getForceDownload", "aole_force_app:" + aole_force_app); Log.e("getForceDownload", "aole_force_app:" + aole_force_app);
if (JgyUtils.isAllWinnerDevice()) { if (JgyUtils.isAllWinnerDevice()) {
CubeMdmManager cubeMdmManager = (CubeMdmManager) mContext.getSystemService("cube_mdm"); 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) { public void getDefaultDesktop(boolean refresh, BehaviorSubject<ActivityEvent> lifecycle, onCompleteCallback callback) {
ConnectMode connectMode = ConnectMode.ONE_MINUTE; ConnectMode connectMode = ConnectMode.ONE_MINUTE;
if (refresh) { if (refresh) {
@@ -2542,6 +2628,9 @@ public class NetInterfaceManager {
if (response.code == OK) { if (response.code == OK) {
cacheHelper.put(UrlAddress.GET_DEVICES_TAGS, GsonUtils.toJSONString(response.data)); cacheHelper.put(UrlAddress.GET_DEVICES_TAGS, GsonUtils.toJSONString(response.data));
String batch = response.data.getBatch(); 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); Log.e("setPushTags", "onNext: " + batch);
String lastBatch = mMMKV.decodeString(CommonConfig.DEVICES_TAG, ""); String lastBatch = mMMKV.decodeString(CommonConfig.DEVICES_TAG, "");
if (!lastBatch.equals(batch)) { if (!lastBatch.equals(batch)) {
@@ -2561,6 +2650,7 @@ public class NetInterfaceManager {
} }
} else { } else {
mMMKV.encode(CommonConfig.DEVICES_TAG, ""); mMMKV.encode(CommonConfig.DEVICES_TAG, "");
mMMKV.remove(CommonConfig.DEVICES_GROUP_TAG);
cacheHelper.put(UrlAddress.GET_DEVICES_TAGS, ""); cacheHelper.put(UrlAddress.GET_DEVICES_TAGS, "");
if (callback != null) if (callback != null)
callback.setPushTag(""); callback.setPushTag("");
@@ -2573,8 +2663,11 @@ public class NetInterfaceManager {
public void onError(@NonNull Throwable e) { public void onError(@NonNull Throwable e) {
Log.e("setPushTags", "onError: " + e.getMessage()); Log.e("setPushTags", "onError: " + e.getMessage());
String batch = mMMKV.decodeString(CommonConfig.DEVICES_TAG, ""); 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<>(); Set<String> tags = new HashSet<>();
tags.addAll(groupTagSets);
if (!TextUtils.isEmpty(batch)) { if (!TextUtils.isEmpty(batch)) {
tags.add(batch); tags.add(batch);
} }

View File

@@ -32,6 +32,9 @@ public class UrlAddress {
public static final String CHECK_UPDATE = "Silent/silent"; public static final String CHECK_UPDATE = "Silent/silent";
/*获取测试app*/ /*获取测试app*/
public static final String GET_SN_APP_TEST = "Sn/getSnAppTest"; 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"; 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.GET;
import retrofit2.http.Query; import retrofit2.http.Query;
public interface CheckTestUpdateApi { public interface SnApi {
@GET(UrlAddress.GET_SN_APP_TEST) @GET(UrlAddress.GET_SN_APP_TEST)
Observable<BaseResponse<List<ForceDownloadData>>> getTestUpdate( Observable<BaseResponse<List<ForceDownloadData>>> getTestUpdate(
@Query("sn") String sn @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 io.reactivex.rxjava3.core.Observable;
import retrofit2.http.Field; import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded; import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST; import retrofit2.http.POST;
import retrofit2.http.Query;
public interface ForceDownloadApi { public interface ForceDownloadApi {
@FormUrlEncoded @FormUrlEncoded
@@ -19,11 +21,10 @@ public interface ForceDownloadApi {
@Field("sn") String sn @Field("sn") String sn
); );
@FormUrlEncoded @GET(UrlAddress.GROUP_APP_INSTALL_LIST)
@POST(UrlAddress.GROUP_APP_INSTALL_LIST)
Observable<BaseResponse<List<ForceDownloadData>>> getGroupForceDownloadApi( Observable<BaseResponse<List<ForceDownloadData>>> getGroupForceDownloadApi(
@Field("key") String key, @Query("key") String key,
@Field("sn") String sn @Query("sn") String sn
); );
} }

View File

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

View File

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

View File

@@ -116,10 +116,13 @@ public class MainSPresenter implements MainSContact.Presenter {
} }
}); });
String tagSets = mMMKV.decodeString(CommonConfig.DEVICES_TAG); 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); 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<>(); Set<String> tags = new HashSet<>();
tags.addAll(groupTagSets);
if (!TextUtils.isEmpty(tagSets)) { if (!TextUtils.isEmpty(tagSets)) {
tags.add(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 @Override
public void getSystemSettingBegin() { public void getSystemSettingBegin() {
//重置设备 //重置设备
@@ -335,7 +348,7 @@ public class MainSPresenter implements MainSContact.Presenter {
@Override @Override
public void getAppLimit() { public void getAppLimit() {
NetInterfaceManager.getInstance() NetInterfaceManager.getInstance()
.getAppLimit( getLifecycle(), new NetInterfaceManager.onCompleteCallback() { .getAppLimit(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
@Override @Override
public void onComplete() { public void onComplete() {
mView.getAppLimitFinish(); mView.getAppLimitFinish();
@@ -346,7 +359,7 @@ public class MainSPresenter implements MainSContact.Presenter {
@Override @Override
public void getForceDownload() { public void getForceDownload() {
NetInterfaceManager.getInstance() NetInterfaceManager.getInstance()
.getForceDownload(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() { .getForceDownload(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
@Override @Override
public void onComplete() { public void onComplete() {
mView.getForceDownloadFinish(); mView.getForceDownloadFinish();
@@ -492,7 +505,7 @@ public class MainSPresenter implements MainSContact.Presenter {
@Override @Override
public void getSystemSetting() { public void getSystemSetting() {
NetInterfaceManager.getInstance() NetInterfaceManager.getInstance()
.setSystemSetting( getLifecycle(), new NetInterfaceManager.onCompleteCallback() { .setSystemSetting(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
@Override @Override
public void onComplete() { public void onComplete() {
mView.getSystemSettingFinish(); 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, "is_screen_lock", false);
SPUtils.put(this, "screen_tips", ""); SPUtils.put(this, "screen_tips", "");
} }
mPresenter.geteFence();
}
@Override
public void geteFenceFinish() {
} }
@Override @Override

View File

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