From e1c6d6942806adeb88f8bddba41ed9d6000d5edd Mon Sep 17 00:00:00 2001 From: fanhuitong <981964879@qq.com> Date: Mon, 11 Oct 2021 18:27:32 +0800 Subject: [PATCH] =?UTF-8?q?version:1.7.4=20date:2021-10-11=2018:27:04=20fi?= =?UTF-8?q?x:=E4=BF=AE=E5=A4=8D=E7=A6=81=E6=AD=A2=E5=8D=87=E7=BA=A7?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=A4=B1=E6=95=88=EF=BC=8C=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E9=87=8D=E5=A4=8D=E4=B8=8B=E8=BD=BD,=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E6=97=B6=E9=92=9F=E7=AE=A1=E6=8E=A7=E5=A4=B1=E6=95=88=EF=BC=8C?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E4=BF=A1=E6=81=AF=E7=9A=84=E6=BF=80=E6=B4=BB?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E4=BF=AE=E5=A4=8D=20add:?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 7 +-- app/src/main/AndroidManifest.xml | 4 +- .../com/info/sn/activity/SNUidActivity.java | 7 +-- .../java/com/info/sn/base/BaseActivity.java | 24 ++++++++++- .../com/info/sn/network/HTTPInterface.java | 1 + .../com/info/sn/receiver/MyJPushReceiver.java | 43 +++++++++++++++---- .../main/java/com/info/sn/utils/JGYUtils.java | 3 ++ .../main/java/com/info/sn/utils/SPUtils.java | 2 +- .../main/java/com/info/sn/utils/Utils.java | 40 ++++++----------- app/src/main/res/values/colors.xml | 9 ++-- app/src/main/res/values/styles.xml | 11 +++++ 11 files changed, 100 insertions(+), 51 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 9e14206..9268411 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,8 +15,8 @@ android { applicationId "com.info.sn" minSdkVersion 24 targetSdkVersion 29 - versionCode 73 - versionName "1.7.3" + versionCode 74 + versionName "1.7.4" multiDexEnabled true testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" ndk { @@ -220,7 +220,8 @@ dependencies { // If you are using Kotlin, replace annotationProcessor with kapt. // annotationProcessor rootProject.ext.dependencies["butterknife-compiler"] annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1' - + //沉浸状态栏 + implementation 'com.gitee.zackratos:UltimateBarX:0.7.1' } preBuild { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index bdc4110..530e828 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -57,10 +57,10 @@ android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:networkSecurityConfig="@xml/network" - android:roundIcon="@mipmap/ic_launcher" android:requestLegacyExternalStorage="true" + android:roundIcon="@mipmap/ic_launcher" android:supportsRtl="true" - android:theme="@style/AppTheme"> + android:theme="@style/ImmerseTheme"> finish()); } @Override diff --git a/app/src/main/java/com/info/sn/base/BaseActivity.java b/app/src/main/java/com/info/sn/base/BaseActivity.java index 24d066f..e90ca3c 100644 --- a/app/src/main/java/com/info/sn/base/BaseActivity.java +++ b/app/src/main/java/com/info/sn/base/BaseActivity.java @@ -1,26 +1,46 @@ package com.info.sn.base; +import android.app.ActivityManager; +import android.graphics.Bitmap; +import android.os.Build; import android.os.Bundle; import androidx.annotation.Nullable; +import com.info.sn.BuildConfig; +import com.info.sn.R; import com.info.sn.utils.StatusBarUtil; import com.trello.rxlifecycle2.components.support.RxAppCompatActivity; +import com.zackratos.ultimatebarx.ultimatebarx.java.UltimateBarX; public abstract class BaseActivity extends RxAppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); - StatusBarUtil.init(this); +// StatusBarUtil.init(this); + UltimateBarX.statusBar(this) + .transparent() + .colorRes(R.color.colorPrimaryDark) + .light(true) + .apply(); + UltimateBarX.navigationBar(this) + .transparent() + .colorRes(R.color.colorPrimaryDark) + .light(true) + .apply(); setContentView(this.getLayoutId()); initView(); initData(); + //最近任务和应用图标不一样 + if (Build.VERSION.SDK_INT > 27) { + ActivityManager.TaskDescription description = new ActivityManager.TaskDescription(getString(R.string.app_name), R.mipmap.ic_launcher, getColor(R.color.colorPrimary)); + this.setTaskDescription(description); + } } /** * 设置布局 - * */ public abstract int getLayoutId(); diff --git a/app/src/main/java/com/info/sn/network/HTTPInterface.java b/app/src/main/java/com/info/sn/network/HTTPInterface.java index 15ff33c..7c96fa8 100644 --- a/app/src/main/java/com/info/sn/network/HTTPInterface.java +++ b/app/src/main/java/com/info/sn/network/HTTPInterface.java @@ -662,6 +662,7 @@ public class HTTPInterface { if (null != appInfos && appInfos.size() != 0) { getForceInstallState(context, appInfos); } + JGYUtils.getInstance().deleteOtherApp(); } else { boolean qch_force_app = JGYUtils.putString(context.getContentResolver(), "qch_force_app", "invalid"); Log.e(TAG, "qch_force_app:" + qch_force_app + ":" + "invalid"); diff --git a/app/src/main/java/com/info/sn/receiver/MyJPushReceiver.java b/app/src/main/java/com/info/sn/receiver/MyJPushReceiver.java index c10b30a..feee043 100644 --- a/app/src/main/java/com/info/sn/receiver/MyJPushReceiver.java +++ b/app/src/main/java/com/info/sn/receiver/MyJPushReceiver.java @@ -49,6 +49,7 @@ import com.info.sn.utils.ApkUtils; import com.info.sn.utils.CacheUtils; import com.info.sn.utils.CmdUtil; import com.info.sn.manager.DeviceManager; +import com.info.sn.utils.ForegroundAppUtil; import com.info.sn.utils.JGYUtils; import com.info.sn.utils.LaunchTools; import com.info.sn.utils.SPUtils; @@ -61,11 +62,15 @@ import org.jetbrains.annotations.NotNull; import java.io.File; import java.lang.reflect.Type; +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; +import java.util.Date; import java.util.HashMap; import java.util.HashSet; import java.util.List; +import java.util.TimeZone; import cn.jpush.android.api.JPushInterface; import io.reactivex.Observable; @@ -213,7 +218,7 @@ public class MyJPushReceiver extends BroadcastReceiver { String type = bundle.getString(JPushInterface.EXTRA_CONTENT_TYPE); String extras = bundle.getString(JPushInterface.EXTRA_EXTRA); // HTTPInterface.checkDevicesInfo(context); - Log.e(TAG, "processCustomMessage: " + message); + Log.e(TAG, "processCustomMessage: " + extras); switch (message) { default: break; @@ -266,7 +271,7 @@ public class MyJPushReceiver extends BroadcastReceiver { ToastUtil.debugShow("收到推送消息: 强制安装应用"); HTTPInterface.getAllappPackage(context); HTTPInterface.getForceInstall(context); - intallApk(context, extras); +// intallApk(context, extras); break; case JIGUANG_FORCE_UNINSTALLAPK: ToastUtil.debugShow("收到推送消息: 强制卸载应用"); @@ -322,6 +327,14 @@ public class MyJPushReceiver extends BroadcastReceiver { case JIGUANG_SYSTEM_SETTING: ToastUtil.debugShow("收到推送消息: 系统管控"); ControlManager.getInstance().setSystemSetting(context, extras); +// if ("com.jiaoguanyi.os".equals(ForegroundAppUtil.getForegroundPackageName(context))) { +// JGYUtils.getInstance().killBackgroundProcesses(context, "com.jiaoguanyi.os"); +// Intent intent = context.getPackageManager().getLaunchIntentForPackage("com.jiaoguanyi.os"); +// intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); +// context.startActivity(intent); +// } else { +// JGYUtils.getInstance().killBackgroundProcesses(context, "com.jiaoguanyi.os"); +// } break; case JIGUANG_RESET_DEVICES: ToastUtil.debugShow("收到推送消息: 设备恢复出厂设置"); @@ -984,12 +997,12 @@ public class MyJPushReceiver extends BroadcastReceiver { } else { HashSet infoSet = new HashSet<>(Arrays.asList(taocan.split(","))); for (String cardInfo : infoSet) { - queryAvailableProduct(cardInfo); + queryAvailableProduct(context, cardInfo); } } } - public void queryAvailableProduct(String card_info) { + public void queryAvailableProduct(Context context, String card_info) { String appid = Scheme.partner_id; String timestamp = String.valueOf(System.currentTimeMillis()); HashMap params = new HashMap<>(); @@ -1020,7 +1033,7 @@ public class MyJPushReceiver extends BroadcastReceiver { product = availableProduct; } } - activeUser(product); + activeUser(context, product); } else { ToastUtil.show("获取激活套餐失败"); } @@ -1038,7 +1051,7 @@ public class MyJPushReceiver extends BroadcastReceiver { }); } - public void activeUser(@NotNull AvailableProduct product) { + public void activeUser(Context context, @NotNull AvailableProduct product) { if (product == null) { ToastUtil.show("获取套餐失败"); return; @@ -1071,7 +1084,7 @@ public class MyJPushReceiver extends BroadcastReceiver { switch (gankaoBaseResponse.code) { case 10000: case 50000: -// sendUid(product, gankaoUID); + queryAvailableProduct(context); ToastUtil.show("激活成功:" + product.getDuration()); break; default: @@ -1298,7 +1311,7 @@ public class MyJPushReceiver extends BroadcastReceiver { JSONObject jsonObject = new JSONObject(); jsonObject.put("card_info", powerUser.getAuthorityName()); jsonObject.put("grade", powerUser.getGrade()); - jsonObject.put("activate_time", powerUser.getAuthorizationDate()); + jsonObject.put("activate_time", getTime(powerUser.getAuthorizationDate())); jsonObject.put("user_power_id", powerUser.getAuthorizationNumber()); jsonObject.put("specification_id", mAvailableProductHashMap.get(powerUser.getAuthorityName())); jsonArray.add(jsonObject); @@ -1322,6 +1335,20 @@ public class MyJPushReceiver extends BroadcastReceiver { }); } + private String getTime(String timestamp) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.S'Z'"); + sdf.setTimeZone(TimeZone.getTimeZone("GMT+00")); + SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + try { + Date date = sdf.parse(timestamp);//拿到Date对象. + String str = sdf2.format(date); + return str; + } catch (ParseException e) { + e.printStackTrace(); + return timestamp; + } + } + public void sendUid(Context context, String jsonString) { int grade = (int) SPUtils.get(context, "int_grade", 0); diff --git a/app/src/main/java/com/info/sn/utils/JGYUtils.java b/app/src/main/java/com/info/sn/utils/JGYUtils.java index 88de53f..cb873c6 100644 --- a/app/src/main/java/com/info/sn/utils/JGYUtils.java +++ b/app/src/main/java/com/info/sn/utils/JGYUtils.java @@ -576,6 +576,9 @@ public class JGYUtils { disableApp.add("com.android.documentsui"); disableApp.add("com.mediatek.filemanager"); } + if (JGYUtils.getInt(context.getContentResolver(), "qch_app_deskclock", 0) == 1) { + disableApp.add("com.android.deskclock"); + } if (JGYUtils.getInt(context.getContentResolver(), "qch_app_soundrecorder", 0) == 1) { disableApp.add("com.android.soundrecorder"); } diff --git a/app/src/main/java/com/info/sn/utils/SPUtils.java b/app/src/main/java/com/info/sn/utils/SPUtils.java index 5a1f27f..5a3cc51 100644 --- a/app/src/main/java/com/info/sn/utils/SPUtils.java +++ b/app/src/main/java/com/info/sn/utils/SPUtils.java @@ -188,7 +188,7 @@ public class SPUtils { public static boolean apply(SharedPreferences.Editor editor) { try { if (sApplyMethod != null) { - Log.e(TAG, "apply: false"); + Log.i(TAG, "apply: false"); sApplyMethod.invoke(editor); return false; } diff --git a/app/src/main/java/com/info/sn/utils/Utils.java b/app/src/main/java/com/info/sn/utils/Utils.java index fa43112..487e63f 100644 --- a/app/src/main/java/com/info/sn/utils/Utils.java +++ b/app/src/main/java/com/info/sn/utils/Utils.java @@ -870,56 +870,44 @@ public class Utils { //所有app String only_jgy_shortcut_list = Settings.System.getString(context.getContentResolver(), "only_jgy_shortcut_list"); Log.e("writeDisableUpdateList", now); - List nowList = new ArrayList<>(); - List disallowList = new ArrayList<>(); - List allList = new ArrayList<>(); + HashSet nowList = new HashSet<>(); + HashSet disallowList = new HashSet<>(); + HashSet allList = new HashSet<>(); if (!TextUtils.isEmpty(now)) { - nowList = new ArrayList<>(new HashSet<>(Arrays.asList(now.trim().replaceAll(" ", "").split(",")))); + nowList = new HashSet<>(Arrays.asList(now.trim().replaceAll(" ", "").split(","))); } if (!TextUtils.isEmpty(upgrade_disallow)) { - disallowList = new ArrayList<>(new HashSet<>(Arrays.asList(upgrade_disallow.trim().replaceAll(" ", "").split(",")))); + disallowList = new HashSet<>(Arrays.asList(upgrade_disallow.trim().replaceAll(" ", "").split(","))); } if (!TextUtils.isEmpty(only_jgy_shortcut_list)) { - allList = new ArrayList<>(new HashSet<>(Arrays.asList(only_jgy_shortcut_list.trim().replaceAll(" ", "").split(",")))); + allList = new HashSet<>(Arrays.asList(only_jgy_shortcut_list.trim().replaceAll(" ", "").split(","))); } Log.e("writeDisableUpdateList", "nowList: " + nowList); Log.e("writeDisableUpdateList", "upgrade_disallow: " + disallowList); Log.e("writeDisableUpdateList", "only_jgy_shortcut_list: " + allList); - if (allList.size() != 0) { - List finalAllList = allList; - nowList.removeIf(new Predicate() { - @Override - public boolean test(String s) { - return !finalAllList.contains(s); - } - }); - } + //合并 + allList.addAll(nowList); - boolean writeSucceed = false; for (String s : disallowList) { if (ApkUtils.isAvailable(context, s)) { - if (nowList.remove(s)) { + if (allList.remove(s)) { Log.e("writeDisableUpdateList", "remove :" + s); } else { Log.e("writeDisableUpdateList", "remove failed:" + s); } //去掉已经安装的 } else { - if (!nowList.contains(s)) { - nowList.add(s); + if (!allList.contains(s)) { + allList.add(s); } //没有安装就加入进去 //没有加入会导致安装后卸载不能再安装的情况 } - Log.e("writeDisableUpdateList", "nowList:" + nowList); - } - for (String s : nowList) { - if (!allList.contains(s)) { - allList.add(s); - //没找到元素添加到白名单 - } + Log.e("writeDisableUpdateList", "allList:" + allList); } + boolean writeSucceed = false; if (allList.size() > 0) { + Log.e("writeDisableUpdateList", "allList:" + allList); String list = String.join(",", allList); writeSucceed = JGYUtils.putString(context.getContentResolver(), "qch_app_forbid", list); Log.e("writeDisableUpdateList", "qch_app_forbid:" + list); diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index c185b95..c7b5845 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -1,8 +1,11 @@ - #008577 - #00574B - #D81B60 + #FFFFFF + #FFFFFF + #FFFFFF + + + #ffffff #000000 diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 832722e..f0992f9 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -7,6 +7,17 @@ @color/colorPrimaryDark @color/colorAccent + + + +