diff --git a/app/build.gradle b/app/build.gradle index d8e8056..837dff7 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -29,8 +29,8 @@ android { defaultConfig { applicationId "com.aoleyun.sn" - versionCode 83 - versionName "6.4.3" + versionCode 84 + versionName "6.4.4" //There are no CERT files because If the mini sdk version is 23+, the AGP will ignore the V1 scheme signature. minSdkVersion 24 diff --git a/app/src/main/java/com/aoleyun/sn/bean/AppDateInfo.java b/app/src/main/java/com/aoleyun/sn/bean/AppDateInfo.java index 119f266..dbdb56f 100644 --- a/app/src/main/java/com/aoleyun/sn/bean/AppDateInfo.java +++ b/app/src/main/java/com/aoleyun/sn/bean/AppDateInfo.java @@ -1,28 +1,40 @@ package com.aoleyun.sn.bean; +import androidx.annotation.NonNull; + import com.google.gson.Gson; import com.google.gson.JsonParser; import java.io.Serializable; public class AppDateInfo implements Serializable { + private static final long serialVersionUID = 8711338410072780246L; - private static final long serialVersionUID = -8954939883956606971L; + String id; + String app_id; + String app_name; + String app_package; + String app_version_name; + long app_version_code; + String app_desc; + String app_downloads; + String app_size; + String app_img; + String app_url; + String app_createtime; + String app_score; + String xitong_id; + String zixitong_id; + String app_tag; + String app_md5; - public String id; - public String app_name; - public String app_package; - public String app_version_name; - public String app_desc; - public String app_downloads; - public String app_size; - public String app_img; - public String app_url; - public String app_createtime; - public String app_score; - public String xitong_id; - public String zixitong_id; - public String app_tag; + public String getApp_id() { + return app_id; + } + + public void setApp_id(String app_id) { + this.app_id = app_id; + } public String getType() { return app_tag; @@ -144,6 +156,23 @@ public class AppDateInfo implements Serializable { this.app_createtime = app_time; } + public String getApp_md5() { + return app_md5; + } + + public void setApp_md5(String app_md5) { + this.app_md5 = app_md5; + } + + 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; + } + + @NonNull @Override public String toString() { return JsonParser.parseString(new Gson().toJson(this)).getAsJsonObject().toString(); 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 df5ec60..802d0ca 100644 --- a/app/src/main/java/com/aoleyun/sn/network/NetInterfaceManager.java +++ b/app/src/main/java/com/aoleyun/sn/network/NetInterfaceManager.java @@ -20,6 +20,7 @@ import com.alibaba.sdk.android.push.noonesdk.PushServiceFactory; import com.aoleyun.sn.BuildConfig; import com.aoleyun.sn.base.BaseApplication; import com.aoleyun.sn.bean.AppAttr; +import com.aoleyun.sn.bean.AppDateInfo; import com.aoleyun.sn.bean.AppID; import com.aoleyun.sn.bean.AppLimit; import com.aoleyun.sn.bean.AppListInfo; @@ -57,6 +58,7 @@ import com.aoleyun.sn.network.api.GetWhoisApi; import com.aoleyun.sn.network.api.get.CheckTestUpdateApi; import com.aoleyun.sn.network.api.get.DefaultAppApi; import com.aoleyun.sn.network.api.get.DesktopsDiyUpdateApi; +import com.aoleyun.sn.network.api.get.GetAdminAppApi; import com.aoleyun.sn.network.api.get.GetDesktopApi; import com.aoleyun.sn.network.api.get.GetDeveloperApi; import com.aoleyun.sn.network.api.get.GetPushTagsApi; @@ -142,6 +144,7 @@ import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeUnit; +import java.util.function.Function; import java.util.stream.Collectors; import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; @@ -608,6 +611,13 @@ public class NetInterfaceManager { .observeOn(AndroidSchedulers.mainThread()); } + public Observable>> getAdminAppObservable() { + return mRetrofit.create(GetAdminAppApi.class) + .getAdminApp(Utils.getSerial(mContext)) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()); + } + /* * * API @@ -2894,19 +2904,97 @@ public class NetInterfaceManager { } public void getAppLimit(BehaviorSubject lifecycle, onCompleteCallback callback) { - getAppLimitObservable() + Observable.zip(getAppLimitObservable(), getAdminAppObservable(), getBiFunction()) .compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY)) - .subscribe(getAppLimitObserver(callback)); + .subscribe(getAppLimitListObserver(callback)); +// getAppLimitObservable() +// .compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY)) +// .subscribe(getAppLimitObserver(callback)); } public void getAppLimit(onCompleteCallback callback) { - getAppLimitObservable() - .subscribe(getAppLimitObserver(callback)); + Observable.zip(getAppLimitObservable(), getAdminAppObservable(), getBiFunction()) + .subscribe(getAppLimitListObserver(callback)); +// getAppLimitObservable() +// .subscribe(getAppLimitObserver(callback)); } public void getAppLimit() { - getAppLimitObservable() - .subscribe(getAppLimitObserver(null)); + Observable.zip(getAppLimitObservable(), getAdminAppObservable(), getBiFunction()) + .subscribe(getAppLimitListObserver(null)); +// getAppLimitObservable() +// .subscribe(getAppLimitObserver(null)); + } + + private void getAppLimitList() { + Observable.zip(getAppLimitObservable(), getAdminAppObservable(), getBiFunction()) + .subscribe(getAppLimitListObserver(null)); + } + + + private BiFunction, BaseResponse>, List> getBiFunction() { + return new BiFunction, BaseResponse>, List>() { + @Override + public List apply(BaseResponse appLimitBaseResponse, BaseResponse> listBaseResponse) throws Throwable { + List appNames = new ArrayList<>(); + if (appLimitBaseResponse.code == 200) { + AppLimit appLimit = appLimitBaseResponse.data; + String result = appLimit.getResult(); + List pkgs = new ArrayList<>(Arrays.asList(result.split(","))); + appNames.addAll(pkgs); + } + if (listBaseResponse.code == 200) { + List appDateInfos = listBaseResponse.data; + Set pkgs = appDateInfos.stream().map(new Function() { + @Override + public String apply(AppDateInfo appDateInfo) { + return appDateInfo.getApp_baoming(); + } + }).collect(Collectors.toSet()); + appNames.addAll(pkgs); + } + return appNames; + } + }; + } + + private Observer> getAppLimitListObserver(onCompleteCallback callback) { + return new Observer>() { + @Override + public void onSubscribe(@NonNull Disposable d) { + Log.e("getAppLimitList", "onSubscribe: "); + } + + @Override + public void onNext(@NonNull List strings) { + Log.e("getAppLimitList", "onNext: " + strings); + if (strings.size() == 0) { + Settings.System.putString(mContext.getContentResolver(), JGYActions.ACTION_JGY_SHORTCUTLIST, ""); + JGYUtils.getInstance().writeAppPackageList(); + cacheHelper.put(UrlAddress.SET_WHITE_PACKAGE_LIST, ""); + } else { + String pkgString = String.join(",", strings); + cacheHelper.put(UrlAddress.SET_WHITE_PACKAGE_LIST, GsonUtils.toJSONString(strings)); + //开机图标 只记录后台传的包名 + Log.e(TAG, "onNext: only_jgy_shortcut_list: " + Settings.System.putString(mContext.getContentResolver(), JGYActions.ACTION_JGY_SHORTCUTLIST, pkgString)); + JGYUtils.getInstance().writeAppPackageList(mContext, pkgString); + JGYUtils.getInstance().deleteOtherApp(); + } + } + + @Override + public void onError(@NonNull Throwable e) { + Log.e("getAppLimitList", "onError: " + e.getMessage()); + onComplete(); + } + + @Override + public void onComplete() { + Log.e("getAppLimitList", "onComplete: "); + if (callback != null) + callback.onComplete(); + } + }; } private Observer> getAppLimitObserver(onCompleteCallback callback) { 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 6fc5c45..6db25b3 100644 --- a/app/src/main/java/com/aoleyun/sn/network/UrlAddress.java +++ b/app/src/main/java/com/aoleyun/sn/network/UrlAddress.java @@ -44,6 +44,8 @@ public class UrlAddress { public static final String GET_APPID = "application/index"; /*app内部网页管控*/ public static final String SET_APPINSIDEWEB = "Appground"; + /*应用管控的应用*/ + public static final String GET_ADMIN_APP = "And/app/getAdminApp"; /*app下载完成发送下载次数*/ @Deprecated diff --git a/app/src/main/java/com/aoleyun/sn/network/api/get/GetAdminAppApi.java b/app/src/main/java/com/aoleyun/sn/network/api/get/GetAdminAppApi.java new file mode 100644 index 0000000..ec92f55 --- /dev/null +++ b/app/src/main/java/com/aoleyun/sn/network/api/get/GetAdminAppApi.java @@ -0,0 +1,18 @@ +package com.aoleyun.sn.network.api.get; + +import com.aoleyun.sn.bean.AppDateInfo; +import com.aoleyun.sn.bean.BaseResponse; +import com.aoleyun.sn.network.UrlAddress; + +import java.util.List; + +import io.reactivex.rxjava3.core.Observable; +import retrofit2.http.GET; +import retrofit2.http.Query; + +public interface GetAdminAppApi { + @GET(UrlAddress.GET_ADMIN_APP) + Observable>> getAdminApp( + @Query("sn") String sn + ); +}