diff --git a/app/build.gradle b/app/build.gradle
index a015026..8666787 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -81,25 +81,32 @@ android {
//酷比魔方
cube {
flavorDimensions "default"
- versionCode 79
- versionName "6.3.9"
+ versionCode 80
+ versionName "6.4.0"
buildConfigField "String", "platform", '"ZhanRuiCube"'
}
//MTK
MTKnewly {
flavorDimensions "default"
- versionCode 54
- versionName "2.4.4"
+ versionCode 55
+ versionName "2.4.5"
buildConfigField "String", "platform", '"MTK"'
}
Huaruian {
flavorDimensions "default"
- versionCode 7
- versionName "1.0.6"
+ versionCode 8
+ versionName "1.0.7"
buildConfigField "String", "platform", '"MTK11"'
}
+
+ Teclast {
+ flavorDimensions "default"
+ versionCode 8
+ versionName "1.0.7"
+ buildConfigField "String", "platform", '"P20S"'
+ }
}
sourceSets {
@@ -108,7 +115,6 @@ android {
// newly.res.srcDirs = ['src/beta/res']
}
-
//签名
signingConfigs {
zhanRui {
@@ -164,6 +170,14 @@ android {
v1SigningEnabled true
v2SigningEnabled true
}
+
+ P20S {
+ storeFile file("keystore/MTKP20S.keystore")
+ storePassword "123456"
+ keyAlias "MTKP20S"
+ keyPassword "123456"
+ v2SigningEnabled false
+ }
}
// Disable release builds for now
@@ -227,6 +241,18 @@ android {
signingConfig signingConfigs.G10PUserDebug
}
+ TeclastP20SDebug.initWith(debug)
+ TeclastP20SDebug {
+ debuggable true
+ versionNameSuffix "-debug"
+ signingConfig signingConfigs.P20S
+ }
+
+ TeclastP20SRelease.initWith(release)
+ TeclastP20SRelease {
+ signingConfig signingConfigs.P20S
+ }
+
zhanRuiDebug.initWith(debug)
zhanRuiDebug {
debuggable true
@@ -304,6 +330,7 @@ dependencies {
compileOnly files('libs/framework.jar')
compileOnly files('libs/cube_mdm.jar')
compileOnly files('libs/cube_sdk_v1.0.0.jar')
+ implementation files('libs/vendor.mediatek.hardware.nvram-V1.0-java.jar')
implementation 'androidx.recyclerview:recyclerview:1.2.1'
implementation 'androidx.cardview:cardview:1.0.0'
@@ -349,14 +376,16 @@ dependencies {
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.9.1'
//磁盘缓存
implementation 'com.jakewharton:disklrucache:2.0.2'
- //fastjson
- implementation 'com.alibaba:fastjson:1.2.83'
+ //阿里云推送
+ implementation 'com.aliyun.ams:alicloud-android-push:3.8.0'
+// //fastjson
+// implementation 'com.alibaba:fastjson:1.2.83'
//百度地图
implementation 'com.baidu.lbsyun:BaiduMapSDK_Location:9.1.8'
//MMKV
implementation 'com.tencent:mmkv-static:1.2.13'
//腾讯移动推送 TPNS
- implementation 'com.tencent.tpns:tpns:1.3.2.0-release'
+ implementation 'com.tencent.tpns:tpns:1.4.0.1-release'
//工具类
implementation 'com.blankj:utilcodex:1.31.0'
//Aria
diff --git a/app/keystore/MTKP20S.keystore b/app/keystore/MTKP20S.keystore
new file mode 100644
index 0000000..1156f88
Binary files /dev/null and b/app/keystore/MTKP20S.keystore differ
diff --git a/app/libs/vendor.mediatek.hardware.nvram-V1.0-java.jar b/app/libs/vendor.mediatek.hardware.nvram-V1.0-java.jar
new file mode 100644
index 0000000..86849f7
Binary files /dev/null and b/app/libs/vendor.mediatek.hardware.nvram-V1.0-java.jar differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 2155cd8..01678ec 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -309,77 +309,9 @@
android:name="org.apache.http.legacy"
android:required="false" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -388,18 +320,35 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+ android:name=".push.alipush.AliMessageIntentService"
+ android:exported="false">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/aoleyun/sn/activity/main/MainAPresenter.java b/app/src/main/java/com/aoleyun/sn/activity/main/MainAPresenter.java
index 91aafd4..ec30e72 100644
--- a/app/src/main/java/com/aoleyun/sn/activity/main/MainAPresenter.java
+++ b/app/src/main/java/com/aoleyun/sn/activity/main/MainAPresenter.java
@@ -85,7 +85,7 @@ public class MainAPresenter implements MainAContact.Presenter {
@Override
public void getQrCode(boolean loocked) {
- String encryptString = CXAESUtil.encrypt(CommonConfig.AES_KEY, Utils.getSerial());
+ String encryptString = CXAESUtil.encrypt(CommonConfig.AES_KEY, Utils.getSerial(mContext));
Log.e("getQRCode", "setImageAndText: " + encryptString);
Bitmap bitmap = Utils.createQRImage(encryptString, 400, 400);
mView.setQrCode(bitmap);
diff --git a/app/src/main/java/com/aoleyun/sn/activity/main/MainActivity.java b/app/src/main/java/com/aoleyun/sn/activity/main/MainActivity.java
index d300c67..7e903b4 100644
--- a/app/src/main/java/com/aoleyun/sn/activity/main/MainActivity.java
+++ b/app/src/main/java/com/aoleyun/sn/activity/main/MainActivity.java
@@ -252,7 +252,12 @@ public class MainActivity extends BaseActivity implements MainAContact.MainView,
tv_model.setText(Build.MODEL);
String sn = Utils.getSerial(this);
Log.e(TAG, "getDevicesInfo: " + sn);
- tv_serial.setText(sn);
+ Log.e(TAG, "getDevicesInfo: " + Utils.getMac());
+ if (TextUtils.isEmpty(sn)) {
+ tv_serial.setText(getString(R.string.no_data));
+ } else {
+ tv_serial.setText(sn);
+ }
getIMEI();
setMac();
checkSnError(sn);
@@ -264,7 +269,7 @@ public class MainActivity extends BaseActivity implements MainAContact.MainView,
}
private void getIMEI() {
- if (!Utils.NOSN.equalsIgnoreCase(Utils.getSerial())) {
+ if (!Utils.NOSN.equalsIgnoreCase(Utils.getSerial(this))) {
tv_imei.setText(Utils.getIMEI(this, 1));
} else {
if (!TextUtils.isEmpty(Utils.getIMEI(this, 1))) {
diff --git a/app/src/main/java/com/aoleyun/sn/base/BaseApplication.java b/app/src/main/java/com/aoleyun/sn/base/BaseApplication.java
index ee89b6f..9f74588 100644
--- a/app/src/main/java/com/aoleyun/sn/base/BaseApplication.java
+++ b/app/src/main/java/com/aoleyun/sn/base/BaseApplication.java
@@ -5,10 +5,14 @@ import android.content.Context;
import android.os.Handler;
import android.os.Looper;
import android.os.Process;
+import android.text.TextUtils;
import android.util.Log;
import androidx.multidex.MultiDexApplication;
+import com.alibaba.sdk.android.push.CloudPushService;
+import com.alibaba.sdk.android.push.CommonCallback;
+import com.alibaba.sdk.android.push.noonesdk.PushServiceFactory;
import com.aoleyun.sn.BuildConfig;
import com.aoleyun.sn.bean.BaseResponse;
import com.aoleyun.sn.comm.CommonConfig;
@@ -17,6 +21,7 @@ import com.aoleyun.sn.manager.ConnectManager;
import com.aoleyun.sn.manager.FileManager;
import com.aoleyun.sn.network.NetInterfaceManager;
import com.aoleyun.sn.network.UrlAddress;
+import com.aoleyun.sn.push.PushManager;
import com.aoleyun.sn.rlog.LogDBManager;
import com.aoleyun.sn.statistics.AppInformation;
import com.aoleyun.sn.statistics.StatisticsInfo;
@@ -73,7 +78,9 @@ public class BaseApplication extends MultiDexApplication {
String rootDir = MMKV.initialize(this);
Log.e(TAG, "mmkv root: " + rootDir);
+ PushManager.init(this);
tPushInit();
+ aliyunPushInit();
ToastUtil.init(this);
NetInterfaceManager.init(this);
JGYUtils.init(this);
@@ -126,20 +133,22 @@ public class BaseApplication extends MultiDexApplication {
Log.e("TPush", "注册成功,设备token为:" + data);
MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE).encode("XGPushtoken", data.toString());
List accountInfoList = new ArrayList<>();
- accountInfoList.add(new XGPushManager.AccountInfo(XGPushManager.AccountType.CUSTOM.getValue(), Utils.getSerial(getApplicationContext())));
- if (Utils.NOSN.equalsIgnoreCase(Utils.getSerial())) {
+ String sn = Utils.getSerial(getApplicationContext());
+ Log.e("TPush", "onSuccess: " + sn);
+ accountInfoList.add(new XGPushManager.AccountInfo(XGPushManager.AccountType.CUSTOM.getValue(), sn));
+ if (Utils.NOSN.equalsIgnoreCase(sn)) {
accountInfoList.add(new XGPushManager.AccountInfo(XGPushManager.AccountType.CUSTOM.getValue(), Utils.getIMEI(getApplicationContext(), 0)));
accountInfoList.add(new XGPushManager.AccountInfo(XGPushManager.AccountType.CUSTOM.getValue(), Utils.getIMEI(getApplicationContext(), 1)));
}
XGPushManager.upsertAccounts(getApplicationContext(), accountInfoList, new XGIOperateCallback() {
@Override
public void onSuccess(Object data, int flag) {
- Log.e("TPush", "onSuccess, data:" + data + ", flag:" + flag);
+ Log.e("TPush upsertAccounts", "onSuccess, data:" + data + ", flag:" + flag);
}
@Override
public void onFail(Object data, int errCode, String msg) {
- Log.e("TPush", "onFail, data:" + data + ", code:" + errCode + ", msg:" + msg);
+ Log.e("TPush upsertAccounts", "onFail, data:" + data + ", code:" + errCode + ", msg:" + msg);
}
});
}
@@ -150,4 +159,51 @@ public class BaseApplication extends MultiDexApplication {
}
});
}
+
+ private void aliyunPushInit() {
+ PushServiceFactory.init(this);
+ final CloudPushService pushService = PushServiceFactory.getCloudPushService();
+ pushService.setLogLevel(CloudPushService.LOG_DEBUG);
+ pushService.register(this, new CommonCallback() {
+ @Override
+ public void onSuccess(String response) {
+ Log.e("AliyunPush", "init cloudchannel success");
+ Log.e("AliyunPush", "init cloudchannel success " + pushService.getDeviceId());
+ String sn = Utils.getSerial(BaseApplication.this);
+ if (TextUtils.isEmpty(sn)) {
+ return;
+ }
+ pushService.bindAccount(sn, new CommonCallback() {
+ @Override
+ public void onSuccess(String s) {
+ Log.e("AliyunPush", "bind account " + sn + " success\n");
+ }
+
+ @Override
+ public void onFailed(String errorCode, String errorMsg) {
+ Log.e("AliyunPush", "bind account " + sn + " failed." +
+ "errorCode: " + errorCode + ", errorMsg:" + errorMsg);
+ }
+ });
+ pushService.addAlias(sn, new CommonCallback() {
+ @Override
+ public void onSuccess(String s) {
+ Log.e("AliyunPush", "add alias " + sn + " success\n");
+ }
+
+ @Override
+ public void onFailed(String errorCode, String errorMsg) {
+ Log.e("AliyunPush", "add alias " + sn + " failed." +
+ "errorCode: " + errorCode + ", errorMsg:" + errorMsg + "\n");
+ }
+ });
+ }
+
+ @Override
+ public void onFailed(String errorCode, String errorMessage) {
+ Log.e("AliyunPush", "init cloudchannel failed -- errorcode:" + errorCode + " -- errorMessage:" + errorMessage);
+ }
+ });
+ }
+
}
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 cf13e1f..c779fc3 100644
--- a/app/src/main/java/com/aoleyun/sn/comm/CommonConfig.java
+++ b/app/src/main/java/com/aoleyun/sn/comm/CommonConfig.java
@@ -85,7 +85,7 @@ public class CommonConfig {
public final static String AOLE_ACTION_APP_POWER_ON = "aole_app_power_on";
/*禁止联网应用*/
public final static String AOLE_ACTION_NETWORK_DISALLOW = "aole_network_disallow";
- /*允许联网应用*/
+ /*允许联网应用 G10P*/
public final static String AOLE_ACTION_NETWORK_ALLOW = "aole_network_allow";
diff --git a/app/src/main/java/com/aoleyun/sn/comm/PackageNames.java b/app/src/main/java/com/aoleyun/sn/comm/PackageNames.java
index bd52fd5..1122b78 100644
--- a/app/src/main/java/com/aoleyun/sn/comm/PackageNames.java
+++ b/app/src/main/java/com/aoleyun/sn/comm/PackageNames.java
@@ -19,4 +19,6 @@ public class PackageNames {
public static final String BROWSER = "com.aoleyun.browser";
public static final String APP_STORE_BOOTRECEIVER = "com.aoleyun.appstore.receiver.BootReceiver";
public static final String LEARNING_DESKTOP = "com.aoleyunos.dop2";
+ public static final String YIXUEPAI_DESKTOP = "com.ygyb.yischool";
+
}
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 4a1a922..cc7cec1 100644
--- a/app/src/main/java/com/aoleyun/sn/network/NetInterfaceManager.java
+++ b/app/src/main/java/com/aoleyun/sn/network/NetInterfaceManager.java
@@ -3,6 +3,7 @@ package com.aoleyun.sn.network;
import android.annotation.SuppressLint;
import android.app.AlarmManager;
import android.app.PendingIntent;
+import android.app.StatusBarManager;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
@@ -13,9 +14,9 @@ import android.util.Log;
import android.view.inputmethod.InputMethodInfo;
import android.view.inputmethod.InputMethodManager;
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
+import com.alibaba.sdk.android.push.CloudPushService;
+import com.alibaba.sdk.android.push.CommonCallback;
+import com.alibaba.sdk.android.push.noonesdk.PushServiceFactory;
import com.aoleyun.sn.BuildConfig;
import com.aoleyun.sn.bean.AppAttr;
import com.aoleyun.sn.bean.AppID;
@@ -117,6 +118,7 @@ import com.aoleyun.sn.utils.WiFiUtils;
import com.arialyy.aria.core.Aria;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
+import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.reflect.TypeToken;
@@ -149,6 +151,7 @@ import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.functions.BiFunction;
import io.reactivex.rxjava3.functions.Function5;
+import io.reactivex.rxjava3.functions.Function6;
import io.reactivex.rxjava3.schedulers.Schedulers;
import io.reactivex.rxjava3.subjects.BehaviorSubject;
import okhttp3.Cache;
@@ -754,10 +757,13 @@ public class NetInterfaceManager {
.getUpdateApi().getUpdate(PackageNames.BROWSER, JGYUtils.getInstance().checkAppPlatform());
Observable> learningDesktopObservable = NetInterfaceManager.getInstance()
.getUpdateApi().getUpdate(PackageNames.LEARNING_DESKTOP, JGYUtils.getInstance().checkAppPlatform());
- Observable.zip(infoUpdateObservable, storeUpdateObservable, desktopUpdateObservable, notifyUpdateObservable, browserUpdateObservable,
+ Observable.zip(infoUpdateObservable, storeUpdateObservable, desktopUpdateObservable,
+ notifyUpdateObservable, browserUpdateObservable,
new Function5, BaseResponse, BaseResponse, BaseResponse, BaseResponse, List>() {
@Override
- public List apply(BaseResponse appUpdateInfoBaseResponse, BaseResponse appUpdateInfoBaseResponse2, BaseResponse appUpdateInfoBaseResponse3, BaseResponse appUpdateInfoBaseResponse4, BaseResponse appUpdateInfoBaseResponse5) throws Throwable {
+ public List apply
+ (BaseResponse appUpdateInfoBaseResponse, BaseResponse appUpdateInfoBaseResponse2, BaseResponse appUpdateInfoBaseResponse3,
+ BaseResponse appUpdateInfoBaseResponse4, BaseResponse appUpdateInfoBaseResponse5) throws Throwable {
List appUpdateInfos = new ArrayList<>();
if (appUpdateInfoBaseResponse.code == OK) {
appUpdateInfos.add(appUpdateInfoBaseResponse.data);
@@ -996,7 +1002,7 @@ public class NetInterfaceManager {
if (jsonString == null) {
getDefaultDesktop(lifecycle, callback);
} else {
- JSONObject data = JSON.parseObject(jsonString);
+ JsonObject data = GsonUtils.getJsonObject(jsonString);
if (data != null) {
JGYUtils.getInstance().installDesktop(data);
}
@@ -1034,7 +1040,7 @@ public class NetInterfaceManager {
if (baseResponse.code == OK) {
ForceDownloadData desktopInfo = baseResponse.data;
String jsonString = GsonUtils.toJSONString(desktopInfo);
- JSONObject data = JSON.parseObject(jsonString);
+ JsonObject data = GsonUtils.getJsonObject(jsonString);
cacheHelper.put(UrlAddress.GET_DESKTOP, jsonString);
JGYUtils.getInstance().installDesktop(data);
setDefaultDesktop(desktopInfo.getApp_package());
@@ -1772,7 +1778,7 @@ public class NetInterfaceManager {
@Override
public void onNext(BaseResponse defaultAppBaseResponse) {
- Log.e("getDefaultApp", "onNext: " + JSONObject.toJSONString(defaultAppBaseResponse.data));
+ Log.e("getDefaultApp", "onNext: " + GsonUtils.toJSONString(defaultAppBaseResponse.data));
int code = defaultAppBaseResponse.code;
if (code == OK) {
DefaultApp defaultApp = defaultAppBaseResponse.data;
@@ -1956,9 +1962,19 @@ public class NetInterfaceManager {
// Log.e( "getLockedState", "onNext: " + "state changed , reset devices");
// Utils.doMasterClear(mContext);
// }
+ if (JGYUtils.getInstance().checkAppPlatform() == JGYUtils.TeclastP20sPlatform) {
+ JGYUtils.getInstance().showApp(PackageNames.YIXUEPAI_DESKTOP);
+ JGYUtils.getInstance().setYxpDefaultDesktop();
+ }
Settings.System.putInt(mContext.getContentResolver(), JGYActions.ACTION_QCH_UNLOCK_IPAD, JGYActions.FRAME_CODE_LOCKED);
} else if (locked == JGYActions.NET_CODE_UNLOCKED) {
// SysSettingUtils.setEnableSetting(mContext);
+ if (JGYUtils.getInstance().checkAppPlatform() == JGYUtils.TeclastP20sPlatform) {
+ JGYUtils.getInstance().hideApp(PackageNames.YIXUEPAI_DESKTOP);
+ JGYUtils.getInstance().setDefaultDesktop();
+ StatusBarManager mStatusBarManager = (StatusBarManager) mContext.getSystemService(Context.STATUS_BAR_SERVICE);
+ mStatusBarManager.disable(StatusBarManager.DISABLE_NONE);
+ }
Settings.System.putInt(mContext.getContentResolver(), JGYActions.ACTION_QCH_UNLOCK_IPAD, JGYActions.FRAME_CODE_UNLOCKED);
}
} else if (response.code == NOTFOUND) {
@@ -2141,7 +2157,7 @@ public class NetInterfaceManager {
};
}
- public void clearAndAppendTags(Set tagSets) {
+ public void clearAndAppendTags(Set tagSets) {
XGPushManager.clearAndAppendTags(mContext, "clearAndAppendTags :" + System.currentTimeMillis(), tagSets, new XGIOperateCallback() {
@Override
public void onSuccess(Object o, int i) {
@@ -2153,6 +2169,20 @@ public class NetInterfaceManager {
Log.e("setPushTags", "onFail: " + o);
}
});
+ String[] tag = new ArrayList<>(tagSets).toArray(new String[tagSets.size()]);
+ CloudPushService pushService = PushServiceFactory.getCloudPushService();
+ pushService.bindTag(CloudPushService.DEVICE_TARGET, tag, null, new CommonCallback() {
+ @Override
+ public void onSuccess(String s) {
+ Log.e("bindTag", "bind tag " + Arrays.toString(tag) + " success\n");
+ }
+
+ @Override
+ public void onFailed(String errorCode, String errorMsg) {
+ Log.e("bindTag", "bind tag " + Arrays.toString(tag) + " failed." +
+ "errorCode: " + errorCode + ", errorMsg:" + errorMsg + "\n");
+ }
+ });
}
@@ -2745,6 +2775,7 @@ public class NetInterfaceManager {
JGYUtils.getInstance().writeAppPackageList(mContext, result);
JGYUtils.getInstance().deleteOtherApp();
} else {
+ JGYUtils.getInstance().writeAppPackageList();
cacheHelper.put(UrlAddress.SET_WHITE_PACKAGE_LIST, "");
Log.e("getAppLimit", "onNext: " + baseResponse);
}
@@ -3411,18 +3442,18 @@ public class NetInterfaceManager {
Log.e("fht", "获取信息失败");
}
- JSONObject data = new JSONObject();
- JSONArray appinfo = new JSONArray();
+ JsonObject data = new JsonObject();
+ JsonArray appinfo = new JsonArray();
try {
if (localAppList.size() > 0) {
for (int i = 0; i < 5; i++) {
AppInformation information = localAppList.get(i);
- JSONObject jsonObject = new JSONObject();
- jsonObject.put("package", information.getPackageName());
- jsonObject.put("use_time", (int) information.getUsedTimebyDay() / 1000);
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("package", information.getPackageName());
+ jsonObject.addProperty("use_time", (int) information.getUsedTimebyDay() / 1000);
appinfo.add(jsonObject);
}
- data.put("data", appinfo);
+ data.add("data", appinfo);
}
} catch (Exception e) {
Log.e("sendAppUsedTime", e.getMessage());
@@ -3430,7 +3461,7 @@ public class NetInterfaceManager {
NetInterfaceManager.getInstance()
.getAppLogApi()
- .getAppLog(Utils.getSerial(mContext), random, data.toJSONString())
+ .getAppLog(Utils.getSerial(mContext), random, data.toString())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer() {
@@ -3497,7 +3528,7 @@ public class NetInterfaceManager {
return;
}
getBatteryInfoApi()
- .sendBatteryInfo(Utils.getSerial(), HTTP_KEY,
+ .sendBatteryInfo(Utils.getSerial(mContext), HTTP_KEY,
info.getBattery_quantity(),
info.getBattery_temperature(),
info.getBattery_voltage(),
diff --git a/app/src/main/java/com/aoleyun/sn/tpush/MessageReceiver.java b/app/src/main/java/com/aoleyun/sn/push/PushManager.java
similarity index 74%
rename from app/src/main/java/com/aoleyun/sn/tpush/MessageReceiver.java
rename to app/src/main/java/com/aoleyun/sn/push/PushManager.java
index 34a2f05..c75d656 100644
--- a/app/src/main/java/com/aoleyun/sn/tpush/MessageReceiver.java
+++ b/app/src/main/java/com/aoleyun/sn/push/PushManager.java
@@ -1,4 +1,4 @@
-package com.aoleyun.sn.tpush;
+package com.aoleyun.sn.push;
import android.annotation.SuppressLint;
import android.content.ContentResolver;
@@ -17,10 +17,7 @@ import android.os.PowerManager;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log;
-import android.widget.Toast;
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
import com.aoleyun.sn.R;
import com.aoleyun.sn.bean.BaseResponse;
import com.aoleyun.sn.bean.BatteryInfo;
@@ -37,8 +34,6 @@ import com.aoleyun.sn.network.NetInterfaceManager;
import com.aoleyun.sn.network.RetryCallback;
import com.aoleyun.sn.network.UrlAddress;
import com.aoleyun.sn.service.main.MainService;
-import com.aoleyun.sn.tpush.common.NotificationService;
-import com.aoleyun.sn.tpush.po.XGNotification;
import com.aoleyun.sn.utils.ApkUtils;
import com.aoleyun.sn.utils.BatteryUtils;
import com.aoleyun.sn.utils.CacheUtils;
@@ -57,21 +52,12 @@ import com.baidu.location.LocationClient;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonObject;
-import com.google.gson.JsonParser;
import com.google.gson.reflect.TypeToken;
-import com.tencent.android.tpush.NotificationAction;
-import com.tencent.android.tpush.XGPushBaseReceiver;
-import com.tencent.android.tpush.XGPushClickedResult;
-import com.tencent.android.tpush.XGPushRegisterResult;
-import com.tencent.android.tpush.XGPushShowedResult;
-import com.tencent.android.tpush.XGPushTextMessage;
import com.tencent.mmkv.MMKV;
import java.io.File;
import java.lang.reflect.Type;
-import java.text.SimpleDateFormat;
import java.util.Arrays;
-import java.util.Calendar;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
@@ -89,12 +75,40 @@ import okhttp3.RequestBody;
import retrofit2.Call;
import retrofit2.Response;
-public class MessageReceiver extends XGPushBaseReceiver {
- private static final String TAG = MessageReceiver.class.getSimpleName();
+public class PushManager {
+ private static final String TAG = PushManager.class.getSimpleName();
- public static final String UPDATE_LISTVIEW_ACTION = "com.qq.xgdemo.activity.UPDATE_LISTVIEW";
- public static final String TEST_ACTION = "com.qq.xgdemo.activity.TEST_ACTION";
- public static final String LogTag = "xg.test";
+
+ @SuppressLint("StaticFieldLeak")
+ private static PushManager sInstance;
+ private Context mContext;
+ private PackageManager mPackageManager;
+ private ContentResolver mResolver;
+ private CacheHelper mCacheHelper;
+ private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
+
+ private PushManager(Context context) {
+ if (context == null) {
+ throw new RuntimeException("Context is NULL");
+ }
+ this.mContext = context;
+ this.mResolver = context.getContentResolver();
+ this.mCacheHelper = new CacheHelper(context);
+ this.mPackageManager = mContext.getPackageManager();
+ }
+
+ public static void init(Context context) {
+ if (sInstance == null) {
+ sInstance = new PushManager(context);
+ }
+ }
+
+ public static PushManager getInstance() {
+ if (sInstance == null) {
+ throw new IllegalStateException("You must be init PushManager first");
+ }
+ return sInstance;
+ }
/*删除应用*/
private static final String MSG_DELETE = "1";
@@ -189,289 +203,13 @@ public class MessageReceiver extends XGPushBaseReceiver {
/*判断是否更新桌面*/
private static final String UPDATE_DESKTOP = "56";
-
- private Context mContext;
- private ContentResolver mResolver;
- private PackageManager mPackageManager;
- private CacheHelper cacheHelper;
-
- /**
- * 消息透传处理
- *
- * @param context
- * @param message 解析自定义的 JSON
- */
- @Override
- public void onTextMessage(Context context, XGPushTextMessage message) {
- this.mContext = context;
- this.mResolver = context.getContentResolver();
- this.mPackageManager = context.getPackageManager();
- this.cacheHelper = new CacheHelper(context);
- String text = "收到消息:" + message.toString();
- // 获取自定义key-value
- String customContent = message.getCustomContent();
- if (customContent != null && customContent.length() != 0) {
- JsonObject obj = JsonParser.parseString(customContent).getAsJsonObject();
- // key1为前台配置的key
- if (!TextUtils.isEmpty(obj.get("key").getAsString())) {
- String value = obj.get("key").getAsString();
- Log.d(LogTag, "get custom value:" + value);
- }
- // ...
- }
- // APP自主处理消息的过程...
- Log.e(LogTag, text);
- show(context, text);
- processCustomMessage(context, message);
- }
-
- /**
- * 通知展示
- *
- * @param context
- * @param notifiShowedRlt 包含通知的内容
- */
- @Override
- public void onNotificationShowedResult(Context context, XGPushShowedResult notifiShowedRlt) {
- if (context == null || notifiShowedRlt == null) {
- return;
- }
- XGNotification notific = new XGNotification();
- notific.setMsg_id(notifiShowedRlt.getMsgId());
- notific.setTitle(notifiShowedRlt.getTitle());
- notific.setContent(notifiShowedRlt.getContent());
- // notificationActionType==1为Activity,2为url,3为intent
- notific.setNotificationActionType(notifiShowedRlt
- .getNotificationActionType());
- // Activity,url,intent都可以通过getActivity()获得
- notific.setActivity(notifiShowedRlt.getActivity());
- notific.setUpdate_time(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
- .format(Calendar.getInstance().getTime()));
- NotificationService.getInstance(context).save(notific);
-
- Intent testIntent = new Intent(TEST_ACTION);
- if (notifiShowedRlt.getTitle().equals(Constants.LOCAL_NOTIFICATION_TITLE)) {
- testIntent.putExtra("step", Constants.TEST_LOCAL_NOTIFICATION);
- } else {
- testIntent.putExtra("step", Constants.TEST_NOTIFICATION);
- }
- context.sendBroadcast(testIntent);
-
- Intent viewIntent = new Intent(UPDATE_LISTVIEW_ACTION);
- context.sendBroadcast(viewIntent);
- show(context, "您有1条新消息, " + "通知被展示 , " + notifiShowedRlt.toString());
- Log.d(LogTag, "您有1条新消息, " + "通知被展示 , " + notifiShowedRlt.toString() + ", PushChannel:" + notifiShowedRlt.getPushChannel());
- }
-
- /**
- * 注册回调
- *
- * @param context
- * @param errorCode 0 为成功,其它为错误码
- */
- @Override
- public void onRegisterResult(Context context, int errorCode, XGPushRegisterResult message) {
- if (context == null || message == null) {
- return;
- }
- String text = "";
- if (errorCode == XGPushBaseReceiver.SUCCESS) {
- // 在这里拿token
- String token = message.getToken();
- text = "注册成功1. token:" + token;
- } else {
- text = message + "注册失败,错误码:" + errorCode;
- }
- Log.d(LogTag, text);
- show(context, text);
- }
-
- /**
- * 反注册回调
- *
- * @param context
- * @param errorCode 0 为成功,其它为错误码
- */
- @Override
- public void onUnregisterResult(Context context, int errorCode) {
- if (context == null) {
- return;
- }
- String text = "";
- if (errorCode == XGPushBaseReceiver.SUCCESS) {
- text = "反注册成功";
- } else {
- text = "反注册失败" + errorCode;
- }
- Log.d(LogTag, text);
- show(context, text);
-
- }
-
- /**
- * 设置标签回调
- *
- * @param context
- * @param errorCode 0 为成功,其它为错误码
- * @param tagName 设置的 TAG
- */
- @Override
- public void onSetTagResult(Context context, int errorCode, String tagName) {
- if (context == null) {
- return;
- }
- String text = "";
- if (errorCode == XGPushBaseReceiver.SUCCESS) {
- text = "\"" + tagName + "\"设置成功";
- } else {
- text = "\"" + tagName + "\"设置失败,错误码:" + errorCode;
- }
- Log.d(LogTag, text);
- show(context, text);
-
- Intent testIntent = new Intent(TEST_ACTION);
- testIntent.putExtra("step", Constants.TEST_SET_TAG);
- context.sendBroadcast(testIntent);
- }
-
- /**
- * 删除标签的回调
- *
- * @param context
- * @param errorCode 0 为成功,其它为错误码
- * @param tagName 设置的 TAG
- */
- @Override
- public void onDeleteTagResult(Context context, int errorCode, String tagName) {
- if (context == null) {
- return;
- }
- String text = "";
- if (errorCode == XGPushBaseReceiver.SUCCESS) {
- text = "\"" + tagName + "\"删除成功";
- } else {
- text = "\"" + tagName + "\"删除失败,错误码:" + errorCode;
- }
- Log.d(LogTag, text);
- show(context, text);
-
- Intent testIntent = new Intent(TEST_ACTION);
- testIntent.putExtra("step", Constants.TEST_DEL_TAG);
- context.sendBroadcast(testIntent);
- }
-
- /**
- * 设置账号回调
- *
- * @param context
- * @param errorCode 0 为成功,其它为错误码
- * @param account 设置的账号
- */
- @Override
- public void onSetAccountResult(Context context, int errorCode, String account) {
- Intent testIntent = new Intent(TEST_ACTION);
- testIntent.putExtra("step", Constants.TEST_SET_ACCOUNT);
- context.sendBroadcast(testIntent);
- }
-
-
- /**
- * 删除账号回调
- *
- * @param context
- * @param errorCode 0 为成功,其它为错误码
- * @param account 设置的账号
- */
- @Override
- public void onDeleteAccountResult(Context context, int errorCode, String account) {
- Intent testIntent = new Intent(TEST_ACTION);
- testIntent.putExtra("step", Constants.TEST_DEL_ACCOUNT);
- context.sendBroadcast(testIntent);
- }
-
- @Override
- public void onSetAttributeResult(Context context, int i, String s) {
-
- }
-
- @Override
- public void onDeleteAttributeResult(Context context, int i, String s) {
-
- }
-
- @Override
- public void onQueryTagsResult(Context context, int errorCode, String data, String operateName) {
- Log.i(LogTag, "action - onQueryTagsResult, errorCode:" + errorCode + ", operateName:" + operateName + ", data: " + data);
- }
-
- /**
- * 通知点击回调 actionType=1为该消息被清除,actionType=0为该消息被点击
- *
- * @param context
- * @param message 包含被点击通知的内容
- */
- @Override
- public void onNotificationClickedResult(Context context, XGPushClickedResult message) {
- if (context == null || message == null) {
- return;
- }
- String text = "";
- if (message.getActionType() == NotificationAction.clicked.getType()) {
- // 通知在通知栏被点击啦。。。。。
- // APP自己处理点击的相关动作
- // 这个动作可以在activity的onResume也能监听,请看第3点相关内容
- text = "通知被打开 :" + message;
- } else if (message.getActionType() == NotificationAction.delete.getType()) {
- // 通知被清除啦。。。。
- // APP自己处理通知被清除后的相关动作
- text = "通知被清除 :" + message;
- }
- Toast.makeText(context, "广播接收到通知被点击:" + message.toString(),
- Toast.LENGTH_SHORT).show();
- // 获取自定义key-value
- String customContent = message.getCustomContent();
- if (customContent != null && customContent.length() != 0) {
- JsonObject obj = JsonParser.parseString(customContent).getAsJsonObject();
- // key1为前台配置的key
- if (!TextUtils.isEmpty(obj.get("key").getAsString())) {
- String value = obj.get("key").getAsString();
- Log.d(LogTag, "get custom value:" + value);
- }
- // ...
- }
- // APP自主处理的过程。。。
- Log.d(LogTag, text);
- show(context, text);
- }
-
- private void show(Context context, String text) {
-// Toast.makeText(context, text, Toast.LENGTH_SHORT).show();
- }
-
- private int changeNum(int paramInt) {
- return paramInt == 0 ? 1 : 0;
- }
-
- private void processCustomMessage(Context context, XGPushTextMessage message) {
- if (context == null || message == null) {
- return;
- }
-
- String title = message.getTitle();
- String content = message.getContent();
- JsonObject extrasJson = JsonParser.parseString(content).getAsJsonObject();
-
- String extras = "";
- if (extrasJson.get("extras") != null) {
- extras = extrasJson.get("extras").toString();
- }
-
+ public void setPushContent(String title, String extras) {
switch (title) {
case MSG_DELETE:
ToastUtil.betaShow("收到管控:应用删除");
if (!TextUtils.isEmpty(extras)) {
- JSONObject jsonObject = JSON.parseObject(extras);
- String pkg = jsonObject.getString("package_name");
+ JsonObject jsonObject = GsonUtils.getJsonObject(extras);
+ String pkg = jsonObject.get("package_name").getAsString();
if (TextUtils.isEmpty(pkg)) return;
ApkUtils.UninstallAPP(mContext, pkg);
}
@@ -511,11 +249,11 @@ public class MessageReceiver extends XGPushBaseReceiver {
ToastUtil.betaShow("收到管控:设备重置");
JGYUtils.getInstance().cleanAoleLauncher3Cache();
Utils.doMasterClear(mContext);
- MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE).clearAll();
+ mMMKV.clearAll();
JGYUtils.getInstance().cleanAoleAppCache();
JGYUtils.getInstance().wakeUpAoleyunAPP();
NetInterfaceManager.getInstance().setPushTags();
- sendRefreshBroadcast(context);
+ sendRefreshBroadcast(mContext);
break;
case MSG_INSTALL:
ToastUtil.betaShow("收到管控:应用安装");
@@ -543,9 +281,9 @@ public class MessageReceiver extends XGPushBaseReceiver {
break;
case GET_APP_USEDTIME:
ToastUtil.betaShow("收到管控:获取应用使用时间");
- JSONObject usedTimeJson = JSON.parseObject(extras);
- String random = usedTimeJson.getString("random");
- String sendType = usedTimeJson.getString("type");
+ JsonObject usedTimeJson = GsonUtils.getJsonObject(extras);
+ String random = usedTimeJson.get("random").getAsString();
+ String sendType = usedTimeJson.get("type").getAsString();
NetInterfaceManager.getInstance().sendAppUsedTime(random, sendType);
break;
case GET_FORCEDOWNLOADURL:
@@ -558,16 +296,16 @@ public class MessageReceiver extends XGPushBaseReceiver {
Log.e(TAG, "settingNetControl extras is null");
return;
}
- JSONObject extra = JSON.parseObject(extras);
- String app_name = extra.getString("app_name");
- String app_package = extra.getString("package");
- String url = extra.getString("url");
- int versionCode = extra.getInteger("version_code");
- String app_id = extra.getString("app_id");
- JSONObject packageObj = new JSONObject();
- packageObj.put("app_name", app_name);
- packageObj.put("app_package", app_package);
- packageObj.put("app_id", app_id);
+ 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;
case SET_HOMEPAG_TAG:
@@ -620,8 +358,8 @@ public class MessageReceiver extends XGPushBaseReceiver {
break;
case GET_DEVICES_INFO:
ToastUtil.betaShow("收到管控:获取设备信息");
- getBatteryInfo(context);
- sendRefreshBroadcast(context);
+ getBatteryInfo(mContext);
+ sendRefreshBroadcast(mContext);
LocationClient locationClient = MapManager.getInstance().getLocationClient();
locationClient.stop();
locationClient.start();
@@ -708,8 +446,8 @@ public class MessageReceiver extends XGPushBaseReceiver {
break;
case LOCK_SCREEN:
ToastUtil.betaShow("收到管控:屏幕锁定");
- JSONObject lockJSONObject = JSON.parseObject(extras);
- String name = lockJSONObject.getString("name");
+ JsonObject lockJSONObject = GsonUtils.getJsonObject(extras);
+ String name = lockJSONObject.get("name").getAsString();
setLock_screen(1, name);
break;
case UNLOCK_SCREEN:
@@ -718,8 +456,8 @@ public class MessageReceiver extends XGPushBaseReceiver {
break;
case KILL_SERVER:
ToastUtil.betaShow("收到管控:停止应用");
- JSONObject killJSONObject = JSON.parseObject(extras);
- String packages = killJSONObject.getString("package_name");
+ JsonObject killJSONObject = GsonUtils.getJsonObject(extras);
+ String packages = killJSONObject.get("package_name").getAsString();
JGYUtils.getInstance().killBackgroundProcesses(packages);
break;
case TIME_CONTROL:
@@ -775,7 +513,7 @@ public class MessageReceiver extends XGPushBaseReceiver {
e.printStackTrace();
Log.e(TAG, "setHomepagtag: " + e.getMessage());
}
- sendRefreshBroadcast(context);
+ sendRefreshBroadcast(mContext);
break;
case UPDATE_WIFI_PW:
NetInterfaceManager.getInstance().getWiFiPasswd();
@@ -799,10 +537,10 @@ public class MessageReceiver extends XGPushBaseReceiver {
senSNLogFile(extras);
break;
case DISABLE_APP_USAGE:
- disableApp(content, extras);
+ disableApp(extras);
break;
case INFO_BATTERY_INFO:
- getBatteryInfo(context);
+ getBatteryInfo(mContext);
break;
case UPDATE_DESKTOP:
@@ -811,7 +549,11 @@ public class MessageReceiver extends XGPushBaseReceiver {
}
}
- private void disableApp(String content, String extras) {
+ private int changeNum(int paramInt) {
+ return paramInt == 0 ? 1 : 0;
+ }
+
+ private void disableApp(String extras) {
JsonObject jsonObject = GsonUtils.getJsonObject(extras);
try {
String packages = jsonObject.get("package").getAsString();
@@ -832,7 +574,7 @@ public class MessageReceiver extends XGPushBaseReceiver {
ScreenLockState screenLockState = new ScreenLockState();
screenLockState.setIs_screen_lock(state);
screenLockState.setName(name);
- cacheHelper.put(UrlAddress.GET_LOCK_SCREEN_STATE, GsonUtils.toJSONString(screenLockState));
+ mCacheHelper.put(UrlAddress.GET_LOCK_SCREEN_STATE, GsonUtils.toJSONString(screenLockState));
Intent intent = new Intent();
intent.putExtra("name", name);
if (state == 1) {
@@ -872,11 +614,11 @@ public class MessageReceiver extends XGPushBaseReceiver {
mContext.sendBroadcast(intent);
}
- JSONObject packageObj = new JSONObject();
- packageObj.put("app_name", app_name);
- packageObj.put("app_package", app_package);
- packageObj.put("app_id", app_id);
- packageObj.put("MD5", MD5);
+ JsonObject packageObj = new JsonObject();
+ packageObj.addProperty("app_name", app_name);
+ packageObj.addProperty("app_package", app_package);
+ packageObj.addProperty("app_id", app_id);
+ packageObj.addProperty("MD5", MD5);
Log.e(TAG, "doDownloadAndInstall: app_package:" + app_package);
Log.e(TAG, "doDownloadAndInstall: app_url:" + app_url);
PackageInfo packageInfo = null;
@@ -921,10 +663,10 @@ public class MessageReceiver extends XGPushBaseReceiver {
}
private void setDisableSlideList(String jsonString) {
- JSONObject jSONObject = JSON.parseObject(jsonString);
+ JsonObject jSONObject = GsonUtils.getJsonObject(jsonString);
Log.e("setDisableSlideList", "jSONObject::" + jSONObject.toString());
- String strban = jSONObject.getString("ban");
- String strnot = jSONObject.getString("not");
+ String strban = jSONObject.get("ban").getAsString();
+ String strnot = jSONObject.get("not").getAsString();
String aole_disable_slide = Settings.System.getString(mResolver, CommonConfig.AOLE_ACTION_DISABLE_SLIDE);
Log.e("fht", "aole_disable_slide: " + aole_disable_slide);
@@ -939,9 +681,9 @@ public class MessageReceiver extends XGPushBaseReceiver {
private void setDisableUpdateList(String jsonString) {
Log.e("setDisableUpdateList", jsonString);
- JSONObject jsonObject = JSON.parseObject(jsonString);
- String ban = jsonObject.getString("ban");
- String not = jsonObject.getString("not");
+ JsonObject jsonObject = GsonUtils.getJsonObject(jsonString);
+ String ban = jsonObject.get("ban").getAsString();
+ String not = jsonObject.get("not").getAsString();
String[] banList = ban.split(",");
String[] notList = not.split(",");
boolean b = Utils.writeDisableUpdateList(mContext, banList, notList);
@@ -955,8 +697,8 @@ public class MessageReceiver extends XGPushBaseReceiver {
Log.e(TAG, "settingNetControl extras is null");
return;
}
- JSONObject jSONObject = JSON.parseObject(s);
- String s1 = jSONObject.getString("ban");
+ JsonObject jSONObject = GsonUtils.getJsonObject(s);
+ String s1 = jSONObject.get("ban").getAsString();
// String str = jSONObject.optString("not");
Log.e("settingCamera", "ban::" + s1);
// Log.e("settingCamera", "not::" + str);
@@ -976,21 +718,21 @@ public class MessageReceiver extends XGPushBaseReceiver {
Log.e(TAG, "settingNetControl extras is null");
// return;
}
- JSONObject jSONObject = JSON.parseObject(s);
+ JsonObject jSONObject = GsonUtils.getJsonObject(s);
Log.e("settingOneNet", "jSONObject::" + jSONObject.toString());
- String packages = jSONObject.getString("package");
- String status = jSONObject.getString("status");
+ String packages = jSONObject.get("package").getAsString();
+ String status = jSONObject.get("status").getAsString();
}
private void settingNetControl(String s) {
if (TextUtils.isEmpty(s)) {
Log.e(TAG, "settingNetControl extras is null");
}
- JSONObject jSONObject = JSON.parseObject(s);
+ JsonObject jSONObject = GsonUtils.getJsonObject(s);
Log.e("settingNetControl", "jSONObject::" + jSONObject.toString());
- String disallow = jSONObject.getString("ban");
- String allow = jSONObject.getString("not");
+ String disallow = jSONObject.get("ban").getAsString();
+ String allow = jSONObject.get("not").getAsString();
HashSet disallowApp = new HashSet<>(Arrays.asList(disallow.split(",")));
HashSet allowApp = new HashSet<>(Arrays.asList(allow.split(",")));
JGYUtils.setAppNetwork(mContext, disallowApp, allowApp);
@@ -1001,9 +743,9 @@ public class MessageReceiver extends XGPushBaseReceiver {
Log.e(TAG, "settingPowerOn extras is null");
return;
}
- JSONObject jSONObject = JSON.parseObject(s);
- String ban = jSONObject.getString("ban");
- String not = jSONObject.getString("not");
+ JsonObject jSONObject = GsonUtils.getJsonObject(s);
+ String ban = jSONObject.get("ban").getAsString();
+ String not = jSONObject.get("not").getAsString();
Log.e(TAG, "settingPowerOn: aole_app_power_on = " + not);
if (TextUtils.isEmpty(not)) {
//当 qch_app_power_on 的值为空时,会造成系统所有应用断网
@@ -1044,9 +786,8 @@ public class MessageReceiver extends XGPushBaseReceiver {
Log.e(TAG, "settingLock extras is null");
return;
}
- JSONObject jSONObject = JSON.parseObject(s);
-
- int i = changeNum(jSONObject.getIntValue("lock"));
+ JsonObject jSONObject = GsonUtils.getJsonObject(s);
+ int i = changeNum(jSONObject.get("lock").getAsInt());
Settings.System.putInt(mResolver, JGYActions.ACTION_QCH_UNLOCK_IPAD, i);
Log.e("SystemSetting", "qch_unlock_ipad---------" + i);
@@ -1058,7 +799,7 @@ public class MessageReceiver extends XGPushBaseReceiver {
}
public void screenshot(String s) {
-// JSONObject jSONObject = JSON.parseObject(s);
+// JsonObject jSONObject = GsonUtils.getJsonObject(s);
// long createTime = jSONObject.getLong("createTime");
long createTime = System.currentTimeMillis() / 1000;
PowerManager.WakeLock mWakeLock = JGYUtils.acquireWakeLock(mContext, 60 * 1000);
@@ -1181,27 +922,27 @@ public class MessageReceiver extends XGPushBaseReceiver {
}
private void getTopApp(String extras) {
- JSONObject jsonObject = JSON.parseObject(extras);
- cacheHelper.put(UrlAddress.GET_TOP_APP_CONTROL, extras);
+ JsonObject jsonObject = GsonUtils.getJsonObject(extras);
+ mCacheHelper.put(UrlAddress.GET_TOP_APP_CONTROL, extras);
- String packageName = jsonObject.getString("app_package");
+ String packageName = jsonObject.get("app_package").getAsString();
if (TextUtils.isEmpty(packageName)) {
- Settings.Global.putString(mContext.getContentResolver(), ForegroundAppUtil.TOPAPP_KEY, "");
+ Settings.Global.putString(mResolver, ForegroundAppUtil.TOPAPP_KEY, "");
ForegroundAppUtil.setTopAppClass(mContext, "");
} else {
- Settings.Global.putString(mContext.getContentResolver(), ForegroundAppUtil.TOPAPP_KEY, packageName);
+ Settings.Global.putString(mResolver, ForegroundAppUtil.TOPAPP_KEY, packageName);
ForegroundAppUtil.setTopAppClass(mContext, packageName);
ForegroundAppUtil.openTopApp(mContext);
}
- Log.e(TAG, "getTopApp: " + Settings.Global.getString(mContext.getContentResolver(), ForegroundAppUtil.TOPAPP_KEY));
+ Log.e(TAG, "getTopApp: " + Settings.Global.getString(mResolver, ForegroundAppUtil.TOPAPP_KEY));
}
private void setBootanimation(String extras) {
- JSONObject jsonObject = JSONObject.parseObject(extras);
- int type = jsonObject.getInteger("type");
+ JsonObject jsonObject = GsonUtils.getJsonObject(extras);
+ int type = jsonObject.get("type").getAsInt();
if (type == 1) {
- String file_url = jsonObject.getString("file_url");
- String file_md5 = jsonObject.getString("file_md5");
+ String file_url = jsonObject.get("file_url").getAsString();
+ String file_md5 = jsonObject.get("file_md5").getAsString();
JGYUtils.getInstance().checkBootFile(file_url, file_md5);
} else {
JGYUtils.getInstance().removeBootanimation();
@@ -1212,8 +953,8 @@ public class MessageReceiver extends XGPushBaseReceiver {
if (TextUtils.isEmpty(extras)) {
JGYUtils.getInstance().setDefaultDesktop("");
} else {
- JSONObject jsonObject = JSON.parseObject(extras);
- String default_launcher = jsonObject.getString("default_launcher");
+ JsonObject jsonObject = GsonUtils.getJsonObject(extras);
+ String default_launcher = jsonObject.get("default_launcher").getAsString();
if (TextUtils.isEmpty(default_launcher)) {
JGYUtils.getInstance().setDefaultDesktop("");
SPUtils.put(mContext, "default_launcher", "");
@@ -1225,7 +966,7 @@ public class MessageReceiver extends XGPushBaseReceiver {
}
private void playSound(String extras) {
- JSONObject jsonObject = JSONObject.parseObject(extras);
+ JsonObject jsonObject = GsonUtils.getJsonObject(extras);
defaultCallMediaPlayer(mContext);
}
@@ -1295,8 +1036,8 @@ public class MessageReceiver extends XGPushBaseReceiver {
}
private void cleanCache(String extras) {
- JSONObject jsonObject = JSONObject.parseObject(extras);
- String packageName = jsonObject.getString("app_package");
+ JsonObject jsonObject = GsonUtils.getJsonObject(extras);
+ String packageName = jsonObject.get("app_package").getAsString();
if (TextUtils.isEmpty(packageName)) {
Log.e(TAG, "cleanCache: " + "package is empty");
} else {
@@ -1314,8 +1055,8 @@ public class MessageReceiver extends XGPushBaseReceiver {
}
private void setDeveloperoptions(String extras) {
- JSONObject jsonObject = JSONObject.parseObject(extras);
- int is_developer = jsonObject.getInteger("is_developer");
+ JsonObject jsonObject = GsonUtils.getJsonObject(extras);
+ int is_developer = jsonObject.get("is_developer").getAsInt();
Log.e(TAG + ":" + "getDeveloper", "onNext: " + is_developer);
Log.e(TAG, "setDeveloperoptions: " + is_developer);
JGYUtils.getInstance().setDeveloperOptions(is_developer == 0 ? 1 : 0);
@@ -1325,8 +1066,8 @@ public class MessageReceiver extends XGPushBaseReceiver {
if (TextUtils.isEmpty(jsonString)) {
throw new RuntimeException();
}
- JSONObject jsonObject = JSON.parseObject(jsonString);
- String platform = jsonObject.getString("platform");
+ JsonObject jsonObject = GsonUtils.getJsonObject(jsonString);
+ String platform = jsonObject.get("platform").getAsString();
if (JGYUtils.getInstance().isSamePlatform(platform)) {
checkAPPInstall(jsonObject);
} else {
@@ -1335,11 +1076,11 @@ public class MessageReceiver extends XGPushBaseReceiver {
}
@SuppressLint("NewApi")
- private void checkAPPInstall(JSONObject jsonObject) {
- long version_code = jsonObject.getLong("app_version_code");
+ private void checkAPPInstall(JsonObject jsonObject) {
+ long version_code = jsonObject.get("app_version_code").getAsLong();
PackageInfo packageInfo = null;
try {
- packageInfo = mPackageManager.getPackageInfo(jsonObject.getString("app_package"), 0);
+ packageInfo = mPackageManager.getPackageInfo(jsonObject.get("app_package").getAsString(), 0);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
@@ -1351,15 +1092,15 @@ public class MessageReceiver extends XGPushBaseReceiver {
}
if (packageInfo == null || appVersionCode < version_code) {
- Utils.ariaDownload(mContext, jsonObject.getString("app_url"), jsonObject);
+ Utils.ariaDownload(mContext, jsonObject.get("app_url").getAsString(), jsonObject);
} else {
Log.e(TAG, "checkAPPInstall: " + "已经是最新版");
}
}
private void setEbagCode(String jsonString) {
- JSONObject jsonObject = JSON.parseObject(jsonString);
- String ebagCode = jsonObject.getString("ebagCode");
+ JsonObject jsonObject = GsonUtils.getJsonObject(jsonString);
+ String ebagCode = jsonObject.get("ebagCode").getAsString();
if (TextUtils.isEmpty(ebagCode)) {
Log.e(TAG, "setEbagCode: " + "ebagCode is empty");
} else {
@@ -1407,9 +1148,9 @@ public class MessageReceiver extends XGPushBaseReceiver {
* "is_log_type": 1 //获取运行日志类型 0即时 1定时
*/
private void senSNLogFile(String jsonString) {
- JSONObject jsonObject = JSON.parseObject(jsonString);
- int is_log = jsonObject.getInteger("is_log");
- int is_log_type = jsonObject.getInteger("is_log_type");
+ JsonObject jsonObject = GsonUtils.getJsonObject(jsonString);
+ int is_log = jsonObject.get("is_log").getAsInt();
+ int is_log_type = jsonObject.get("is_log_type").getAsInt();
if (is_log == 0) {
return;
}
diff --git a/app/src/main/java/com/aoleyun/sn/push/alipush/AliMessageIntentService.java b/app/src/main/java/com/aoleyun/sn/push/alipush/AliMessageIntentService.java
new file mode 100644
index 0000000..7d22924
--- /dev/null
+++ b/app/src/main/java/com/aoleyun/sn/push/alipush/AliMessageIntentService.java
@@ -0,0 +1,99 @@
+package com.aoleyun.sn.push.alipush;
+
+import android.content.Context;
+import android.util.Log;
+
+import com.alibaba.sdk.android.push.AliyunMessageIntentService;
+import com.alibaba.sdk.android.push.notification.CPushMessage;
+
+import java.util.Map;
+
+/**
+ * Created by liyazhou on 17/8/22.
+ * 为避免推送广播被系统拦截的小概率事件,我们推荐用户通过IntentService处理消息互调,接入步骤:
+ * 1. 创建IntentService并继承AliyunMessageIntentService
+ * 2. 覆写相关方法,并在Manifest的注册该Service
+ * 3. 调用接口CloudPushService.setPushIntentService
+ * 详细用户可参考:https://help.aliyun.com/document_detail/30066.html#h2-2-messagereceiver-aliyunmessageintentservice
+ */
+
+public class AliMessageIntentService extends AliyunMessageIntentService {
+ private static final String TAG = AliyunMessageIntentService.class.getSimpleName();
+
+ /**
+ * 推送通知的回调方法
+ *
+ * @param context
+ * @param title
+ * @param summary
+ * @param extraMap
+ */
+ @Override
+ protected void onNotification(Context context, String title, String summary, Map extraMap) {
+ Log.i(TAG, "收到一条推送通知 : " + title + ", summary:" + summary);
+ }
+
+ /**
+ * 推送消息的回调方法
+ *
+ * @param context
+ * @param cPushMessage
+ */
+ @Override
+ protected void onMessage(Context context, CPushMessage cPushMessage) {
+ Log.i(TAG, "收到一条推送消息 : " + cPushMessage.getTitle() + ", content:" + cPushMessage.getContent());
+ }
+
+ /**
+ * 从通知栏打开通知的扩展处理
+ *
+ * @param context
+ * @param title
+ * @param summary
+ * @param extraMap
+ */
+ @Override
+ protected void onNotificationOpened(Context context, String title, String summary, String extraMap) {
+ Log.i(TAG, "onNotificationOpened : " + " : " + title + " : " + summary + " : " + extraMap);
+ }
+
+ /**
+ * 无动作通知点击回调。当在后台或阿里云控制台指定的通知动作为无逻辑跳转时,通知点击回调为onNotificationClickedWithNoAction而不是onNotificationOpened
+ *
+ * @param context
+ * @param title
+ * @param summary
+ * @param extraMap
+ */
+ @Override
+ protected void onNotificationClickedWithNoAction(Context context, String title, String summary, String extraMap) {
+ Log.i(TAG, "onNotificationClickedWithNoAction : " + " : " + title + " : " + summary + " : " + extraMap);
+ }
+
+ /**
+ * 通知删除回调
+ *
+ * @param context
+ * @param messageId
+ */
+ @Override
+ protected void onNotificationRemoved(Context context, String messageId) {
+ Log.i(TAG, "onNotificationRemoved : " + messageId);
+ }
+
+ /**
+ * 应用处于前台时通知到达回调。注意:该方法仅对自定义样式通知有效,相关详情请参考https://help.aliyun.com/document_detail/30066.html#h3-3-4-basiccustompushnotification-api
+ *
+ * @param context
+ * @param title
+ * @param summary
+ * @param extraMap
+ * @param openType
+ * @param openActivity
+ * @param openUrl
+ */
+ @Override
+ protected void onNotificationReceivedInApp(Context context, String title, String summary, Map extraMap, int openType, String openActivity, String openUrl) {
+ Log.i(TAG, "onNotificationReceivedInApp : " + " : " + title + " : " + summary + " " + extraMap + " : " + openType + " : " + openActivity + " : " + openUrl);
+ }
+}
diff --git a/app/src/main/java/com/aoleyun/sn/push/alipush/AliyunMessageReceiver.java b/app/src/main/java/com/aoleyun/sn/push/alipush/AliyunMessageReceiver.java
new file mode 100644
index 0000000..3ced65b
--- /dev/null
+++ b/app/src/main/java/com/aoleyun/sn/push/alipush/AliyunMessageReceiver.java
@@ -0,0 +1,116 @@
+package com.aoleyun.sn.push.alipush;
+
+import android.content.Context;
+import android.util.Log;
+
+import com.alibaba.sdk.android.push.MessageReceiver;
+import com.alibaba.sdk.android.push.notification.CPushMessage;
+import com.aoleyun.sn.push.PushManager;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+
+import java.util.Map;
+
+/**
+ * @author: 正纬
+ * @since: 15/4/9
+ * @version: 1.1
+ * @feature: 用于接收推送的通知和消息
+ */
+public class AliyunMessageReceiver extends MessageReceiver {
+ // 消息接收部分的LOG_TAG
+ public static final String TAG = AliyunMessageReceiver.class.getSimpleName();
+
+ /**
+ * 推送通知的回调方法
+ *
+ * @param context
+ * @param title
+ * @param summary
+ * @param extraMap
+ */
+ @Override
+ public void onNotification(Context context, String title, String summary, Map extraMap) {
+ // TODO 处理推送通知
+ if (null != extraMap) {
+ for (Map.Entry entry : extraMap.entrySet()) {
+ Log.i(TAG, "@Get diy param : Key=" + entry.getKey() + " , Value=" + entry.getValue());
+ }
+ } else {
+ Log.i(TAG, "@收到通知 && 自定义消息为空");
+ }
+ Log.i(TAG, "收到一条推送通知 : " + title + ", summary:" + summary);
+ }
+
+ /**
+ * 应用处于前台时通知到达回调。注意:该方法仅对自定义样式通知有效,相关详情请参考https://help.aliyun.com/document_detail/30066.html?spm=5176.product30047.6.620.wjcC87#h3-3-4-basiccustompushnotification-api
+ *
+ * @param context
+ * @param title
+ * @param summary
+ * @param extraMap
+ * @param openType
+ * @param openActivity
+ * @param openUrl
+ */
+ @Override
+ protected void onNotificationReceivedInApp(Context context, String title, String summary, Map extraMap, int openType, String openActivity, String openUrl) {
+ Log.i(TAG, "onNotificationReceivedInApp : " + " : " + title + " : " + summary + " " + extraMap + " : " + openType + " : " + openActivity + " : " + openUrl);
+ }
+
+ /**
+ * 推送消息的回调方法
+ *
+ * @param context
+ * @param cPushMessage
+ */
+ @Override
+ public void onMessage(Context context, CPushMessage cPushMessage) {
+ Log.e(TAG, "收到一条推送消息 : " + cPushMessage.getTitle() + ", content:" + cPushMessage.getContent());
+ String title = cPushMessage.getTitle();
+ String content = cPushMessage.getContent();
+ JsonObject extrasJson = JsonParser.parseString(content).getAsJsonObject();
+ String extras = "";
+ if (extrasJson.get("extras") != null) {
+ extras = extrasJson.get("extras").toString();
+ }
+ PushManager.getInstance().setPushContent(title, extras);
+ }
+
+ /**
+ * 从通知栏打开通知的扩展处理
+ *
+ * @param context
+ * @param title
+ * @param summary
+ * @param extraMap
+ */
+ @Override
+ public void onNotificationOpened(Context context, String title, String summary, String extraMap) {
+ Log.i(TAG, "onNotificationOpened : " + " : " + title + " : " + summary + " : " + extraMap);
+ }
+
+ /**
+ * 通知删除回调
+ *
+ * @param context
+ * @param messageId
+ */
+ @Override
+ public void onNotificationRemoved(Context context, String messageId) {
+ Log.i(TAG, "onNotificationRemoved : " + messageId);
+ }
+
+ /**
+ * 无动作通知点击回调。当在后台或阿里云控制台指定的通知动作为无逻辑跳转时,通知点击回调为onNotificationClickedWithNoAction而不是onNotificationOpened
+ *
+ * @param context
+ * @param title
+ * @param summary
+ * @param extraMap
+ */
+ @Override
+ protected void onNotificationClickedWithNoAction(Context context, String title, String summary, String extraMap) {
+ Log.i(TAG, "onNotificationClickedWithNoAction : " + " : " + title + " : " + summary + " : " + extraMap);
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/aoleyun/sn/tpush/Constants.java b/app/src/main/java/com/aoleyun/sn/push/tpush/Constants.java
similarity index 93%
rename from app/src/main/java/com/aoleyun/sn/tpush/Constants.java
rename to app/src/main/java/com/aoleyun/sn/push/tpush/Constants.java
index 6e5d21b..6975260 100644
--- a/app/src/main/java/com/aoleyun/sn/tpush/Constants.java
+++ b/app/src/main/java/com/aoleyun/sn/push/tpush/Constants.java
@@ -1,4 +1,4 @@
-package com.aoleyun.sn.tpush;
+package com.aoleyun.sn.push.tpush;
/**
* Created by chacewang on 2019/7/5.
diff --git a/app/src/main/java/com/aoleyun/sn/push/tpush/MessageReceiver.java b/app/src/main/java/com/aoleyun/sn/push/tpush/MessageReceiver.java
new file mode 100644
index 0000000..efef39b
--- /dev/null
+++ b/app/src/main/java/com/aoleyun/sn/push/tpush/MessageReceiver.java
@@ -0,0 +1,307 @@
+package com.aoleyun.sn.push.tpush;
+
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.text.TextUtils;
+import android.util.Log;
+import android.widget.Toast;
+
+import com.aoleyun.sn.disklrucache.CacheHelper;
+import com.aoleyun.sn.push.PushManager;
+import com.aoleyun.sn.push.tpush.common.NotificationService;
+import com.aoleyun.sn.push.tpush.po.XGNotification;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import com.tencent.android.tpush.NotificationAction;
+import com.tencent.android.tpush.XGPushBaseReceiver;
+import com.tencent.android.tpush.XGPushClickedResult;
+import com.tencent.android.tpush.XGPushRegisterResult;
+import com.tencent.android.tpush.XGPushShowedResult;
+import com.tencent.android.tpush.XGPushTextMessage;
+
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+
+public class MessageReceiver extends XGPushBaseReceiver {
+ private static final String TAG = MessageReceiver.class.getSimpleName();
+
+ public static final String UPDATE_LISTVIEW_ACTION = "com.qq.xgdemo.activity.UPDATE_LISTVIEW";
+ public static final String TEST_ACTION = "com.qq.xgdemo.activity.TEST_ACTION";
+ public static final String LogTag = "xg.test";
+
+ private Context mContext;
+ private ContentResolver mResolver;
+ private PackageManager mPackageManager;
+ private CacheHelper cacheHelper;
+
+ /**
+ * 消息透传处理
+ *
+ * @param context
+ * @param message 解析自定义的 JSON
+ */
+ @Override
+ public void onTextMessage(Context context, XGPushTextMessage message) {
+ this.mContext = context;
+ this.mResolver = context.getContentResolver();
+ this.mPackageManager = context.getPackageManager();
+ this.cacheHelper = new CacheHelper(context);
+ String text = "收到消息:" + message.toString();
+ // 获取自定义key-value
+ String customContent = message.getCustomContent();
+ if (customContent != null && customContent.length() != 0) {
+ JsonObject obj = JsonParser.parseString(customContent).getAsJsonObject();
+ // key1为前台配置的key
+ if (!TextUtils.isEmpty(obj.get("key").getAsString())) {
+ String value = obj.get("key").getAsString();
+ Log.d(LogTag, "get custom value:" + value);
+ }
+ // ...
+ }
+ // APP自主处理消息的过程...
+ Log.e(LogTag, text);
+ show(context, text);
+ processCustomMessage(context, message);
+ }
+
+ /**
+ * 通知展示
+ *
+ * @param context
+ * @param notifiShowedRlt 包含通知的内容
+ */
+ @Override
+ public void onNotificationShowedResult(Context context, XGPushShowedResult notifiShowedRlt) {
+ if (context == null || notifiShowedRlt == null) {
+ return;
+ }
+ XGNotification notific = new XGNotification();
+ notific.setMsg_id(notifiShowedRlt.getMsgId());
+ notific.setTitle(notifiShowedRlt.getTitle());
+ notific.setContent(notifiShowedRlt.getContent());
+ // notificationActionType==1为Activity,2为url,3为intent
+ notific.setNotificationActionType(notifiShowedRlt
+ .getNotificationActionType());
+ // Activity,url,intent都可以通过getActivity()获得
+ notific.setActivity(notifiShowedRlt.getActivity());
+ notific.setUpdate_time(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
+ .format(Calendar.getInstance().getTime()));
+ NotificationService.getInstance(context).save(notific);
+
+ Intent testIntent = new Intent(TEST_ACTION);
+ if (notifiShowedRlt.getTitle().equals(Constants.LOCAL_NOTIFICATION_TITLE)) {
+ testIntent.putExtra("step", Constants.TEST_LOCAL_NOTIFICATION);
+ } else {
+ testIntent.putExtra("step", Constants.TEST_NOTIFICATION);
+ }
+ context.sendBroadcast(testIntent);
+
+ Intent viewIntent = new Intent(UPDATE_LISTVIEW_ACTION);
+ context.sendBroadcast(viewIntent);
+ show(context, "您有1条新消息, " + "通知被展示 , " + notifiShowedRlt.toString());
+ Log.d(LogTag, "您有1条新消息, " + "通知被展示 , " + notifiShowedRlt.toString() + ", PushChannel:" + notifiShowedRlt.getPushChannel());
+ }
+
+ /**
+ * 注册回调
+ *
+ * @param context
+ * @param errorCode 0 为成功,其它为错误码
+ */
+ @Override
+ public void onRegisterResult(Context context, int errorCode, XGPushRegisterResult message) {
+ if (context == null || message == null) {
+ return;
+ }
+ String text = "";
+ if (errorCode == XGPushBaseReceiver.SUCCESS) {
+ // 在这里拿token
+ String token = message.getToken();
+ text = "注册成功1. token:" + token;
+ } else {
+ text = message + "注册失败,错误码:" + errorCode;
+ }
+ Log.d(LogTag, text);
+ show(context, text);
+ }
+
+ /**
+ * 反注册回调
+ *
+ * @param context
+ * @param errorCode 0 为成功,其它为错误码
+ */
+ @Override
+ public void onUnregisterResult(Context context, int errorCode) {
+ if (context == null) {
+ return;
+ }
+ String text = "";
+ if (errorCode == XGPushBaseReceiver.SUCCESS) {
+ text = "反注册成功";
+ } else {
+ text = "反注册失败" + errorCode;
+ }
+ Log.d(LogTag, text);
+ show(context, text);
+
+ }
+
+ /**
+ * 设置标签回调
+ *
+ * @param context
+ * @param errorCode 0 为成功,其它为错误码
+ * @param tagName 设置的 TAG
+ */
+ @Override
+ public void onSetTagResult(Context context, int errorCode, String tagName) {
+ if (context == null) {
+ return;
+ }
+ String text = "";
+ if (errorCode == XGPushBaseReceiver.SUCCESS) {
+ text = "\"" + tagName + "\"设置成功";
+ } else {
+ text = "\"" + tagName + "\"设置失败,错误码:" + errorCode;
+ }
+ Log.d(LogTag, text);
+ show(context, text);
+
+ Intent testIntent = new Intent(TEST_ACTION);
+ testIntent.putExtra("step", Constants.TEST_SET_TAG);
+ context.sendBroadcast(testIntent);
+ }
+
+ /**
+ * 删除标签的回调
+ *
+ * @param context
+ * @param errorCode 0 为成功,其它为错误码
+ * @param tagName 设置的 TAG
+ */
+ @Override
+ public void onDeleteTagResult(Context context, int errorCode, String tagName) {
+ if (context == null) {
+ return;
+ }
+ String text = "";
+ if (errorCode == XGPushBaseReceiver.SUCCESS) {
+ text = "\"" + tagName + "\"删除成功";
+ } else {
+ text = "\"" + tagName + "\"删除失败,错误码:" + errorCode;
+ }
+ Log.d(LogTag, text);
+ show(context, text);
+
+ Intent testIntent = new Intent(TEST_ACTION);
+ testIntent.putExtra("step", Constants.TEST_DEL_TAG);
+ context.sendBroadcast(testIntent);
+ }
+
+ /**
+ * 设置账号回调
+ *
+ * @param context
+ * @param errorCode 0 为成功,其它为错误码
+ * @param account 设置的账号
+ */
+ @Override
+ public void onSetAccountResult(Context context, int errorCode, String account) {
+ Intent testIntent = new Intent(TEST_ACTION);
+ testIntent.putExtra("step", Constants.TEST_SET_ACCOUNT);
+ context.sendBroadcast(testIntent);
+ }
+
+
+ /**
+ * 删除账号回调
+ *
+ * @param context
+ * @param errorCode 0 为成功,其它为错误码
+ * @param account 设置的账号
+ */
+ @Override
+ public void onDeleteAccountResult(Context context, int errorCode, String account) {
+ Intent testIntent = new Intent(TEST_ACTION);
+ testIntent.putExtra("step", Constants.TEST_DEL_ACCOUNT);
+ context.sendBroadcast(testIntent);
+ }
+
+ @Override
+ public void onSetAttributeResult(Context context, int i, String s) {
+
+ }
+
+ @Override
+ public void onDeleteAttributeResult(Context context, int i, String s) {
+
+ }
+
+ @Override
+ public void onQueryTagsResult(Context context, int errorCode, String data, String operateName) {
+ Log.i(LogTag, "action - onQueryTagsResult, errorCode:" + errorCode + ", operateName:" + operateName + ", data: " + data);
+ }
+
+ /**
+ * 通知点击回调 actionType=1为该消息被清除,actionType=0为该消息被点击
+ *
+ * @param context
+ * @param message 包含被点击通知的内容
+ */
+ @Override
+ public void onNotificationClickedResult(Context context, XGPushClickedResult message) {
+ if (context == null || message == null) {
+ return;
+ }
+ String text = "";
+ if (message.getActionType() == NotificationAction.clicked.getType()) {
+ // 通知在通知栏被点击啦。。。。。
+ // APP自己处理点击的相关动作
+ // 这个动作可以在activity的onResume也能监听,请看第3点相关内容
+ text = "通知被打开 :" + message;
+ } else if (message.getActionType() == NotificationAction.delete.getType()) {
+ // 通知被清除啦。。。。
+ // APP自己处理通知被清除后的相关动作
+ text = "通知被清除 :" + message;
+ }
+ Toast.makeText(context, "广播接收到通知被点击:" + message.toString(),
+ Toast.LENGTH_SHORT).show();
+ // 获取自定义key-value
+ String customContent = message.getCustomContent();
+ if (customContent != null && customContent.length() != 0) {
+ JsonObject obj = JsonParser.parseString(customContent).getAsJsonObject();
+ // key1为前台配置的key
+ if (!TextUtils.isEmpty(obj.get("key").getAsString())) {
+ String value = obj.get("key").getAsString();
+ Log.d(LogTag, "get custom value:" + value);
+ }
+ // ...
+ }
+ // APP自主处理的过程。。。
+ Log.d(LogTag, text);
+ show(context, text);
+ }
+
+ private void show(Context context, String text) {
+// Toast.makeText(context, text, Toast.LENGTH_SHORT).show();
+ }
+
+ private void processCustomMessage(Context context, XGPushTextMessage message) {
+ if (context == null || message == null) {
+ return;
+ }
+
+ String title = message.getTitle();
+ String content = message.getContent();
+ JsonObject extrasJson = JsonParser.parseString(content).getAsJsonObject();
+
+ String extras = "";
+ if (extrasJson.get("extras") != null) {
+ extras = extrasJson.get("extras").toString();
+ }
+ PushManager.getInstance().setPushContent(title, extras);
+ }
+}
diff --git a/app/src/main/java/com/aoleyun/sn/tpush/common/DBOpenHelper.java b/app/src/main/java/com/aoleyun/sn/push/tpush/common/DBOpenHelper.java
similarity index 93%
rename from app/src/main/java/com/aoleyun/sn/tpush/common/DBOpenHelper.java
rename to app/src/main/java/com/aoleyun/sn/push/tpush/common/DBOpenHelper.java
index a72a305..e292f93 100644
--- a/app/src/main/java/com/aoleyun/sn/tpush/common/DBOpenHelper.java
+++ b/app/src/main/java/com/aoleyun/sn/push/tpush/common/DBOpenHelper.java
@@ -1,4 +1,4 @@
-package com.aoleyun.sn.tpush.common;
+package com.aoleyun.sn.push.tpush.common;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
diff --git a/app/src/main/java/com/aoleyun/sn/tpush/common/NotificationService.java b/app/src/main/java/com/aoleyun/sn/push/tpush/common/NotificationService.java
similarity index 98%
rename from app/src/main/java/com/aoleyun/sn/tpush/common/NotificationService.java
rename to app/src/main/java/com/aoleyun/sn/push/tpush/common/NotificationService.java
index 484d97f..29c3d0d 100644
--- a/app/src/main/java/com/aoleyun/sn/tpush/common/NotificationService.java
+++ b/app/src/main/java/com/aoleyun/sn/push/tpush/common/NotificationService.java
@@ -1,11 +1,11 @@
-package com.aoleyun.sn.tpush.common;
+package com.aoleyun.sn.push.tpush.common;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
-import com.aoleyun.sn.tpush.po.XGNotification;
+import com.aoleyun.sn.push.tpush.po.XGNotification;
import java.util.ArrayList;
import java.util.List;
diff --git a/app/src/main/java/com/aoleyun/sn/tpush/po/XGNotification.java b/app/src/main/java/com/aoleyun/sn/push/tpush/po/XGNotification.java
similarity index 97%
rename from app/src/main/java/com/aoleyun/sn/tpush/po/XGNotification.java
rename to app/src/main/java/com/aoleyun/sn/push/tpush/po/XGNotification.java
index e62d20c..c009d9f 100644
--- a/app/src/main/java/com/aoleyun/sn/tpush/po/XGNotification.java
+++ b/app/src/main/java/com/aoleyun/sn/push/tpush/po/XGNotification.java
@@ -1,4 +1,4 @@
-package com.aoleyun.sn.tpush.po;
+package com.aoleyun.sn.push.tpush.po;
public class XGNotification {
private Integer id;
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 547a9d4..e0b8cab 100644
--- a/app/src/main/java/com/aoleyun/sn/service/GuardService.java
+++ b/app/src/main/java/com/aoleyun/sn/service/GuardService.java
@@ -19,14 +19,13 @@ import android.util.Log;
import androidx.annotation.Nullable;
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
import com.aoleyun.sn.BuildConfig;
import com.aoleyun.sn.KeepAliveConnection;
import com.aoleyun.sn.R;
import com.aoleyun.sn.bean.BaseResponse;
import com.aoleyun.sn.comm.CommonConfig;
import com.aoleyun.sn.comm.PackageNames;
+import com.aoleyun.sn.gson.GsonUtils;
import com.aoleyun.sn.manager.MapManager;
import com.aoleyun.sn.network.NetInterfaceManager;
import com.aoleyun.sn.network.api.post.SendScreenStatusApi;
@@ -47,6 +46,7 @@ import com.arialyy.annotations.Download;
import com.arialyy.aria.core.Aria;
import com.arialyy.aria.core.task.DownloadTask;
import com.baidu.location.LocationClient;
+import com.google.gson.JsonObject;
import java.io.BufferedReader;
import java.io.File;
@@ -432,9 +432,9 @@ public class GuardService extends Service {
@Override
public void onNext(ResponseBody responseBody) {
try {
- com.alibaba.fastjson.JSONObject jsonObject = JSON.parseObject(responseBody.string());
+ JsonObject jsonObject = GsonUtils.getJsonObject(responseBody.string());
Log.e("getLockState", "onNext: " + jsonObject);
- int code = jsonObject.getInteger("code");
+ int code = jsonObject.get("code").getAsInt();
Log.e("getLockState", "onNext: code: " + code);
} catch (IOException e) {
e.printStackTrace();
@@ -843,9 +843,9 @@ public class GuardService extends Service {
//在这里处理任务执行中的状态,如进度进度条的刷新
@Download.onTaskRunning
protected void running(DownloadTask task) {
- JSONObject jsonObject = JSON.parseObject(task.getExtendField());
- String app_name = jsonObject.getString("app_name");
- String app_package = jsonObject.getString("app_package");
+ JsonObject jsonObject = GsonUtils.getJsonObject(task.getExtendField());
+ String app_name = jsonObject.get("app_name").getAsString();
+ String app_package = jsonObject.get("app_package").getAsString();
Log.e("aria", "正在下载:" + task.getPercent() + ":" + task.getExtendField());
ToastUtil.show("正在下载:" + app_name + "-" + task.getPercent() + "%" + "\t" + Formatter.formatFileSize(GuardService.this, task.getSpeed()) + "/s");
}
@@ -859,10 +859,10 @@ public class GuardService extends Service {
Log.e("taskComplete", "extendField::" + extendField);
if (filepath.endsWith("apk")) {
- JSONObject jsonObject = JSON.parseObject(extendField);
- String app_name = jsonObject.getString("app_name");
- String app_package = jsonObject.getString("app_package");
- String app_id = jsonObject.getString("app_id");
+ JsonObject jsonObject = GsonUtils.getJsonObject(extendField);
+ String app_name = jsonObject.get("app_name").getAsString();
+ String app_package = jsonObject.get("app_package").getAsString();
+ String app_id = jsonObject.get("app_id").getAsString();
ToastUtil.show(app_name + "\t:下载完成");
if (filepath.endsWith(".xapk")) {
XAPKUtils.getInstance().installXAPK(filepath);
@@ -936,9 +936,9 @@ public class GuardService extends Service {
Aria.download(this).resumeAllTask();
final String filepath = task.getFilePath();
final String packageName = task.getExtendField();
- JSONObject jsonObject = JSON.parseObject(task.getExtendField());
- String app_name = jsonObject.getString("app_name");
- String app_package = jsonObject.getString("app_package");
+ JsonObject jsonObject = GsonUtils.getJsonObject(task.getExtendField());
+ String app_name = jsonObject.get("app_name").getAsString();
+ String app_package = jsonObject.get("app_package").getAsString();
Log.e("aria", "taskFail: " + packageName + "filepath: " + filepath + "Exception: " + e.getMessage());
// ToastUtil.show(app_name + "\t:下载失败");
} catch (Exception e1) {
diff --git a/app/src/main/java/com/aoleyun/sn/service/RemoteService.java b/app/src/main/java/com/aoleyun/sn/service/RemoteService.java
index c94ca3f..e67f080 100644
--- a/app/src/main/java/com/aoleyun/sn/service/RemoteService.java
+++ b/app/src/main/java/com/aoleyun/sn/service/RemoteService.java
@@ -46,7 +46,7 @@ public class RemoteService extends Service {
@Override
public String getSerial() throws RemoteException {
- return Utils.getSerial();
+ return Utils.getSerial(RemoteService.this);
}
@Override
diff --git a/app/src/main/java/com/aoleyun/sn/service/StepService.java b/app/src/main/java/com/aoleyun/sn/service/StepService.java
index 53794e8..9159080 100644
--- a/app/src/main/java/com/aoleyun/sn/service/StepService.java
+++ b/app/src/main/java/com/aoleyun/sn/service/StepService.java
@@ -16,13 +16,13 @@ import android.util.Log;
import androidx.annotation.Nullable;
-import com.alibaba.fastjson.JSONObject;
import com.aoleyun.sn.BuildConfig;
import com.aoleyun.sn.utils.JGYUtils;
import com.blankj.utilcode.util.NetworkUtils;
import com.aoleyun.sn.KeepAliveConnection;
import com.aoleyun.sn.utils.ServiceAliveUtils;
import com.aoleyun.sn.utils.Utils;
+import com.google.gson.JsonObject;
import org.java_websocket.handshake.ServerHandshake;
@@ -231,29 +231,29 @@ public class StepService extends Service implements NetworkUtils.OnNetworkStatus
* 发送消息
*/
public void sendMsg() {
- JSONObject jsonObject = new JSONObject();
- jsonObject.put("sn", Utils.getSerial(this));
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("sn", Utils.getSerial(this));
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
if (!pm.isScreenOn()) {
- jsonObject.put("online", 2);
+ jsonObject.addProperty("online", 2);
//熄屏状态
} else {
- jsonObject.put("online", 1);
+ jsonObject.addProperty("online", 1);
}
if (null != client) {
- Log.i("JWebSocketClientService", "发送的消息:" + jsonObject.toJSONString());
- client.send(jsonObject.toJSONString());
+ Log.i("JWebSocketClientService", "发送的消息:" + jsonObject.toString());
+ client.send(jsonObject.toString());
}
}
public void sendMsg(int state) {
- JSONObject jsonObject = new JSONObject();
- jsonObject.put("sn", Utils.getSerial(this));
- jsonObject.put("online", state);
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("sn", Utils.getSerial(this));
+ jsonObject.addProperty("online", state);
try {
if (null != client) {
- Log.i("JWebSocketClientService", "发送的消息:" + jsonObject.toJSONString());
- client.send(jsonObject.toJSONString());
+ Log.i("JWebSocketClientService", "发送的消息:" + jsonObject.toString());
+ client.send(jsonObject.toString());
} else {
Log.i("JWebSocketClientService", "未连接");
}
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 9b2e39b..fa9a431 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
@@ -5,6 +5,7 @@ import android.app.AlarmManager;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.Service;
+import android.app.StatusBarManager;
import android.app.role.OnRoleHoldersChangedListener;
import android.app.role.RoleManager;
import android.content.BroadcastReceiver;
@@ -37,8 +38,6 @@ import android.widget.TextView;
import androidx.core.app.NotificationCompat;
import androidx.core.app.NotificationManagerCompat;
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
import com.aoleyun.sn.BuildConfig;
import com.aoleyun.sn.R;
import com.aoleyun.sn.activity.main.MainActivity;
@@ -46,6 +45,7 @@ import com.aoleyun.sn.bean.PoweroffBean;
import com.aoleyun.sn.comm.CommonConfig;
import com.aoleyun.sn.comm.JGYActions;
import com.aoleyun.sn.comm.PackageNames;
+import com.aoleyun.sn.gson.GsonUtils;
import com.aoleyun.sn.network.NetInterfaceManager;
import com.aoleyun.sn.rlog.LogDBManager;
import com.aoleyun.sn.utils.ApkUtils;
@@ -60,6 +60,7 @@ import com.aoleyun.sn.utils.Utils;
import com.arialyy.aria.core.Aria;
import com.blankj.utilcode.util.NetworkUtils;
import com.google.gson.Gson;
+import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken;
import com.tencent.android.tpush.XGIOperateCallback;
import com.tencent.android.tpush.XGPushConfig;
@@ -181,9 +182,12 @@ public class MainService extends Service implements MainSContact.MainView, Netwo
tagSets.add(JGYUtils.CubeTag);
} else if (platform == JGYUtils.MTK11Platform) {
tagSets.add(JGYUtils.MTK11Tag);
+ } else if (platform == JGYUtils.TeclastP20sPlatform) {
+ tagSets.add(JGYUtils.TeclastP20sTag);
}
}
});
+ Log.e(TAG, "setPushTag: " + tagSets);
NetInterfaceManager.getInstance().clearAndAppendTags(tagSets);
}
});
@@ -429,6 +433,7 @@ public class MainService extends Service implements MainSContact.MainView, Netwo
timeChangedStart.onstar(System.currentTimeMillis());
setStatusbar();
setFloatingWindow();
+ JGYUtils.getInstance().writeAppPackageList();
// notificationManager = NotificationManagerCompat.from(this);
// createNotificationChannel();
}
@@ -506,13 +511,15 @@ public class MainService extends Service implements MainSContact.MainView, Netwo
}
private void setStatusbar() {
+// StatusBarManager mStatusBarManager = (StatusBarManager) getApplicationContext().getSystemService(Context.STATUS_BAR_SERVICE);
+// mStatusBarManager.disable(StatusBarManager.DISABLE_RECENT | StatusBarManager.DISABLE_HOME);
String status = (String) SPUtils.get(this, JGYActions.ACTION_STATUSBAR_STATUS, "");
Log.e(TAG, "setStatusbar: String: " + status);
if (TextUtils.isEmpty(status)) {
Log.e(TAG, "setStatusbar: " + "status is NULL");
return;
}
- JSONObject jsonObject = JSON.parseObject(status);
+ JsonObject jsonObject = GsonUtils.getJsonObject(status);
SysSettingUtils.setStatusBar(this, jsonObject);
}
@@ -929,6 +936,7 @@ public class MainService extends Service implements MainSContact.MainView, Netwo
} else {
ToastUtil.betaShow("设备已解锁");
// notificationManager.cancel(NotificationID);
+ JGYUtils.getInstance().writeAppPackageList();
SysSettingUtils.setEnableSetting(this);
}
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 b246a7e..f2cab20 100644
--- a/app/src/main/java/com/aoleyun/sn/utils/ApkUtils.java
+++ b/app/src/main/java/com/aoleyun/sn/utils/ApkUtils.java
@@ -23,15 +23,15 @@ import android.util.Log;
import androidx.annotation.RequiresApi;
import androidx.core.content.FileProvider;
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
import com.aoleyun.sn.BuildConfig;
import com.aoleyun.sn.bean.UploadAppInfo;
import com.aoleyun.sn.comm.JGYActions;
import com.aoleyun.sn.comm.PackageNames;
+import com.aoleyun.sn.gson.GsonUtils;
import com.arialyy.aria.core.Aria;
import com.arialyy.aria.core.download.DownloadEntity;
import com.google.gson.Gson;
+import com.google.gson.JsonObject;
import java.io.BufferedReader;
import java.io.DataOutputStream;
@@ -977,6 +977,8 @@ public class ApkUtils {
this.add("com.wyt.wangkexueximvvm1");
this.add("com.android.stk");
this.add("com.shoufei.aole");
+
+ this.add("com.ygyb.yischool");
}};
public static void showAllAPP(Context context) {
@@ -1266,8 +1268,8 @@ public class ApkUtils {
for (DownloadEntity entity : list) {
long id = entity.getId();
String extendField = Aria.download(this).load(id).getExtendField();
- JSONObject jsonObject = JSON.parseObject(extendField);
- if (packageName.equals(jsonObject.getString("app_package"))) {
+ JsonObject jsonObject = GsonUtils.getJsonObject(extendField);
+ if (packageName.equals(jsonObject.get("app_package").getAsString())) {
Log.e("RemoveTask", "subscribe: " + "删除文件:" + entity.getFilePath());
Aria.download(this).load(id).cancel(true);
}
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 3327d0c..9d2c0a4 100644
--- a/app/src/main/java/com/aoleyun/sn/utils/JGYUtils.java
+++ b/app/src/main/java/com/aoleyun/sn/utils/JGYUtils.java
@@ -37,8 +37,6 @@ import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.core.content.ContextCompat;
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
import com.aoleyun.sn.BuildConfig;
import com.aoleyun.sn.bean.AppListInfo;
import com.aoleyun.sn.bean.Appground;
@@ -95,7 +93,6 @@ import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
-import java.util.Set;
import java.util.concurrent.Executor;
import java.util.function.Consumer;
import java.util.function.Predicate;
@@ -118,12 +115,14 @@ public class JGYUtils {
public static final int CubePlatform = 2;
public static final int ZhanruiPlatform = 3;
public static final int MTK11Platform = 5;
+ public static final int TeclastP20sPlatform = 6;
public static final String Other = "其他";
public static final String MTKTag = "MTK";
public static final String CubeTag = "展锐cube";
public static final String ZhanruiTag = "展锐";
public static final String MTK11Tag = "MTK11";
+ public static final String TeclastP20sTag = "P20S";
private CacheHelper cacheHelper;
@@ -158,6 +157,7 @@ public class JGYUtils {
public static native String getAuthorization();
public int checkSNPlatform(String sn) {
+ if (TextUtils.isEmpty(sn)) return UnknowPlatform;
String secondChars = sn.substring(1, 2);
if ("N".equalsIgnoreCase(secondChars)) {//MTK平台
return MTKPlatform;
@@ -180,9 +180,12 @@ public class JGYUtils {
} else if ("ZhanRuiCube".equalsIgnoreCase(platform)) {
Log.i(TAG, "checkAppPlatform: " + "ZhanRuiCube");
return CubePlatform;
- } else if ("MTK11".equalsIgnoreCase(platform)) {
+ } else if (MTK11Tag.equalsIgnoreCase(platform)) {
Log.i(TAG, "checkAppPlatform: " + "MTK11");
return MTK11Platform;
+ } else if (TeclastP20sTag.equalsIgnoreCase(platform)) {
+ Log.i(TAG, "checkAppPlatform: " + "P20S");
+ return TeclastP20sPlatform;
} else {
Log.i(TAG, "checkAppPlatform: " + "没有数据");
return UnknowPlatform;
@@ -212,6 +215,8 @@ public class JGYUtils {
getAppPlatformCallback.AppPlatform(CubePlatform);
} else if ("MTK11".equalsIgnoreCase(platform)) {
getAppPlatformCallback.AppPlatform(MTK11Platform);
+ } else if (TeclastP20sTag.equalsIgnoreCase(platform)) {
+ getAppPlatformCallback.AppPlatform(TeclastP20sPlatform);
} else {
getAppPlatformCallback.AppPlatform(UnknowPlatform);
}
@@ -227,6 +232,8 @@ public class JGYUtils {
return CubeTag;
} else if ("MTK11".equalsIgnoreCase(platform)) {
return MTK11Tag;
+ } else if ("P20S".equalsIgnoreCase(platform)) {
+ return TeclastP20sTag;
} else {
return Other;
}
@@ -490,11 +497,11 @@ public class JGYUtils {
Log.e(TAG, "checkPackageAndVersion: appVersionCode: " + appVersionCode + " getApp_version_code: " + info.getApp_version_code());
Log.e(TAG, "checkPackageAndVersion: " + pkg + " 卸载");
ApkUtils.UninstallAPP(mContext, pkg);
- JSONObject packageObj = new JSONObject();
- packageObj.put("app_name", info.getApp_name());
- packageObj.put("app_package", info.getApp_package());
- packageObj.put("app_id", info.getApp_id());
- packageObj.put("MD5", info.getApp_md5());
+ JsonObject packageObj = new JsonObject();
+ packageObj.addProperty("app_name", info.getApp_name());
+ packageObj.addProperty("app_package", info.getApp_package());
+ packageObj.addProperty("app_id", info.getApp_id());
+ packageObj.addProperty("MD5", info.getApp_md5());
Utils.ariaDownload(mContext, info.getApp_url(), packageObj);
} else {
Log.e(TAG, "checkPackageAndVersion: " + pkg + " 版本正常");
@@ -762,8 +769,11 @@ public class JGYUtils {
synchronized public void setNewAppinsideWeb(BaseResponse response) {
Log.e(TAG, "setNewAppinsideWeb: " + "应用内部联网管控: " + response);
if (response.code == 200) {
- String jsonString = JSONArray.toJSONString(response.data);
- List appgrounds = JSONObject.parseArray(jsonString, TTAppground.class);
+ String jsonString = GsonUtils.toJSONString(response.data);
+ Gson gson = new Gson();
+ Type type = new TypeToken>() {
+ }.getType();
+ List appgrounds = gson.fromJson(jsonString, type);
List whiteApp = new ArrayList<>();
List blackApp = new ArrayList<>();
if (appgrounds != null && appgrounds.size() > 0) {
@@ -1070,39 +1080,42 @@ public class JGYUtils {
if (TextUtils.isEmpty(data)) {
Log.e(TAG, "SettingSysData: " + "data is empty");
SysSettingUtils.setDisableSetting(mContext);
+ SPUtils.put(mContext, JGYActions.ACTION_STATUSBAR_STATUS, "");
} else {
SysSettingUtils.setSystemSetting(mContext, data);
}
}
+ HashSet defaultPackages = new HashSet() {{
+ this.add(BuildConfig.APPLICATION_ID);
+ this.add(PackageNames.OLD_DEVICE_INFO);//设备信息
+ this.add(PackageNames.OLD_APPSTORE);//教管壹
+ this.add(PackageNames.DEVICE_INFO);
+ this.add(PackageNames.APPSTORE);
+ this.add("com.info.sn");
+ this.add("com.uiuios.jgy1");
+ this.add("com.uiuios.jgy2");
+ this.add("com.tt.ttutils");
+ this.add("com.aoleyun.browser");
+ this.add("com.uiui.browser");
+ this.add("com.android.uiuios");
+ this.add("com.aoleyun.os");
+ this.add("com.aoleyunos.dop1");
+ this.add("com.aoleyunos.dop2");
+ this.add("com.aoleyun.info");
+ this.add("com.calculator.uiui");
+ this.add("com.notepad.uiui");
+ this.add("com.calendar.uiui");
+ this.add("com.alarmclock.uiui");
+ this.add("com.uiui.videoplayer");
+ this.add("com.ygyb.yischool");
+ }};
+
@SuppressLint("NewApi")
public void writeAppPackageList(Context context, String packageList) {
ApkUtils.addShortcut(context);
- HashSet packages = new HashSet() {{
- this.add(BuildConfig.APPLICATION_ID);
- this.add(PackageNames.OLD_DEVICE_INFO);//设备信息
- this.add(PackageNames.OLD_APPSTORE);//教管壹
- this.add(PackageNames.DEVICE_INFO);
- this.add(PackageNames.APPSTORE);
- this.add("com.info.sn");
- this.add("com.uiuios.jgy1");
- this.add("com.uiuios.jgy2");
- this.add("com.tt.ttutils");
- this.add("com.aoleyun.browser");
- this.add("com.uiui.browser");
- this.add("com.android.uiuios");
- this.add("com.aoleyun.os");
- this.add("com.aoleyunos.dop1");
- this.add("com.aoleyunos.dop2");
- this.add("com.aoleyun.info");
- this.add("com.calculator.uiui");
- this.add("com.notepad.uiui");
- this.add("com.calendar.uiui");
- this.add("com.alarmclock.uiui");
- this.add("com.uiui.videoplayer");
- }};
HashSet pkgSet = new HashSet<>(Arrays.asList(packageList.split(",")));
- pkgSet.addAll(packages);
+ pkgSet.addAll(defaultPackages);
pkgSet.addAll(ApkUtils.desktopAPP);
pkgSet.addAll(ApkUtils.aoleyunAPP);
pkgSet.addAll(ApkUtils.aihuaApp);
@@ -1113,6 +1126,12 @@ public class JGYUtils {
Log.e("writeAppPackageList: ", "aole_app_forbid: " + b + " " + Settings.System.getString(crv, CommonConfig.AOLE_ACTION_APP_FORBID));
}
+ public void writeAppPackageList() {
+ String aole_app_forbid = String.join(",", defaultPackages);
+ Log.e(TAG, "writeAppPackageList: " + aole_app_forbid);
+ Settings.System.putString(crv, CommonConfig.AOLE_ACTION_APP_FORBID, aole_app_forbid);
+ }
+
public void checkForceDownload() {
String jsonString = cacheHelper.getAsString(UrlAddress.GET_FORCE_INSTALL_LIST);
//为 "" 是已经请求成功的
@@ -1142,11 +1161,11 @@ public class JGYUtils {
String app_url = forceDownloadData.getApp_url();
String app_id = forceDownloadData.getApp_id();
String app_md5 = forceDownloadData.getApp_md5();
- JSONObject jsonObject = new JSONObject();
- jsonObject.put("app_name", app_name);
- jsonObject.put("app_package", app_package);
- jsonObject.put("app_id", app_id);
- jsonObject.put("MD5", app_md5);
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("app_name", app_name);
+ jsonObject.addProperty("app_package", app_package);
+ jsonObject.addProperty("app_id", app_id);
+ jsonObject.addProperty("MD5", app_md5);
long app_version_code = forceDownloadData.getApp_version_code();
Log.e("fht ", "packageName=" + app_package + ",URL= " + app_url + ",app_version_code=" + app_version_code);
if (BuildConfig.APPLICATION_ID.equals(data.get(i).getApp_package())) {
@@ -1191,10 +1210,10 @@ public class JGYUtils {
String app_name = jsonObject.get("app_name").getAsString();
String app_md5 = jsonObject.get("app_md5").getAsString();
// String app_id = jsonObject.get("app_id").getAsString();
- JSONObject object = new JSONObject();
- object.put("app_name", app_name);
- object.put("app_package", packageName);
- object.put("MD5", app_md5);
+ JsonObject object = new JsonObject();
+ object.addProperty("app_name", app_name);
+ object.addProperty("app_package", packageName);
+ object.addProperty("MD5", app_md5);
// object.put("app_id", app_id);
PackageManager pm = mContext.getPackageManager();
PackageInfo packageInfo = null;
@@ -1219,9 +1238,9 @@ public class JGYUtils {
String packageName = jsonObject.get("app_package").getAsString();
String app_name = jsonObject.get("app_name").getAsString();
// String app_id = jsonObject.get("app_id").getAsString();
- JSONObject object = new JSONObject();
- object.put("app_name", app_name);
- object.put("app_package", packageName);
+ JsonObject object = new JsonObject();
+ object.addProperty("app_name", app_name);
+ object.addProperty("app_package", packageName);
// object.put("app_id", app_id);
PackageManager pm = mContext.getPackageManager();
PackageInfo packageInfo = null;
@@ -1251,10 +1270,10 @@ public class JGYUtils {
String app_name = data.getApp_name();
String app_md5 = data.getApp_md5();
// String app_id = jsonObject.get("app_id").getAsString();
- JSONObject object = new JSONObject();
- object.put("app_name", app_name);
- object.put("app_package", packageName);
- object.put("MD5", app_md5);
+ JsonObject object = new JsonObject();
+ object.addProperty("app_name", app_name);
+ object.addProperty("app_package", packageName);
+ object.addProperty("MD5", app_md5);
// object.put("app_id", app_id);
PackageManager pm = mContext.getPackageManager();
PackageInfo packageInfo = null;
@@ -1271,11 +1290,11 @@ public class JGYUtils {
}
}
- public void installDesktop(JSONObject jsonObject) {
- String app_name = jsonObject.getString("app_name");
- String app_url = jsonObject.getString("app_url");
- String app_package = jsonObject.getString("app_package");
- int app_version_code = jsonObject.getInteger("app_version_code");
+ public void installDesktop(JsonObject jsonObject) {
+ String app_name = jsonObject.get("app_name").getAsString();
+ String app_url = jsonObject.get("app_url").getAsString();
+ String app_package = jsonObject.get("app_package").getAsString();
+ int app_version_code = jsonObject.get("app_version_code").getAsInt();
if (ApkUtils.desktopAPP.get(0).equals(app_package)) {
ApkUtils.UninstallAPP(mContext, ApkUtils.desktopAPP.get(1));
} else {
@@ -1311,9 +1330,9 @@ public class JGYUtils {
public void deleteOtherApp() {
Log.e(TAG, "deleteOtherApp: " + Build.MODEL);
if ("K106".equalsIgnoreCase(Build.MODEL)
- ||"G10".equalsIgnoreCase(Build.MODEL)
- ||"G10P".equalsIgnoreCase(Build.MODEL)
- ||"G10R".equalsIgnoreCase(Build.MODEL)
+ || "G10".equalsIgnoreCase(Build.MODEL)
+ || "G10P".equalsIgnoreCase(Build.MODEL)
+ || "G10R".equalsIgnoreCase(Build.MODEL)
) {
return;
}
@@ -1442,6 +1461,24 @@ public class JGYUtils {
}
}
+ public void hideApp(String pkg) {
+ PackageManager pm = mContext.getPackageManager();
+ try {
+ pm.setApplicationEnabledSetting(pkg, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0);
+ } catch (Exception e) {
+ Log.e(TAG, "hideApp: " + e.getMessage());
+ }
+ }
+
+ public void showApp(String pkg) {
+ PackageManager pm = mContext.getPackageManager();
+ try {
+ pm.setApplicationEnabledSetting(pkg, PackageManager.COMPONENT_ENABLED_STATE_DEFAULT, 0);
+ } catch (Exception e) {
+ Log.e(TAG, "hideApp: " + e.getMessage());
+ }
+ }
+
/**
* 从Manifest中获取meta-data值
@@ -1471,15 +1508,15 @@ public class JGYUtils {
Log.e(TAG, "checkBootFile: Bootanimation file exists");
setBootanimation(bootFile.getAbsolutePath());
} else {
- JSONObject jsonObject = new JSONObject();
- jsonObject.put("MD5", MD5);
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("MD5", MD5);
Utils.ariaDownload(mContext, url, jsonObject);
Log.e(TAG, "checkBootFile: " + "download file");
}
} else {
- JSONObject jsonObject = new JSONObject();
- jsonObject.put("MD5", MD5);
- jsonObject.put("app_name", urlFileName);
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("MD5", MD5);
+ jsonObject.addProperty("app_name", urlFileName);
Utils.ariaDownload(mContext, url, jsonObject);
}
}
@@ -2037,6 +2074,9 @@ public class JGYUtils {
setDefaultDesktop(PackageNames.DESKTOP);
}
+ public void setYxpDefaultDesktop() {
+ setDefaultDesktop(PackageNames.YIXUEPAI_DESKTOP);
+ }
/**
* 设置默认桌面
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 d72707f..59adac7 100644
--- a/app/src/main/java/com/aoleyun/sn/utils/SysSettingUtils.java
+++ b/app/src/main/java/com/aoleyun/sn/utils/SysSettingUtils.java
@@ -11,12 +11,12 @@ import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log;
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
import com.aoleyun.sn.BuildConfig;
import com.aoleyun.sn.comm.CommonConfig;
import com.aoleyun.sn.comm.JGYActions;
+import com.aoleyun.sn.gson.GsonUtils;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonObject;
import java.util.ArrayList;
import java.util.List;
@@ -41,7 +41,7 @@ public class SysSettingUtils {
if (null == context) {
throw new RuntimeException("Context it's null");
}
- JSONObject jsonObject = JSON.parseObject(jsonObj);
+ JsonObject jsonObject = GsonUtils.getJsonObject(jsonObj);
setPhoneList(context, jsonObject);
setBluetooth(context, jsonObject);
setHotspot(context, jsonObject);
@@ -51,8 +51,8 @@ public class SysSettingUtils {
setIcon(context, jsonObject);
setCanReset(context, jsonObject);
setAutoTime(context, jsonObject);
- JSONObject navJson = jsonObject.getJSONObject("setting_nav");
- SPUtils.put(context, JGYActions.ACTION_STATUSBAR_STATUS, jsonObject.getJSONObject("setting_nav").toJSONString());
+ JsonObject navJson = jsonObject.get("setting_nav").getAsJsonObject();
+ SPUtils.put(context, JGYActions.ACTION_STATUSBAR_STATUS, jsonObject.get("setting_nav").toString());
setStatusBar(context, navJson);
setBrowserInput(context, jsonObject);
// TODO: 2022/4/11 不是酷比定制的会报错,无法抛出异常
@@ -123,15 +123,15 @@ public class SysSettingUtils {
}
}
- private static void setPhoneList(Context context, JSONObject jsonObject) {
+ private static void setPhoneList(Context context, JsonObject jsonObject) {
try {
//设置电话功能,电话白名单
//电话通话开关
- int setting_call = changeNum(jsonObject.getInteger("setting_call"));
+ int setting_call = changeNum(jsonObject.get("setting_call").getAsInt());
boolean qch_call_forbid = Settings.System.putInt(context.getContentResolver(), "qch_call_forbid", setting_call);
Log.e(TAG, "qch_call_forbid:" + qch_call_forbid);
//电话白名单开关
- int setting_phone = changeNum(jsonObject.getInteger("setting_phone"));
+ int setting_phone = changeNum(jsonObject.get("setting_phone").getAsInt());
boolean aole_white_list_on = Settings.System.putInt(context.getContentResolver(), CommonConfig.AOLE_ACTION_WHITE_LIST_ON, setting_phone);
Log.e(TAG, "aole_white_list_on:" + aole_white_list_on);
//白名单列表
@@ -140,13 +140,13 @@ public class SysSettingUtils {
// ToastTool.show("qch_call_forbid::"+setting_call+"----setting_phones::"+setting_phones+"----"+aole_white_list_Array+"---"+qch_call_forbid);
Log.e(TAG, "aole_white_list_Array:" + aole_white_list_Array);
} else {
- String setting_phones = jsonObject.getString("setting_phones");
+ String setting_phones = jsonObject.get("setting_phones").getAsString();
boolean aole_white_list_Array = Settings.System.putString(context.getContentResolver(), CommonConfig.AOLE_ACTION_WHITE_LIST_ARRAY, setting_phones);
// ToastTool.show("qch_call_forbid::"+setting_call+"----setting_phones::"+setting_phones+"----"+aole_white_list_Array+"---"+qch_call_forbid);
Log.e(TAG, "aole_white_list_Array:" + aole_white_list_Array + "---" + setting_phones);
}
//存储卡
- int setting_memory = changeNum(jsonObject.getInteger("setting_memory"));
+ int setting_memory = changeNum(jsonObject.get("setting_memory").getAsInt());
boolean aole_sdcard_forbid_on = Settings.System.putInt(context.getContentResolver(), CommonConfig.AOLE_ACTION_SDCARD_FORBID_ON, setting_memory);
Log.e(TAG, "aole_sdcard_forbid_on:" + aole_sdcard_forbid_on);
} catch (Exception e) {
@@ -174,12 +174,12 @@ public class SysSettingUtils {
}
}
- private static void setUSBstate(Context context, JSONObject jsonObject) {
+ private static void setUSBstate(Context context, JsonObject jsonObject) {
//USB数据功能管控
//仅充电:usb_charge
//MTP模式:usb_mtp
//Midi模式:usb_midi
- String setting_usb = jsonObject.getString("setting_usb");
+ String setting_usb = jsonObject.get("setting_usb").getAsString();
if (!BuildConfig.DEBUG) {
if (JGYUtils.isCubeDevice()) {
SuperPower mService = (SuperPower) context.getSystemService("mdm");
@@ -237,14 +237,14 @@ public class SysSettingUtils {
}
}
- private static void setBluetooth(Context context, JSONObject jsonObject) {
+ private static void setBluetooth(Context context, JsonObject jsonObject) {
try {
//蓝牙开关
- int setting_bht = changeNum(jsonObject.getInteger("setting_bht"));
+ int setting_bht = changeNum(jsonObject.get("setting_bht").getAsInt());
//总开关
- int setting_bhtvideo = changeNum(jsonObject.getInteger("setting_bhtvideo"));
+ int setting_bhtvideo = changeNum(jsonObject.get("setting_bhtvideo").getAsInt());
//蓝牙音频开关
- int setting_bluetooth = changeNum(jsonObject.getInteger("setting_bluetooth"));
+ int setting_bluetooth = changeNum(jsonObject.get("setting_bluetooth").getAsInt());
//蓝牙传输开关
boolean aole_bht_forbid_on = Settings.System.putInt(context.getContentResolver(), CommonConfig.AOLE_ACTION_BHT_FORBID_ON, setting_bht);
@@ -258,7 +258,7 @@ public class SysSettingUtils {
}
if (setting_bht == 0) {
//蓝牙总开关开启
- String setting_context = jsonObject.getString("setting_context");
+ String setting_context = jsonObject.get("setting_context").getAsString();
if (setting_bhtvideo == 0) {
if (null != setting_context && !"".equals(setting_context) && !" ".equals(setting_context) && !"null".equals(setting_context)) {
Log.e(TAG, "setting_context:" + setting_context);
@@ -293,9 +293,9 @@ public class SysSettingUtils {
}
}
- private static void setHotspot(Context context, JSONObject jsonObject) {
+ private static void setHotspot(Context context, JsonObject jsonObject) {
try {
- int setting_hotspot = changeNum(jsonObject.getInteger("setting_hotspot"));//热点
+ int setting_hotspot = changeNum(jsonObject.get("setting_hotspot").getAsInt());//热点
if (setting_hotspot == 1) {
Intent intent = new Intent();
intent.setAction("qch_hotspot_close");
@@ -355,9 +355,9 @@ public class SysSettingUtils {
}
}
- private static void setBar(Context context, JSONObject jsonObject) {
+ private static void setBar(Context context, JsonObject jsonObject) {
//系统导航条显示开关
- int setting_navigation = changeNum(jsonObject.getInteger("setting_navigation"));
+ int setting_navigation = changeNum(jsonObject.get("setting_navigation").getAsInt());
//写入到系统不涉及任何管控,因为之前调用会频繁隐藏显示
boolean aole_hide_NavigationBar = Settings.System.putInt(context.getContentResolver(), CommonConfig.AOLE_ACTION_HIDE_NAVIGATION_BAR, setting_navigation);
Log.e(TAG, "aole_hide_NavigationBar---------" + aole_hide_NavigationBar);
@@ -378,7 +378,7 @@ public class SysSettingUtils {
//状态栏显示开关
- int setting_statusbar = changeNum(jsonObject.getInteger("setting_statusbar"));
+ int setting_statusbar = changeNum(jsonObject.get("setting_statusbar").getAsInt());
int oldNum = Settings.System.getInt(context.getContentResolver(), CommonConfig.AOLE_ACTION_HIDE_STATUS_BAR, 0);
if (oldNum != setting_statusbar) {
//写入到系统不涉及任何管控,因为之前调用会频繁隐藏显示
@@ -423,10 +423,10 @@ public class SysSettingUtils {
}
}
- private static void setCamera(Context context, JSONObject jsonObject) {
+ private static void setCamera(Context context, JsonObject jsonObject) {
try {
//摄像头开关
- int setting_camera = changeNum(jsonObject.getInteger("setting_camera"));
+ int setting_camera = changeNum(jsonObject.get("setting_camera").getAsInt());
Settings.System.putInt(context.getContentResolver(), "qch_app_camera", setting_camera);
Log.e(TAG, "qch_app_camera2:" + setting_camera);
// ApkUtils.hideSystemSettingAPP(context, "com.mediatek.camera");
@@ -479,9 +479,9 @@ public class SysSettingUtils {
* @param context
* @param jsonObject tfmedia开关
*/
- private static void setTF(Context context, JSONObject jsonObject) {
+ private static void setTF(Context context, JsonObject jsonObject) {
try {
- int setting_tfmedia = jsonObject.getInteger("setting_tfmedia");
+ int setting_tfmedia = jsonObject.get("setting_tfmedia").getAsInt();
// if (JGYUtils.isOfficialVersion() ) {
// setting_tfmedia = changeNum(setting_tfmedia);
// }
@@ -502,12 +502,11 @@ public class SysSettingUtils {
Intent tfmediaIntent = new Intent(tfmediaStatus).setPackage("com.android.settings");
context.sendBroadcast(tfmediaIntent);
if (setting_tfmedia == 1) {
- JSONArray jSONArray = null;
- jSONArray = jsonObject.getJSONArray("setting_tfmedia_format");
+ JsonArray jSONArray = jsonObject.get("setting_tfmedia_format").getAsJsonArray();
StringBuffer stringBuffer = new StringBuffer();
for (int i = 0; i < jSONArray.size(); i++) {
- stringBuffer.append(jSONArray.getString(i));
+ stringBuffer.append(jSONArray.get(i).toString());
stringBuffer.append(",");
}
stringBuffer.deleteCharAt(stringBuffer.length() - 1);
@@ -561,35 +560,35 @@ public class SysSettingUtils {
}
}
- private static void setIcon(Context context, JSONObject jsonObject) {
+ private static void setIcon(Context context, JsonObject jsonObject) {
try {
//added:2019.12.6
//设置5个app的开关
//时钟
- int deskclock = changeNum(jsonObject.getInteger("setting_clock"));
+ int deskclock = changeNum(jsonObject.get("setting_clock").getAsInt());
Settings.System.putInt(context.getContentResolver(), "qch_app_deskclock", deskclock);
ApkUtils.hideSystemSettingAPP(context, "com.android.deskclock");
Log.e(TAG, "qch_app_deskclock" + deskclock);
//录音机
- int soundrecorder = changeNum(jsonObject.getInteger("setting_recording"));
+ int soundrecorder = changeNum(jsonObject.get("setting_recording").getAsInt());
Settings.System.putInt(context.getContentResolver(), "qch_app_soundrecorder", soundrecorder);
ApkUtils.hideSystemSettingAPP(context, "com.android.soundrecorder");
Log.e(TAG, "qch_app_soundrecorder" + soundrecorder);
//音乐
- int music = changeNum(jsonObject.getInteger("setting_music"));
+ int music = changeNum(jsonObject.get("setting_music").getAsInt());
Settings.System.putInt(context.getContentResolver(), "qch_app_music", music);
ApkUtils.hideSystemSettingAPP(context, "com.android.music");
Log.e(TAG, "qch_app_music" + music);
//图库
- int gallery = changeNum(jsonObject.getInteger("setting_picture"));
+ int gallery = changeNum(jsonObject.get("setting_picture").getAsInt());
Settings.System.putInt(context.getContentResolver(), "qch_app_gallery", gallery);
ApkUtils.hideSystemSettingAPP(context, "com.android.gallery3d");
Log.e(TAG, "qch_app_gallery" + gallery);
//壁纸
- int wallpaper = changeNum(jsonObject.getInteger("setting_wallpaper"));
+ int wallpaper = changeNum(jsonObject.get("setting_wallpaper").getAsInt());
setWallpaper(context, wallpaper);
//文件管理器
- int filemanager = changeNum(jsonObject.getInteger("setting_file"));
+ int filemanager = changeNum(jsonObject.get("setting_file").getAsInt());
Settings.System.putInt(context.getContentResolver(), "qch_app_filemanager", filemanager);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
ApkUtils.hideSystemSettingAPP(context, "com.mediatek.filemanager");
@@ -598,11 +597,11 @@ public class SysSettingUtils {
}
Log.e(TAG, "qch_app_filemanager" + filemanager);
//浏览器
- int browser = changeNum(jsonObject.getInteger("setting_browser"));
+ int browser = changeNum(jsonObject.get("setting_browser").getAsInt());
Settings.System.putInt(context.getContentResolver(), "qch_app_browser", browser);
Log.e(TAG, "qch_app_browser" + browser);
//短信
- int setting_sms = changeNum(jsonObject.getInteger("setting_sms"));
+ int setting_sms = changeNum(jsonObject.get("setting_sms").getAsInt());
Settings.System.putInt(context.getContentResolver(), "qch_app_sms", setting_sms);
Log.e(TAG, "qch_app_sms" + setting_sms);
} catch (Exception e) {
@@ -625,8 +624,8 @@ public class SysSettingUtils {
//aole_restore_forbid_on=1,禁止恢复出厂设置
//aole_restore_forbid_on=0,允许恢复出厂设置
- private static void setCanReset(Context context, JSONObject jsonObject) {
- int mode = jsonObject.getInteger("qch_restore");
+ private static void setCanReset(Context context, JsonObject jsonObject) {
+ int mode = jsonObject.get("qch_restore").getAsInt();
if (mode == 1) {
boolean aole_restore_forbid_on = Settings.System.putInt(context.getContentResolver(), CommonConfig.AOLE_ACTION_RESTORE_FORBID_ON, 0);
Log.e(TAG, "aole_restore_forbid_on: " + aole_restore_forbid_on);
@@ -653,8 +652,8 @@ public class SysSettingUtils {
//intent34.setPackage("com.android.settings");
//sendBroadcast(intent34);
- private static void setAutoTime(Context context, JSONObject jsonObject) {
- String autoTime = jsonObject.getString("setting_autotime");
+ private static void setAutoTime(Context context, JsonObject jsonObject) {
+ String autoTime = jsonObject.get("setting_autotime").getAsString();
String action = "qch_autotime_network";
if (TextUtils.isEmpty(autoTime)) {
action = "qch_autotime_network";
@@ -690,23 +689,23 @@ public class SysSettingUtils {
}
@SuppressLint("NewApi")
- public static void setStatusBar(Context context, JSONObject jsonObject) {
- Log.e(TAG, "setStatusBar: " + jsonObject.toJSONString());
+ public static void setStatusBar(Context context, JsonObject jsonObject) {
+ Log.e(TAG, "setStatusBar: " + jsonObject.toString());
if (null != jsonObject) {
- int whole = jsonObject.getInteger("whole");
+ int whole = jsonObject.get("whole").getAsInt();
if (whole == 1) {
setStatusBar(context, 0);
} else {
List disableWhat = new ArrayList<>();
- int home = jsonObject.getInteger("home");
+ int home = jsonObject.get("home").getAsInt();
if (home == 0) {
disableWhat.add(StatusBarManager.DISABLE_HOME);
}
- int returnKey = jsonObject.getInteger("returnKey");
+ int returnKey = jsonObject.get("returnKey").getAsInt();
if (returnKey == 0) {
disableWhat.add(StatusBarManager.DISABLE_BACK);
}
- int taskbar = jsonObject.getInteger("taskbar");
+ int taskbar = jsonObject.get("taskbar").getAsInt();
if (taskbar == 0) {
disableWhat.add(StatusBarManager.DISABLE_RECENT);
}
@@ -737,12 +736,12 @@ public class SysSettingUtils {
* @param context
* @param jsonObject
*/
- private static void setBrowserInput(Context context, JSONObject jsonObject) {
+ private static void setBrowserInput(Context context, JsonObject jsonObject) {
int state = 1;
try {
- state = jsonObject.getInteger("setting_browserInput");
+ state = jsonObject.get("setting_browserInput").getAsInt();
Log.e(TAG, "setBrowserInput: " + state);
- String json = jsonObject.getString("setting_browserInput");
+ String json = jsonObject.get("setting_browserInput").getAsString();
if (TextUtils.isEmpty(json)) {
state = 1;
}
diff --git a/app/src/main/java/com/aoleyun/sn/utils/Utils.java b/app/src/main/java/com/aoleyun/sn/utils/Utils.java
index 7fe3f5f..ac71b50 100644
--- a/app/src/main/java/com/aoleyun/sn/utils/Utils.java
+++ b/app/src/main/java/com/aoleyun/sn/utils/Utils.java
@@ -48,7 +48,6 @@ import android.widget.Toast;
import androidx.annotation.RequiresApi;
import androidx.annotation.VisibleForTesting;
-import com.alibaba.fastjson.JSONObject;
import com.aoleyun.sn.BuildConfig;
import com.aoleyun.sn.R;
import com.aoleyun.sn.base.BaseApplication;
@@ -63,6 +62,7 @@ import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.QRCodeWriter;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
+import com.squareup.moshi.Json;
import com.tencent.mmkv.MMKV;
import java.io.BufferedReader;
@@ -107,6 +107,7 @@ import io.reactivex.rxjava3.core.ObservableOnSubscribe;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.schedulers.Schedulers;
+import vendor.mediatek.hardware.nvram.V1_0.INvram;
import static android.content.Context.WIFI_SERVICE;
@@ -177,6 +178,7 @@ public class Utils {
// } else {
// return getAndroid7MAC();
// }
+
return getAllMacAddress(context);
}
@@ -375,6 +377,13 @@ public class Utils {
return "未获取到设备Mac地址";
}
+ private static String getMacAddrApiS(Context context) {
+ WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
+ WifiInfo wifiInfo = wifiManager.getConnectionInfo();
+ String mac = wifiInfo.getMacAddress();
+ return mac;
+ }
+
// MD5 设备地址标识
public static String getMD5(Context context) {
String WLANMAC = getMAC(context);
@@ -781,42 +790,86 @@ public class Utils {
return t1;
}
- public static String NOSN = "012345679ABCDEF";
+ public static final String NOSN = "012345679ABCDEF";
+ public static final String TECLAST_BRAND = "Teclast";
/**
* 获取设备序列号
*
* @return
*/
- @SuppressLint({"MissingPermission", "HardwareIds"})
public static String getSerial(Context context) {
- String serial = "unknow";
- try {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {//9.0+
- serial = Build.getSerial();
- } else if (Build.VERSION.SDK_INT > Build.VERSION_CODES.N) {//8.0+
- serial = Build.SERIAL;
- } else {//8.0-
- Class> c = Class.forName("android.os.SystemProperties");
- Method get = c.getMethod("get", String.class);
- serial = (String) get.invoke(c, "ro.serialno");
+ if (TECLAST_BRAND.equalsIgnoreCase(Build.BRAND)) {
+ return getPushMac(context);
+ } else {
+ if (NOSN.equalsIgnoreCase(getSn())) {
+ return getIMEI(context);
+ } else {
+ return getSn();
}
- } catch (Exception e) {
- e.printStackTrace();
- Log.e("getSerial", "读取设备序列号异常:" + e.toString());
}
- if (BuildConfig.DEBUG) {
-// return "LTPKD22110000051";
-// serial = "012345679ABCDEF";
- }
- if (NOSN.equalsIgnoreCase(serial)) {
- return getIMEI(context);
- }
- return serial;
}
+ public static String getPushMac(Context context) {
+ String macaddr = Utils.getMacAddrFromNvram();
+ return macaddr.replace(":", "").toUpperCase().trim();
+ }
+
+ //mh add start----
+ private static final int MAC_ADDRESS_ID = 30;
+ private static final int MAC_ADDRESS_OFFSET = 4;
+ private static final int MAC_ADDRESS_DIGITS = 6;
+ private static final int MAX_ADDRESS_VALUE = 0xff;
+ private static final int INVALID_RSSI = -200;
+
+ private static final String MAC_ADDRESS_FILENAME = "/mnt/vendor/nvdata/APCFG/APRDEB/WIFI";
+
+ private static String getMacAddrFromNvram() {
+ StringBuffer nvramBuf = new StringBuffer();
+ try {
+ int i = 0;
+ String buff = null;
+ INvram agent = INvram.getService();
+ if (agent == null) {
+ // mToast.setText("No support MAC address writing due to NVRAM");
+ // mToast.show();
+ Log.e("mh_mac", "NvRAMAgent is null");
+ return "";
+ }
+ try {
+ buff = agent.readFileByName(
+ MAC_ADDRESS_FILENAME, MAC_ADDRESS_OFFSET + MAC_ADDRESS_DIGITS);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return "";
+ }
+ Log.i("mh_mac", "Raw data:" + buff);
+ if (buff.length() < 2 * (MAC_ADDRESS_OFFSET + MAC_ADDRESS_DIGITS)) {
+ // mToast.setText("The foramt of NVRAM is not correct");
+ // mToast.show();
+ return "";
+ }
+ // Remove the \0 special character.
+ int macLen = buff.length() - 1;
+ for (i = MAC_ADDRESS_OFFSET * 2; i < macLen; i += 2) {
+ if ((i + 2) < macLen) {
+ nvramBuf.append(buff.substring(i, i + 2));
+ nvramBuf.append(":");
+ } else {
+ nvramBuf.append(buff.substring(i));
+ }
+ }
+ Log.d("mh_mac", "buff:" + nvramBuf.toString());
+ } catch (Exception e) {
+ e.printStackTrace();
+ return "";
+ }
+ return nvramBuf.toString();
+ }
+ //mh add end------
+
@SuppressLint({"MissingPermission", "HardwareIds"})
- public static String getSerial() {
+ public static String getSn() {
String serial = "unknow";
try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {//9.0+
@@ -832,9 +885,6 @@ public class Utils {
e.printStackTrace();
Log.e("getSerial", "读取设备序列号异常:" + e.toString());
}
- if (BuildConfig.DEBUG) {
-// return "QNG2DKB00463";
- }
return serial;
}
@@ -1138,9 +1188,9 @@ public class Utils {
* @param url
* @param jsonObject
*/
- public static void ariaDownload(Context context, String url, JSONObject jsonObject) {
+ public static void ariaDownload(Context context, String url, JsonObject jsonObject) {
String fileName = getFileNamefromURL(url);
- String urlMD5 = jsonObject.getString("MD5");
+ String urlMD5 = jsonObject.get("MD5").getAsString();
Log.e("ariaDownload", "urlMD5=" + urlMD5);
String p = JGYUtils.getInstance().getDownLoadPath();
File file = new File(JGYUtils.getInstance().getDownLoadPath() + fileName);
@@ -1158,7 +1208,7 @@ public class Utils {
.load(url) //读取下载地址
.setFilePath(JGYUtils.getInstance().getDownLoadPath() + fileName)
.ignoreFilePathOccupy()
- .setExtendField(jsonObject.toJSONString())
+ .setExtendField(jsonObject.toString())
.create(); //启动下载}
// }
}
@@ -1167,7 +1217,7 @@ public class Utils {
.load(url) //读取下载地址
.setFilePath(JGYUtils.getInstance().getDownLoadPath() + fileName)
.ignoreFilePathOccupy()
- .setExtendField(jsonObject.toJSONString())
+ .setExtendField(jsonObject.toString())
.create(); //启动下载}
}
}
@@ -1317,7 +1367,7 @@ public class Utils {
imei = tm.getDeviceId(slotIndex);
}
if (TextUtils.isEmpty(imei)) {
- return "暂无数据";
+ return context.getString(R.string.no_data);
}
return imei;
}
@@ -1330,7 +1380,7 @@ public class Utils {
//8.0及以后版本获取
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
IMEI = TelephonyMgr.getDeviceId();
-// } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
+ } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
// try {
// Method method = TelephonyMgr.getClass().getMethod("getImei");
// IMEI = (String) method.invoke(TelephonyMgr);
@@ -1341,11 +1391,11 @@ public class Utils {
// IMEI = TelephonyMgr.getDeviceId();
// } else {//9.0到10.0获取
-// IMEI = Settings.System.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
+ IMEI = Settings.System.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
}
Log.e("IMEI:", "IMEI: " + IMEI);
if (null == IMEI) {
- return "-";
+ return "";
} else {
return IMEI.toUpperCase();
}
@@ -1390,18 +1440,18 @@ public class Utils {
String firmware_version = getRomVersion();
String rom = Utils.getCustomVersion();
String screen_rate = getAndroiodScreenProperty(context);
- JSONObject jsonObject = new JSONObject();
- jsonObject.put("device", device);
- jsonObject.put("imei", imei);
- jsonObject.put("system_version", system_version);
- jsonObject.put("firmware_version", firmware_version);
- jsonObject.put("rom", rom);
- jsonObject.put("screen_rate", screen_rate);
- jsonObject.put("working_time", SystemClock.elapsedRealtime() / 1000);
- jsonObject.put("restart_count", SPUtils.get(context, "restart_count", 0));
- jsonObject.put("storage_usable", getRemnantSize(context));
- jsonObject.put("storage_total", getDataTotalSize(context));
- String jsonString = jsonObject.toJSONString();
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("device", device);
+ jsonObject.addProperty("imei", imei);
+ jsonObject.addProperty("system_version", system_version);
+ jsonObject.addProperty("firmware_version", firmware_version);
+ jsonObject.addProperty("rom", rom);
+ jsonObject.addProperty("screen_rate", screen_rate);
+ jsonObject.addProperty("working_time", SystemClock.elapsedRealtime() / 1000);
+ jsonObject.addProperty("restart_count", (int) SPUtils.get(context, "restart_count", 0));
+ jsonObject.addProperty("storage_usable", getRemnantSize(context));
+ jsonObject.addProperty("storage_total", getDataTotalSize(context));
+ String jsonString = jsonObject.toString();
Log.e(TAG, "getMachine: " + jsonString);
return jsonString;
}
@@ -1414,14 +1464,14 @@ public class Utils {
Log.e("getHardware", "Memory: " + memory);
String storage = getRemnantSize(context) + "/" + getDataTotalSize(context);
int CPU = getNumCores();
- JSONObject jsonObject = new JSONObject();
- jsonObject.put("electric", electric);
- jsonObject.put("charging", charging);
- jsonObject.put("memory", memory);
- jsonObject.put("storage", storage);
- jsonObject.put("battery_capacity", Utils.getBatterymAh(context));
- jsonObject.put("CPU", CPU + "核");
- String jsonString = jsonObject.toJSONString();
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("electric", electric);
+ jsonObject.addProperty("charging", charging);
+ jsonObject.addProperty("memory", memory);
+ jsonObject.addProperty("storage", storage);
+ jsonObject.addProperty("battery_capacity", Utils.getBatterymAh(context));
+ jsonObject.addProperty("CPU", CPU + "核");
+ String jsonString = jsonObject.toString();
Log.e(TAG, "getHardware: " + jsonString);
return jsonString;
}
@@ -1704,6 +1754,7 @@ public class Utils {
|| JGYUtils.getInstance().checkAppPlatform() == JGYUtils.CubePlatform
|| JGYUtils.getInstance().checkAppPlatform() == JGYUtils.MTKPlatform
|| JGYUtils.getInstance().checkAppPlatform() == JGYUtils.MTK11Platform
+ || JGYUtils.getInstance().checkAppPlatform() == JGYUtils.TeclastP20sPlatform
) {
return Utils.getProperty("ro.build.display.id", "获取失败");
} else {
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 8f75bd8..be8f4cc 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -113,6 +113,7 @@
最大充电电压:
发送命令: adb shell dumpsys battery \n
新版本%s已经发布,请更新应用
+ 暂无数据
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 52d43b4..88df504 100644
--- a/build.gradle
+++ b/build.gradle
@@ -4,10 +4,10 @@ buildscript {
repositories {
google()
mavenCentral()
- maven {url 'http://developer.huawei.com/repo/'}
maven { url "https://jitpack.io" }
+ maven {url 'http://developer.huawei.com/repo/'}
maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' }
- maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
+ maven { url 'http://maven.aliyun.com/nexus/content/repositories/releases/' }
}
dependencies {
classpath 'com.android.tools.build:gradle:3.6.4'
@@ -20,13 +20,12 @@ buildscript {
allprojects {
repositories {
- //jcenter即将关闭
google()
mavenCentral()
- maven {url 'http://developer.huawei.com/repo/'}
maven { url "https://jitpack.io" }
+ maven {url 'http://developer.huawei.com/repo/'}
maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' }
- maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
+ maven { url 'http://maven.aliyun.com/nexus/content/repositories/releases/' }
}
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {