From 0e9f0e83948b50b98f6a682be3c78958498f8d1b Mon Sep 17 00:00:00 2001 From: tongtongstudio Date: Tue, 27 May 2025 16:34:33 +0800 Subject: [PATCH] =?UTF-8?q?1.5.0513=20bugfixes:=E5=A2=9E=E5=8A=A0=E5=BA=94?= =?UTF-8?q?=E7=94=A8=E7=A6=81=E7=94=A8=E5=92=8C=E5=8D=B8=E8=BD=BD=E7=9B=91?= =?UTF-8?q?=E5=90=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 27 ++++- app/keystore/iPlay50miniPro.jks | Bin 0 -> 2353 bytes app/src/main/AndroidManifest.xml | 3 +- .../aoleyun/sn/activity/SplashActivity.java | 12 +- .../com/aoleyun/sn/comm/CommonConfig.java | 2 + .../java/com/aoleyun/sn/comm/JGYActions.java | 7 -- .../sn/network/NetInterfaceManager.java | 108 ++---------------- .../aoleyun/sn/receiver/NewAppReceiver.java | 13 ++- .../com/aoleyun/sn/service/GuardService.java | 1 + .../sn/service/main/MainSPresenter.java | 4 +- .../aoleyun/sn/service/main/MainService.java | 1 + .../java/com/aoleyun/sn/utils/ApkUtils.java | 89 ++++++--------- .../com/aoleyun/sn/utils/BootManager.java | 5 +- .../java/com/aoleyun/sn/utils/JgyUtils.java | 93 ++++++++++----- .../com/aoleyun/sn/utils/SysSettingUtils.java | 3 +- 15 files changed, 168 insertions(+), 200 deletions(-) create mode 100644 app/keystore/iPlay50miniPro.jks diff --git a/app/build.gradle b/app/build.gradle index b464664..091a4ca 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -29,8 +29,8 @@ android { defaultConfig { applicationId "com.aoleyun.sn" - versionCode 170 - versionName "1.5.0328" + versionCode 178 + versionName "1.5.0513" //There are no CERT files because If the mini sdk version is 23+, the AGP will ignore the V1 scheme signature. minSdkVersion 24 @@ -233,9 +233,32 @@ android { v1SigningEnabled true v2SigningEnabled true } + + iPlay50miniPro { + storeFile file("keystore/iPlay50miniPro.jks") + storePassword "123456" + keyAlias "iplay50minipro" + keyPassword "123456" + v1SigningEnabled true + v2SigningEnabled true + } } buildTypes { + iPlay50miniProDebug.initWith(debug) + iPlay50miniProDebug { + buildConfigField "String", "platform", '"miniG99"' + versionNameSuffix "-debug" + debuggable true + signingConfig signingConfigs.iPlay50miniPro + } + + iPlay50miniProRelease.initWith(release) + iPlay50miniProRelease { + buildConfigField "String", "platform", '"miniG99"' + signingConfig signingConfigs.iPlay50miniPro + } + seewoDebug.initWith(debug) seewoDebug { versionNameSuffix "-debug" diff --git a/app/keystore/iPlay50miniPro.jks b/app/keystore/iPlay50miniPro.jks new file mode 100644 index 0000000000000000000000000000000000000000..e5aeab8a7143ad52217b6b3edf5407851d5a9d52 GIT binary patch literal 2353 zcmd5-XIE3(7Ck2+34|t~vMee~n#2LJ%DlLG%PI#-X|_Wn|k zo2$F4hZp{Yj{ep>a}NLzaEL&04ACLc!bp$;6oN5;AOfHuP^{SKIVC+wv@hexn0Gki zNX!!7F1~Uc`smJk-pr4z(`Ipe>qe-|UBw-r-an2qr5<#TQsq)sPbieKM-O7IEOQk_ zQ;r`5H*#h<5z5ZI)qAU;m%{Pne6o#Ut$E`2nQNl$i@&}mNPX}?>07HYT)-RQrQ0-G z8DRyQh;h+oKhc3d2elIylsoGe6Ku)XPjdA5Ym133px0QcOnK#*$6GuD+QcQc;RfX;uA9_p%%N02#-Cb|)EFo+A z8eJ@#otIW3ITlDGvt*E{BJ`pS9%kMbj$%aRpOTMs?29 zxIM>abvD_a-Yvq>nqWeSN`yfCP<;Nogy1NQlQImWkT(G97zonCk7iDqDhP--h>VRY zDK8exg|Rx)Qv4?9rgqrprocJM>z_}?dT&=I(lRfj1~SqNRPb`Fd)DOXP&(QyOiwo?wO zzT^kR-#CB+*ZdHkMN)6wW}<_zfe8A?eYuycBK^c!nFzy;ouQ%O&Abw|%e{1bqmiTp zjQMp1Hi*t+L^Ra~9oHXU2(LjGz>vXOxSPjkVOZ`hphU7~t<3xEbRNtVIlK%B2 zJ=@5VN?gT^;e_kCw~thlSV&FxrK%faG|?~|+^C;T`-|5qT;S~si~83|%WY#n%aydd zjfJoCM0=^IBLQB5JSo987~z4uQ5=mk=}xJ&Ml8bYjSI8N?(k**?rhnzs@Q>I_y@BU0bz;Aei1|^#dFO(6uYw^v0MmI=Sk&y5s)CplDE9_O5EK_U>W~5dEnJO+%^gBt7>Aj5cMg7(@;1%x#7hwLg)W`DHX`fa7rq>ogVdZx+Us>cZ1He(2B{4 ziHk`69Cw~l_0MY{x0Yt+HAPDrb=%sJmwuC1< z^S%(BZ}Pcxik2O(pP4dWZY=(L$q+HQGoz6i zXK@gEWVL8X#<*m&zuIEZ*}Qv0H8t4eqq!l;h4q7L7?v|m^Q?x$mi%EA6Y$598kx4r zy7<9}^Oc5WvoNEmD{eGx!7g+cxfq@|G%BsNZZi$_;qbnW4z+LgebX@hty+68mRY=3 zUpn_k1ot)_sTE{bH#{5FqVMge}X`6?F6=Dwk-vXLb0TTrRf`j1kKRrKr zvL~K{fQyV}5+--QSGLTDma(M1u>UZ$bQ)XGC|`>473bwOBJiyV&)s8&XGc+I{E2Vk z%S?Rzg)-jwFqV2P;E~832ad&w%a(x)sIOKtI4z8#Zb7gVwj#a1qo>Wv$LOJTaRD&Q zkS7zn<+Z1Y^RDxw;a)6Z>uo&vfF+KpwdT#oQJcQq{4z-WyTyFo`J!UKe={SUf%Max z&%Ep%p)IOd34WynI{_P@B<$@@o}Db*%{NscojxHy~wcUk#Z7e-uikA<90 ZjpVA<)8&-mvoa0K%gz + android:permission="android.permission.INSTALL_PACKAGES"> + diff --git a/app/src/main/java/com/aoleyun/sn/activity/SplashActivity.java b/app/src/main/java/com/aoleyun/sn/activity/SplashActivity.java index 6934368..5354ee9 100644 --- a/app/src/main/java/com/aoleyun/sn/activity/SplashActivity.java +++ b/app/src/main/java/com/aoleyun/sn/activity/SplashActivity.java @@ -48,10 +48,14 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.Set; public class SplashActivity extends AppCompatActivity { - private static String TAG = "SplashActivity"; + private static final String TAG = "SplashActivity"; + + private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE); + private Button bt_log; private Button bt_stop; @@ -96,7 +100,7 @@ public class SplashActivity extends AppCompatActivity { JgyUtils.getModel(); Utils.getAndroiodScreenProperty(SplashActivity.this); Log.e(TAG, "getOperators: " + NetworkUtils.getOperators(this)); - Log.e(TAG, "PublicIP: " + MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE).decodeString(NetInterfaceManager.PublicIP, "")); + Log.e(TAG, "PublicIP: " + mMMKV.decodeString(NetInterfaceManager.PublicIP, "")); NetInterfaceManager.GetWhois(); Log.e(TAG, "initView: " + NetworkUtils.getPhoneNumber(this)); FlowInfo flowInfo1 = GetFlowUtil.getAppFlowInfo(BuildConfig.APPLICATION_ID, this); @@ -151,8 +155,8 @@ public class SplashActivity extends AppCompatActivity { // boolean qch_force_app = Settings.System.putString(getContentResolver(), "qch_launcher_icon_app", ""); Log.i(TAG, "DebugTest: qch_launcher_icon_app:" + Settings.System.getString(getContentResolver(), "qch_launcher_icon_app")); Log.i(TAG, "DebugTest: aole_hide_NavigationBar: " + Settings.System.getString(getContentResolver(), CommonConfig.AOLE_ACTION_HIDE_NAVIGATION_BAR)); - String only_jgy_shortcut_list = Settings.System.getString(getContentResolver(), JGYActions.ACTION_JGY_SHORTCUTLIST); - Log.i(TAG, "debugTest: only_jgy_shortcut_list:" + only_jgy_shortcut_list); + Set aole_all_app_white_list = mMMKV.decodeStringSet(CommonConfig.AOLE_ALL_APP_WHITE_LIST_KEY); + Log.i(TAG, "debugTest: aole_all_app_white_list:" + aole_all_app_white_list); // String aole_app_forbid = Settings.System.getString(getContentResolver(), CommonConfig.AOLE_ACTION_APP_FORBID); // if (!TextUtils.isEmpty(aole_app_forbid)) { // Settings.System.putString(getContentResolver(), CommonConfig.AOLE_ACTION_APP_FORBID, aole_app_forbid + ",com.aoleyun.browser"); 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 8dafae7..5dfbb22 100644 --- a/app/src/main/java/com/aoleyun/sn/comm/CommonConfig.java +++ b/app/src/main/java/com/aoleyun/sn/comm/CommonConfig.java @@ -170,4 +170,6 @@ public class CommonConfig { public final static String AOLE_ACTION_DISABLE_APP = "aole_disable_app_list"; + public final static String AOLE_ALL_APP_WHITE_LIST_KEY = "aole_all_app_white_list"; + } diff --git a/app/src/main/java/com/aoleyun/sn/comm/JGYActions.java b/app/src/main/java/com/aoleyun/sn/comm/JGYActions.java index 78df968..d82eb29 100644 --- a/app/src/main/java/com/aoleyun/sn/comm/JGYActions.java +++ b/app/src/main/java/com/aoleyun/sn/comm/JGYActions.java @@ -20,11 +20,4 @@ public class JGYActions { public final static String ACTION_STATUSBAR_STATUS = "jgy_statusbar_status"; - /* - * 应用内部的数据 - * */ - - //后台上传所有应用包名 将添加到桌面 - // TODO: 2021/10/13 - public final static String ACTION_JGY_SHORTCUTLIST = "only_jgy_shortcut_list"; } 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 5858566..ed02fc6 100644 --- a/app/src/main/java/com/aoleyun/sn/network/NetInterfaceManager.java +++ b/app/src/main/java/com/aoleyun/sn/network/NetInterfaceManager.java @@ -183,6 +183,8 @@ import io.reactivex.rxjava3.functions.Function7; import io.reactivex.rxjava3.schedulers.Schedulers; import io.reactivex.rxjava3.subjects.BehaviorSubject; import okhttp3.Cache; +import okhttp3.ConnectionPool; +import okhttp3.Dispatcher; import okhttp3.Interceptor; import okhttp3.MediaType; import okhttp3.MultipartBody; @@ -335,7 +337,11 @@ public class NetInterfaceManager { // builder.addNetworkInterceptor(new PostCacheInterceptor(mDiskLruCacheHelper)); // builder.addNetworkInterceptor(NetCacheInterceptor); // builder.addInterceptor(OfflineCacheInterceptor); - + Dispatcher dispatcher = new Dispatcher(); + dispatcher.setMaxRequests(1);// 全局最大并发请求数设为1 + dispatcher.setMaxRequestsPerHost(1);// 同一主机的并发请求数也设为1(可选,但更严格) + builder.dispatcher(dispatcher); + builder.connectionPool(new ConnectionPool(20, 1, TimeUnit.SECONDS)); // 设置缓存文件路径 String cacheDirectory = mContext.getExternalCacheDir().getAbsolutePath() + "/OkHttpCache"; Cache cache = new Cache(new File(cacheDirectory), cacheSize); @@ -1938,28 +1944,6 @@ public class NetInterfaceManager { } } - public void setSystemSetting(boolean refresh, BehaviorSubject lifecycle, onCompleteCallback callback) { - ConnectMode connectMode = ConnectMode.ONE_HOUR; - if (refresh) { - connectMode = ConnectMode.DEFAULT; - } - if (ConnectManager.getInstance().isNeedConnect(UrlAddress.GET_FIRMWARE, connectMode)) { - setSystemSetting(lifecycle, callback); - } else { - String jsonString = cacheHelper.getAsString(UrlAddress.GET_FIRMWARE); - //为 "" 是已经请求成功的 - if (jsonString == null) { - setSystemSetting(lifecycle, callback); - } else { - Gson gson = new Gson(); - Type type = new TypeToken() { - }.getType(); - - callback.onComplete(); - } - } - } - public void setSystemSetting(BehaviorSubject lifecycle, onCompleteCallback callback) { getSystemSettingObservable() .observeOn(Schedulers.io()) @@ -3234,31 +3218,6 @@ public class NetInterfaceManager { }); } - public void getAppLimit(boolean refresh, BehaviorSubject lifecycle, onCompleteCallback callback) { - ConnectMode connectMode = ConnectMode.ONE_MINUTE; - if (refresh) { - connectMode = ConnectMode.DEFAULT; - } - if (ConnectManager.getInstance().isNeedConnect(UrlAddress.SET_WHITE_PACKAGE_LIST, connectMode)) { - getAppLimit(lifecycle, callback); - } else { - String jsonString = cacheHelper.getAsString(UrlAddress.SET_WHITE_PACKAGE_LIST); - //为 "" 是已经请求成功的 - if (jsonString == null) { - getAppLimit(lifecycle, callback); - } else { - Gson gson = new Gson(); - Type type = new TypeToken() { - }.getType(); - AppLimit appLimit = gson.fromJson(jsonString, type); - if (appLimit != null) { - Settings.System.putString(mContext.getContentResolver(), JGYActions.ACTION_JGY_SHORTCUTLIST, appLimit.getResult()); - } - callback.onComplete(); - } - } - } - public void getAppLimit(BehaviorSubject lifecycle, onCompleteCallback callback) { Observable.zip(getAppLimitObservable(), getAdminAppObservable(), getBiFunction()) .compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY)) @@ -3325,15 +3284,11 @@ public class NetInterfaceManager { 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, ""); + mMMKV.remove(CommonConfig.AOLE_ALL_APP_WHITE_LIST_KEY); } 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(pkgString); + mMMKV.encode(CommonConfig.AOLE_ALL_APP_WHITE_LIST_KEY, new HashSet<>(strings)); + JgyUtils.getInstance().writeAppPackageList(strings); JgyUtils.getInstance().deleteOtherApp(); } } @@ -3353,49 +3308,6 @@ public class NetInterfaceManager { }; } - private Observer> getAppLimitObserver(onCompleteCallback callback) { - return new Observer>() { - @Override - public void onSubscribe(@NonNull Disposable d) { - Log.e("getAppLimit", "onSubscribe: "); - } - - @Override - public void onNext(@NonNull BaseResponse baseResponse) { - Log.e("getAppLimit", "onNext: " + baseResponse); - if (baseResponse.code == 200) { - AppLimit appLimit = baseResponse.data; - cacheHelper.put(UrlAddress.SET_WHITE_PACKAGE_LIST, GsonUtils.toJSONString(appLimit)); - String result = appLimit.getResult(); - //开机图标 只记录后台传的包名 - Log.e(TAG, "onNext: only_jgy_shortcut_list: " + Settings.System.putString(mContext.getContentResolver(), JGYActions.ACTION_JGY_SHORTCUTLIST, result)); - JgyUtils.getInstance().writeAppPackageList(result); - JgyUtils.getInstance().deleteOtherApp(); - } else { - Settings.System.putString(mContext.getContentResolver(), JGYActions.ACTION_JGY_SHORTCUTLIST, ""); - JgyUtils.getInstance().writeAppPackageList(); - cacheHelper.put(UrlAddress.SET_WHITE_PACKAGE_LIST, ""); - Log.e("getAppLimit", "onNext: " + baseResponse); - } - } - - @Override - public void onError(@NonNull Throwable e) { - Log.e("getAppLimit", "onError: " + e.getMessage()); - onComplete(); - } - - @Override - public void onComplete() { - Log.e("getAppLimit", "onComplete: "); - if (callback != null) { - callback.onComplete(); - } -// getAllAppList(); - } - }; - } - /** * 获取所有app详细信息 */ diff --git a/app/src/main/java/com/aoleyun/sn/receiver/NewAppReceiver.java b/app/src/main/java/com/aoleyun/sn/receiver/NewAppReceiver.java index 42debfc..3fabd97 100644 --- a/app/src/main/java/com/aoleyun/sn/receiver/NewAppReceiver.java +++ b/app/src/main/java/com/aoleyun/sn/receiver/NewAppReceiver.java @@ -11,6 +11,7 @@ import android.util.Log; import com.aoleyun.sn.comm.PackageNames; import com.aoleyun.sn.network.NetInterfaceManager; import com.aoleyun.sn.utils.ApkUtils; +import com.aoleyun.sn.utils.CmdUtil; import com.aoleyun.sn.utils.JgyUtils; import java.util.concurrent.TimeUnit; @@ -39,14 +40,13 @@ public class NewAppReceiver extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { mContext = context; String action = intent.getAction(); - JgyUtils.getInstance().cleanLauncherCache(); Log.e(TAG, "onReceive: " + "action = " + action); - String state; if (TextUtils.isEmpty(action)) { Log.e(TAG, "onReceive: " + "action is empty "); return; } String packageName = intent.getDataString().replace("package:", ""); + String state; switch (action) { case Intent.ACTION_PACKAGE_ADDED: state = "安装了:"; @@ -57,8 +57,15 @@ public class NewAppReceiver extends BroadcastReceiver { state = "重装了:"; break; case Intent.ACTION_PACKAGE_REMOVED: + JgyUtils.getInstance().checkAoleyunApp(); state = "卸载了:"; break; + case Intent.ACTION_PACKAGE_CHANGED: + // 判断是禁用还是启用 + boolean isDisabled = ApkUtils.isDisable(mContext, packageName); + JgyUtils.getInstance().checkAoleyunApp(); + state = (isDisabled ? "禁用:" : "启用:"); + break; default: state = "未知:"; break; @@ -134,7 +141,7 @@ public class NewAppReceiver extends BroadcastReceiver { Observable.create((ObservableEmitter emitter) -> { launcherListener = emitter::onNext; }) - .throttleFirst(10, TimeUnit.SECONDS) + .throttleLast(10, TimeUnit.SECONDS) //这句很关键,这是RxJava中的操作符,在规定时间内观察者不在接收被观察者发送的事件 .subscribe(new Observer() { @Override diff --git a/app/src/main/java/com/aoleyun/sn/service/GuardService.java b/app/src/main/java/com/aoleyun/sn/service/GuardService.java index bf080d4..e77ae72 100644 --- a/app/src/main/java/com/aoleyun/sn/service/GuardService.java +++ b/app/src/main/java/com/aoleyun/sn/service/GuardService.java @@ -257,6 +257,7 @@ public class GuardService extends Service { filter.addAction(Intent.ACTION_PACKAGE_ADDED); filter.addAction(Intent.ACTION_PACKAGE_REPLACED); filter.addAction(Intent.ACTION_PACKAGE_REMOVED); + filter.addAction(Intent.ACTION_PACKAGE_CHANGED); filter.addDataScheme("package"); registerReceiver(mNewAppReceiver, filter); } 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 c1669c2..db8ac07 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 @@ -335,7 +335,7 @@ public class MainSPresenter implements MainSContact.Presenter { @Override public void getAppLimit() { NetInterfaceManager.getInstance() - .getAppLimit(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() { + .getAppLimit( getLifecycle(), new NetInterfaceManager.onCompleteCallback() { @Override public void onComplete() { mView.getAppLimitFinish(); @@ -492,7 +492,7 @@ public class MainSPresenter implements MainSContact.Presenter { @Override public void getSystemSetting() { NetInterfaceManager.getInstance() - .setSystemSetting(true, 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 0f291f8..6a4d75c 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 @@ -557,6 +557,7 @@ public class MainService extends Service implements MainSContact.MainView, Netwo .throttleLast(30, TimeUnit.SECONDS) // .throttleLast(3, TimeUnit.SECONDS) .subscribe(killObserver); + JgyUtils.getInstance().checkAoleyunApp(); } @Override diff --git a/app/src/main/java/com/aoleyun/sn/utils/ApkUtils.java b/app/src/main/java/com/aoleyun/sn/utils/ApkUtils.java index b67c1e4..280361f 100644 --- a/app/src/main/java/com/aoleyun/sn/utils/ApkUtils.java +++ b/app/src/main/java/com/aoleyun/sn/utils/ApkUtils.java @@ -725,6 +725,18 @@ public class ApkUtils { return isAvailable(context, getPackageName(context, file.getAbsolutePath())); } + public static boolean isDisable(Context context, String pkg) { + if (!isAvailable(context, pkg)) { + return true; + } + PackageManager pm = context.getPackageManager(); + if (pm.getApplicationEnabledSetting(pkg) == PackageManager.COMPONENT_ENABLED_STATE_DISABLED) { + return true; + } else { + return false; + } + } + /** * 根据文件路径获取包名 */ @@ -1354,53 +1366,7 @@ public class ApkUtils { } public static void addShortcut(Context context) { - String result = Settings.System.getString(context.getContentResolver(), JGYActions.ACTION_JGY_SHORTCUTLIST); - if (TextUtils.isEmpty(result)) { - Settings.System.putString(context.getContentResolver(), "qch_launcher_icon_app", ""); - return; - } - Log.e("addShortcut", "addShortcut: " + result); - String[] stringList = result.split(","); - HashSet packages = new HashSet<>(Arrays.asList(stringList)); - String romapps = Settings.System.getString(context.getContentResolver(), "jgy_customromapp"); - Log.e(TAG, "addShortcut: romapps: " + romapps); - HashSet appSet = new HashSet<>(); - if (!TextUtils.isEmpty(romapps)) { - appSet = new HashSet<>(Arrays.asList(romapps.split(","))); - packages.addAll(appSet); - } - packages.removeIf(new Predicate() { - @Override - public boolean test(String s) { - return TextUtils.isEmpty(s); - } - }); - StringBuilder installedListBuilder = new StringBuilder(); - for (String s : packages) { - if (PackageNames.DEVICE_INFO.equals(s) || PackageNames.APPSTORE.equals(s)) { - continue; - } - if (ApkUtils.isSystemApp(context, s)) { - if (!appSet.contains(s)) { - continue; - } - } - if (!ApkUtils.isAvailable(context, s)) { - continue; - } -// ApkUtils.getStartActivityName(context, s); - if (installedListBuilder.length() > 0) { - installedListBuilder.append(","); - } - installedListBuilder.append(s); - Log.i("addShortcut", "packages: " + s); - } - String installedList = installedListBuilder.toString(); - boolean aole_force_app = Settings.System.putString(context.getContentResolver(), "qch_launcher_icon_app", installedList); -// String old = Settings.System.getString(context.getContentResolver(), "qch_launcher_icon_app"); -// Log.e("addShortcut", old); - Log.e("addShortcut", "installedList:" + installedList); - Log.e("addShortcut", "putstring:" + aole_force_app); + } private static final Set AoleyunOSApp = new HashSet() {{ @@ -1431,6 +1397,25 @@ public class ApkUtils { }}; + public static final HashSet G30_APP = new HashSet() {{ + this.add("com.android.browser"); + this.add("com.android.calendar"); + this.add("com.android.contacts"); + this.add("com.android.dialer"); + this.add("com.android.gallery3d"); + this.add("com.android.mms"); + this.add("com.android.music"); + this.add("com.android.documentsui"); + this.add("com.android.fmradio"); + this.add("com.android.inputmethod.latin"); + this.add("com.android.stk"); + + this.add("com.eduyun.app.factory.ykt"); + this.add("com.huawei.appmarket"); + this.add("com.qiyi.video"); + this.add("com.ss.android.ugc.aweme"); + this.add("com.tencent.mm"); + }}; public static String getRunningAppInfo(Context context) { MMKV mmkv = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE); @@ -1442,11 +1427,11 @@ public class ApkUtils { ArrayList appList = new ArrayList<>(); List packages = context.getPackageManager().getInstalledPackages(0); String topPkg = ForegroundAppUtil.getForegroundPackageName(context); - Log.e(TAG, "getRunningAppInfo: " + topPkg); + Log.e(TAG, "getRunningAppInfo: topPkg = " + topPkg); for (PackageInfo packageInfo : packages) { String packageName = packageInfo.packageName; //排除出厂自带app - if (factoryapp.contains(packageName)) { + if (factoryapp.contains(packageName) && !G30_APP.contains(packageName)) { continue; } //排除所有系统应用,不显示 @@ -1457,21 +1442,23 @@ public class ApkUtils { && !dongwa.contains(packageName) && !yixuepaiApp.contains(packageName) && !mJxwApp.contains(packageName) + && !G30_APP.contains(packageName) && !allPkgSet.contains(packageName) ) { - Log.e(TAG, "getRunningAppInfo: continue = " + packageName); + Log.e(TAG, "getRunningAppInfo system: continue = " + packageName); continue; } } else { //排除预装可以卸载的应用 if (canremove_systemapp.contains(packageName)) { + Log.e(TAG, "getRunningAppInfo user: continue = " + packageName); continue; } } UploadAppInfo uploadAppInfo = new UploadAppInfo(); uploadAppInfo.setApp_name(packageInfo.applicationInfo.loadLabel(context.getPackageManager()).toString()); uploadAppInfo.setPackage_name(packageName); - Log.e("getRunningAppInfo", "getRunningAppInfo:" + packageName); + Log.e("getRunningAppInfo", "add:" + packageName); String firstInstallTime = TimeUtils.transferLongToDate(packageInfo.lastUpdateTime); uploadAppInfo.setInstall_time(firstInstallTime); uploadAppInfo.setVersionCode(String.valueOf(packageInfo.versionCode)); diff --git a/app/src/main/java/com/aoleyun/sn/utils/BootManager.java b/app/src/main/java/com/aoleyun/sn/utils/BootManager.java index 449959a..a868a7f 100644 --- a/app/src/main/java/com/aoleyun/sn/utils/BootManager.java +++ b/app/src/main/java/com/aoleyun/sn/utils/BootManager.java @@ -25,10 +25,7 @@ public class BootManager { } private void sendLauncherIcon() { - String packageList = Settings.System.getString(mContext.getContentResolver(), JGYActions.ACTION_JGY_SHORTCUTLIST); - if (TextUtils.isEmpty(packageList)) { - Settings.System.putString(mContext.getContentResolver(), "qch_launcher_icon_app", ""); - } + } private void timeControlUpdate() { 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 2b6be63..3a49c66 100644 --- a/app/src/main/java/com/aoleyun/sn/utils/JgyUtils.java +++ b/app/src/main/java/com/aoleyun/sn/utils/JgyUtils.java @@ -1364,6 +1364,10 @@ public class JgyUtils { SysSettingUtils.setDisableSetting(mContext); SPUtils.put(mContext, JGYActions.ACTION_STATUSBAR_STATUS, ""); } else { + if (JgyUtils.getInstance().getAppPlatform().equals(JgyUtils.ZR6016Tag)) { + Log.e(TAG, "SettingSysData: ZR6016Tag"); + SysSettingUtils.setBluetooth(mContext, 0); + } SysSettingUtils.setSystemSetting(mContext, data); } } @@ -1441,14 +1445,15 @@ public class JgyUtils { } @SuppressLint("NewApi") - public void writeAppPackageList(String packageList) { + public void writeAppPackageList(List pkgs) { if (isUnlocked(mContext)) { addAppInstallWhiteList(new ArrayList<>()); setAppRestriction(0); return; } ApkUtils.addShortcut(mContext); - HashSet pkgSet = new HashSet<>(Arrays.asList(packageList.split(","))); + HashSet pkgSet = new HashSet<>(defaultPackages); + pkgSet.addAll(pkgs); pkgSet.addAll(getWhitePkgList()); pkgSet.removeIf(TextUtils::isEmpty); String aole_app_forbid = String.join(",", pkgSet); @@ -1701,29 +1706,23 @@ public class JgyUtils { } Log.e(TAG, "deleteOtherApp: " + "start"); - String[] result_white = new String[]{}; - String[] result_forbid = new String[]{}; - //获取后台应用白名单 - String only_jgy_shortcut_list = Settings.System.getString(crv, JGYActions.ACTION_JGY_SHORTCUTLIST); - if (!TextUtils.isEmpty(only_jgy_shortcut_list)) { - result_white = only_jgy_shortcut_list.split(","); - } + Set allAppWhiteSet = mMMKV.decodeStringSet(CommonConfig.AOLE_ALL_APP_WHITE_LIST_KEY, new HashSet<>()); + Log.e("deleteOtherApp", "allAppWhiteSet:" + allAppWhiteSet); + + List resulWhitetList = new ArrayList<>(defaultPackages); + resulWhitetList.addAll(allAppWhiteSet); //获取可以被安装的包名 String aole_app_forbid = Settings.System.getString(crv, CommonConfig.AOLE_ACTION_APP_FORBID); - if (!TextUtils.isEmpty(aole_app_forbid)) { - result_forbid = aole_app_forbid.split(","); - } - Log.e("deleteOtherApp", "only_jgy_shortcut_list:" + only_jgy_shortcut_list); Log.e("deleteOtherApp", "aole_app_forbid:" + aole_app_forbid); + if (!TextUtils.isEmpty(aole_app_forbid)) { + List result_forbid = new ArrayList<>(Arrays.asList(aole_app_forbid.split(","))); + resulWhitetList.addAll(result_forbid); + } - List resulWhitetList = new ArrayList<>(Arrays.asList(result_white)); - List resulForbidtList = new ArrayList<>(Arrays.asList(result_forbid)); - resulWhitetList.addAll(resulForbidtList); - HashSet allWhitePkg = new HashSet<>(resulWhitetList); List installedPackageList = ApkUtils.queryFilterAppInfo(mContext); Log.e("deleteOtherApp", "installedPackageList:" + installedPackageList.toString()); - if (allWhitePkg.size() > 0) { + if (resulWhitetList.size() > 0) { for (final String packageName : installedPackageList) { if (ApkUtils.isSystemApp(mContext, packageName)) { Log.e("deleteOtherApp", "is systemApp:" + packageName); @@ -1748,7 +1747,7 @@ public class JgyUtils { ) { continue; } - if (!allWhitePkg.contains(packageName)) { + if (!resulWhitetList.contains(packageName)) { ApkUtils.UninstallAPP(mContext, packageName); Log.e("deleteOtherApp", "uninstall apkName:" + packageName); } @@ -2039,22 +2038,17 @@ public class JgyUtils { } } - private static int changeNum(int status) { - return status == 0 ? 1 : 0; - } - /** * @param state 1打开 0关闭 */ public void setDeveloperOptions(int state) { - int newStatu = changeNum(state); - int oldStatu = Settings.System.getInt(crv, CommonConfig.AOLE_ACTION_DEVELOPER_OPTIONS, 1); - if (oldStatu == newStatu) { + int oldStatu = Settings.System.getInt(crv, CommonConfig.AOLE_ACTION_DEVELOPER_OPTIONS, 0); + if (oldStatu == state) { Log.e(TAG, "setDeveloperOptions: oldStatu = " + oldStatu + " no changed"); } Log.e(TAG, "getDeveloper: state = " + state); //这个需要反着来 - Settings.System.putInt(crv, CommonConfig.AOLE_ACTION_DEVELOPER_OPTIONS, newStatu); + Settings.System.putInt(crv, CommonConfig.AOLE_ACTION_DEVELOPER_OPTIONS, state); Log.e(TAG, "setDeveloperOptions: DEVELOPMENT_SETTINGS_ENABLED = " + Settings.Global.getInt(crv, Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0)); Log.e(TAG, "setDeveloperOptions: ADB_ENABLED = " + Settings.Global.getInt(crv, Settings.Global.ADB_ENABLED, 0)); @@ -2203,6 +2197,7 @@ public class JgyUtils { mContext.startActivity(intent); } + @Deprecated public void cleanLauncherCache() { Log.e(TAG, "cleanLauncherCache: Start"); int cleaned = (int) SPUtils.get(mContext, "fristcleanLauncherCache", 0); @@ -3524,4 +3519,48 @@ public class JgyUtils { || "G11J".equals(Build.MODEL); } + public void checkAoleyunApp() { + boolean availableSn = ApkUtils.isAvailable(mContext, "com.aoleyun.sn"); + boolean disableSn = ApkUtils.isDisable(mContext, "com.aoleyun.sn"); + Log.e(TAG, "checkAoleyunApp: sn isAvailable = " + availableSn); + if (!availableSn || disableSn) { + CmdUtil.Result installResult = CmdUtil.execute("cmd package install-existing com.aoleyun.sn"); + Log.e(TAG, "checkAoleyunApp: sn install = " + installResult); + CmdUtil.Result enableResult = CmdUtil.execute("pm enable com.aoleyun.sn"); + Log.e(TAG, "checkAoleyunApp: sn enable = " + enableResult); + } + + boolean availableAudos = ApkUtils.isAvailable(mContext, "com.aoleyun.audos"); + boolean disableAudos = ApkUtils.isDisable(mContext, "com.aoleyun.audos"); + Log.e(TAG, "checkAoleyunApp: audos isAvailable = " + availableAudos); + if (!availableAudos || disableAudos) { + CmdUtil.Result installResult = CmdUtil.execute("cmd package install-existing com.aoleyun.audos"); + Log.e(TAG, "checkAoleyunApp: audos install = " + installResult); + CmdUtil.Result enableResult = CmdUtil.execute("pm enable com.aoleyun.audos"); + Log.e(TAG, "checkAoleyunApp: audos enable = " + enableResult); + } + + boolean availableOs = ApkUtils.isAvailable(mContext, "com.aoleyun.os"); + boolean disableOs = ApkUtils.isDisable(mContext, "com.aoleyun.os"); + Log.e(TAG, "checkAoleyunApp: os isAvailable = " + availableOs); + if (!availableOs || disableOs) { + CmdUtil.Result installResult = CmdUtil.execute("cmd package install-existing com.aoleyun.os"); + Log.e(TAG, "checkAoleyunApp: os install = " + installResult); + CmdUtil.Result enableResult = CmdUtil.execute("pm enable com.aoleyun.os"); + Log.e(TAG, "checkAoleyunApp: os enable = " + enableResult); + } + + +// boolean availableAppstore = ApkUtils.isAvailable(mContext, "com.aoleyun.appstore"); +// boolean disableAppstore = ApkUtils.isDisable(mContext, "com.aoleyun.audos"); +// Log.e(TAG, "checkAoleyunApp: appstore isAvailable = " + availableAppstore); +// if (!availableAppstore || disableAppstore) { +// CmdUtil.Result installResult = CmdUtil.execute("cmd package install-existing com.aoleyun.appstore"); +// Log.e(TAG, "checkAoleyunApp: appstore install = " + installResult); +// CmdUtil.Result enableResult = CmdUtil.execute("pm enable com.aoleyun.appstore"); +// Log.e(TAG, "checkAoleyunApp: appstore enable = " + enableResult); +// } + + } + } diff --git a/app/src/main/java/com/aoleyun/sn/utils/SysSettingUtils.java b/app/src/main/java/com/aoleyun/sn/utils/SysSettingUtils.java index b2fa638..5f678ee 100644 --- a/app/src/main/java/com/aoleyun/sn/utils/SysSettingUtils.java +++ b/app/src/main/java/com/aoleyun/sn/utils/SysSettingUtils.java @@ -84,6 +84,7 @@ public class SysSettingUtils { setUSBstate(context, 1); if (JgyUtils.getInstance().getAppPlatform().equals(JgyUtils.YXPD1TAG) || JgyUtils.getInstance().getAppPlatform().equals(JgyUtils.C2Tag) + || JgyUtils.getInstance().getAppPlatform().equals(JgyUtils.ZR6016Tag) ) { setBluetooth(context, 0); } else { @@ -297,7 +298,7 @@ public class SysSettingUtils { * @param context * @param state 1关闭 0打开 */ - private static void setBluetooth(Context context, int state) { + public static void setBluetooth(Context context, int state) { Log.e(TAG, "setBluetooth: state = " + state); MMKV mmkv = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);