version:1.7.9
date:2021-11-01 14:02:44 fix:修复唤醒 add:
This commit is contained in:
2
app/.gitignore
vendored
2
app/.gitignore
vendored
@@ -84,3 +84,5 @@ lint/outputs/
|
|||||||
lint/tmp/
|
lint/tmp/
|
||||||
# lint/reports/
|
# lint/reports/
|
||||||
/.idea/
|
/.idea/
|
||||||
|
/release/
|
||||||
|
/proguard-rules.pro
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ def appName() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
def releaseTime() {
|
def releaseTime() {
|
||||||
return new Date().format("yyyyMMdd", TimeZone.getDefault())
|
return new Date().format("yyyyMMdd-HHmmss", TimeZone.getDefault())
|
||||||
}
|
}
|
||||||
|
|
||||||
android {
|
android {
|
||||||
@@ -15,27 +15,25 @@ android {
|
|||||||
applicationId "com.info.sn"
|
applicationId "com.info.sn"
|
||||||
minSdkVersion 24
|
minSdkVersion 24
|
||||||
targetSdkVersion 29
|
targetSdkVersion 29
|
||||||
versionCode 74
|
|
||||||
versionName "1.7.4"
|
|
||||||
multiDexEnabled true
|
multiDexEnabled true
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||||
|
|
||||||
ndk {
|
ndk {
|
||||||
//选择要添加的对应 cpu 类型的 .so 库。
|
//选择要添加的对应 cpu 类型的 .so 库。
|
||||||
abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a', "x86"
|
abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a', "x86"
|
||||||
// 还可以添加 'x86', 'x86_64', 'mips', 'mips64'
|
// 还可以添加 'x86', 'x86_64', 'mips', 'mips64'
|
||||||
}
|
}
|
||||||
manifestPlaceholders = [
|
|
||||||
JPUSH_PKGNAME: applicationId,
|
|
||||||
JPUSH_APPKEY : "edf9cec22731b8b2fed56ee6", //JPush 上注册的包名对应的 Appkey.
|
|
||||||
JPUSH_CHANNEL: "developer-default", //暂时填写默认值即可.
|
|
||||||
]
|
|
||||||
javaCompileOptions {
|
javaCompileOptions {
|
||||||
annotationProcessorOptions {
|
annotationProcessorOptions {
|
||||||
includeCompileClasspath true
|
includeCompileClasspath true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
buildConfigField "String", "SCREEN_URL", '"https://homework.uiuios.com:3018/wm/is_online"'
|
}
|
||||||
buildConfigField "String", "WEBSOCKET_URL", '"wss://homework.uiuios.com:3018"'
|
|
||||||
|
lintOptions {
|
||||||
|
checkReleaseBuilds false
|
||||||
}
|
}
|
||||||
|
|
||||||
compileOptions {
|
compileOptions {
|
||||||
@@ -43,15 +41,33 @@ android {
|
|||||||
targetCompatibility JavaVersion.VERSION_1_8
|
targetCompatibility JavaVersion.VERSION_1_8
|
||||||
}
|
}
|
||||||
|
|
||||||
buildTypes {
|
//多版本
|
||||||
release {
|
productFlavors {
|
||||||
minifyEnabled false
|
beta {
|
||||||
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
flavorDimensions "default"
|
||||||
|
versionCode 79
|
||||||
|
versionName "1.7.9"
|
||||||
|
manifestPlaceholders = [
|
||||||
|
JPUSH_PKGNAME: "com.info.sn",
|
||||||
|
JPUSH_APPKEY : "edf9cec22731b8b2fed56ee6", //JPush 上注册的包名对应的 Appkey.
|
||||||
|
JPUSH_CHANNEL: "developer-default", //暂时填写默认值即可.
|
||||||
|
]
|
||||||
|
buildConfigField "String", "SCREEN_URL", '"https://homework.uiuios.com:3018/wm/is_online"'
|
||||||
|
buildConfigField "String", "WEBSOCKET_URL", '"wss://homework.uiuios.com:3018"'
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
lintOptions {
|
official {
|
||||||
checkReleaseBuilds false
|
flavorDimensions "default"
|
||||||
|
versionCode 77
|
||||||
|
versionName "1.7.7"
|
||||||
|
manifestPlaceholders = [
|
||||||
|
JPUSH_PKGNAME: "com.info.sn",
|
||||||
|
JPUSH_APPKEY : "4a6d2d53673e958fa8beb69d", //JPush 上注册的包名对应的 Appkey.
|
||||||
|
JPUSH_CHANNEL: "developer-default", //暂时填写默认值即可.
|
||||||
|
]
|
||||||
|
buildConfigField "String", "SCREEN_URL", '"https://homework.uiuios.com:3018/wm/is_online"'
|
||||||
|
buildConfigField "String", "WEBSOCKET_URL", '"wss://homework.uiuios.com:3018"'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//签名
|
//签名
|
||||||
|
|||||||
@@ -4,51 +4,68 @@
|
|||||||
package="com.info.sn"
|
package="com.info.sn"
|
||||||
android:sharedUserId="android.uid.system">
|
android:sharedUserId="android.uid.system">
|
||||||
<!-- 系统权限,有系统签名可以使用 -->
|
<!-- 系统权限,有系统签名可以使用 -->
|
||||||
<uses-permission android:name="android.permission.ACTION_SCREEN_ON" />
|
|
||||||
<uses-permission android:name="android.permission.ACTION_SCREEN_OFF" />
|
|
||||||
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
|
|
||||||
<uses-permission android:name="android.permission.INSTALL_PACKAGES" />
|
<uses-permission android:name="android.permission.INSTALL_PACKAGES" />
|
||||||
<uses-permission android:name="android.permission.GET_TASKS" />
|
|
||||||
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
|
|
||||||
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
|
|
||||||
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
|
|
||||||
<uses-permission android:name="android.permission.DELETE_PACKAGES" />
|
<uses-permission android:name="android.permission.DELETE_PACKAGES" />
|
||||||
<uses-permission android:name="android.permission.MASTER_CLEAR" />
|
<uses-permission android:name="android.permission.MASTER_CLEAR" />
|
||||||
<uses-permission android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE" />
|
<uses-permission android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE" />
|
||||||
<uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" />
|
<uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" />
|
||||||
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
|
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
|
||||||
|
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
|
||||||
|
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
|
||||||
|
<uses-permission android:name="android.permission.ACTION_SCREEN_ON" />
|
||||||
|
<uses-permission android:name="android.permission.ACTION_SCREEN_OFF" />
|
||||||
|
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
|
||||||
|
<uses-permission android:name="android.permission.GET_TASKS" />
|
||||||
|
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
|
||||||
|
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
|
||||||
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
|
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
|
||||||
<uses-permission android:name="android.permission.BLUETOOTH" />
|
<uses-permission android:name="android.permission.BLUETOOTH" />
|
||||||
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
|
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
|
||||||
<!-- Required -->
|
<!-- Required -->
|
||||||
<permission
|
<permission
|
||||||
android:name="com.info.sn.permission.JPUSH_MESSAGE"
|
android:name="com.info.sn.permission.JPUSH_MESSAGE"
|
||||||
android:protectionLevel="signature" /> <!-- Required 一些系统要求的权限,如访问网络等 -->
|
android:protectionLevel="signature" />
|
||||||
|
<!-- Required 一些系统要求的权限,如访问网络等 -->
|
||||||
<uses-permission android:name="${JPUSH_PKGNAME}.permission.JPUSH_MESSAGE" />
|
<uses-permission android:name="${JPUSH_PKGNAME}.permission.JPUSH_MESSAGE" />
|
||||||
<uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
|
<uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
|
||||||
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
|
|
||||||
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
|
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
|
||||||
<uses-permission
|
<uses-permission
|
||||||
android:name="android.permission.PACKAGE_USAGE_STATS"
|
android:name="android.permission.PACKAGE_USAGE_STATS"
|
||||||
tools:ignore="ProtectedPermissions" /> <!-- Optional for location -->
|
tools:ignore="ProtectedPermissions" />
|
||||||
<uses-permission android:name="android.permission.VIBRATE" /> <!-- 用于开启 debug 版本的应用在6.0 系统上 层叠窗口权限 -->
|
<!-- Optional for location -->
|
||||||
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <!-- 获取运营商信息,用于支持提供运营商信息相关的接口 -->
|
<uses-permission android:name="android.permission.VIBRATE" />
|
||||||
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位 -->
|
<!-- 用于开启 debug 版本的应用在6.0 系统上 层叠窗口权限 -->
|
||||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位 -->
|
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
|
||||||
|
<!-- 获取运营商信息,用于支持提供运营商信息相关的接口 -->
|
||||||
|
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
|
||||||
|
<!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位 -->
|
||||||
|
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||||
|
<!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位 -->
|
||||||
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
|
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
|
||||||
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <!-- 请求网络 -->
|
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
|
||||||
|
<!-- 请求网络 -->
|
||||||
<!-- Normal Permissions 不需要运行时注册 -->
|
<!-- Normal Permissions 不需要运行时注册 -->
|
||||||
<uses-permission android:name="android.permission.INTERNET" /> <!-- 不是SDK需要的权限,是示例中的后台唤醒定位需要的权限 -->
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
<uses-permission android:name="android.permission.WAKE_LOCK" /> <!-- 需要运行时注册的权限 -->
|
<!-- 不是SDK需要的权限,是示例中的后台唤醒定位需要的权限 -->
|
||||||
|
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
||||||
|
<!-- 需要运行时注册的权限 -->
|
||||||
<!-- 用于进行网络定位 -->
|
<!-- 用于进行网络定位 -->
|
||||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- 用于访问GPS定位 -->
|
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
||||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- 用于提高GPS定位速度 -->
|
<!-- 用于访问GPS定位 -->
|
||||||
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> <!-- 写入扩展存储,向扩展卡写入数据,用于写入缓存定位数据 -->
|
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 读取缓存数据 -->
|
<!-- 用于提高GPS定位速度 -->
|
||||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <!-- 用于读取手机当前的状态 -->
|
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
|
||||||
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!-- 更改设置 -->
|
<!-- 写入扩展存储,向扩展卡写入数据,用于写入缓存定位数据 -->
|
||||||
<uses-permission android:name="android.permission.WRITE_SETTINGS" /> <!-- 如果设置了target >= 28 如果需要启动后台定位则必须声明这个权限 -->
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <!-- 如果您的应用需要后台定位权限,且有可能运行在Android Q设备上,并且设置了target>28,必须增加这个权限声明 -->
|
<!-- 读取缓存数据 -->
|
||||||
|
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||||
|
<!-- 用于读取手机当前的状态 -->
|
||||||
|
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
|
||||||
|
<!-- 更改设置 -->
|
||||||
|
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
|
||||||
|
<!-- 如果设置了target >= 28 如果需要启动后台定位则必须声明这个权限 -->
|
||||||
|
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
||||||
|
<!-- 如果您的应用需要后台定位权限,且有可能运行在Android Q设备上,并且设置了target>28,必须增加这个权限声明 -->
|
||||||
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
|
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
|
||||||
|
|
||||||
<application
|
<application
|
||||||
@@ -83,7 +100,7 @@
|
|||||||
<activity
|
<activity
|
||||||
android:name=".activity.main.MainActivity"
|
android:name=".activity.main.MainActivity"
|
||||||
android:launchMode="singleTask"
|
android:launchMode="singleTask"
|
||||||
android:screenOrientation="sensor">
|
android:screenOrientation="sensorLandscape">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN" />
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
|
||||||
@@ -96,7 +113,7 @@
|
|||||||
android:enabled="true"
|
android:enabled="true"
|
||||||
android:exported="true" />
|
android:exported="true" />
|
||||||
<service android:name=".service.GuardService" />
|
<service android:name=".service.GuardService" />
|
||||||
<service android:name=".service.MyDownloadService" />
|
<service android:name=".service.DownloadService" />
|
||||||
<service
|
<service
|
||||||
android:name=".service.StepService"
|
android:name=".service.StepService"
|
||||||
android:exported="true">
|
android:exported="true">
|
||||||
@@ -293,7 +310,8 @@
|
|||||||
android:value="developer-default" />
|
android:value="developer-default" />
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="JPUSH_APPKEY"
|
android:name="JPUSH_APPKEY"
|
||||||
android:value="${JPUSH_APPKEY}" /> <!-- 设置key -->
|
android:value="${JPUSH_APPKEY}" />
|
||||||
|
<!-- 设置key -->
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="com.amap.api.v2.apikey"
|
android:name="com.amap.api.v2.apikey"
|
||||||
android:value="${AMAP_KEY}" />
|
android:value="${AMAP_KEY}" />
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
<netCheck value="true"/>
|
<netCheck value="true"/>
|
||||||
<!--除非无法使用注解,否则不建议使用广播来接受任务状态,true:使用广播接收任务状态,false:不适用广播接收状态 -->
|
<!--除非无法使用注解,否则不建议使用广播来接受任务状态,true:使用广播接收任务状态,false:不适用广播接收状态 -->
|
||||||
<!-- http://aria.laoyuyu.me/aria_doc/api/use_broadcast.html -->
|
<!-- http://aria.laoyuyu.me/aria_doc/api/use_broadcast.html -->
|
||||||
<useBroadcast value="true"/>
|
<useBroadcast value="false"/>
|
||||||
<!--断网的时候是否重试,true:断网也重试;false:断网不重试,直接走失败的回调-->
|
<!--断网的时候是否重试,true:断网也重试;false:断网不重试,直接走失败的回调-->
|
||||||
<notNetRetry value="true"/>
|
<notNetRetry value="true"/>
|
||||||
</app>
|
</app>
|
||||||
|
|||||||
@@ -47,10 +47,11 @@ import com.info.sn.jpush.ExampleUtil;
|
|||||||
import com.info.sn.jpush.LocalBroadcastManager;
|
import com.info.sn.jpush.LocalBroadcastManager;
|
||||||
import com.info.sn.jpush.TagAliasOperatorHelper;
|
import com.info.sn.jpush.TagAliasOperatorHelper;
|
||||||
import com.info.sn.network.HTTPInterface;
|
import com.info.sn.network.HTTPInterface;
|
||||||
|
import com.info.sn.receiver.BootReceiver;
|
||||||
|
import com.info.sn.service.DownloadService;
|
||||||
import com.info.sn.service.GuardService;
|
import com.info.sn.service.GuardService;
|
||||||
import com.info.sn.service.MainService;
|
import com.info.sn.service.MainService;
|
||||||
import com.info.sn.service.ManagerService;
|
import com.info.sn.service.ManagerService;
|
||||||
import com.info.sn.service.MyDownloadService;
|
|
||||||
import com.info.sn.service.StepService;
|
import com.info.sn.service.StepService;
|
||||||
import com.info.sn.manager.ControlManager;
|
import com.info.sn.manager.ControlManager;
|
||||||
import com.info.sn.manager.DeviceManager;
|
import com.info.sn.manager.DeviceManager;
|
||||||
@@ -63,9 +64,7 @@ import com.info.sn.utils.Utils;
|
|||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.text.SimpleDateFormat;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -76,7 +75,6 @@ import butterknife.ButterKnife;
|
|||||||
import cn.jpush.android.api.JPushInterface;
|
import cn.jpush.android.api.JPushInterface;
|
||||||
|
|
||||||
import static com.info.sn.jpush.TagAliasOperatorHelper.ACTION_SET;
|
import static com.info.sn.jpush.TagAliasOperatorHelper.ACTION_SET;
|
||||||
import static com.info.sn.jpush.TagAliasOperatorHelper.TagAliasBean;
|
|
||||||
|
|
||||||
public class MainActivity extends BaseActivity implements MainContact.MainView, NetworkUtils.OnNetworkStatusChangedListener {
|
public class MainActivity extends BaseActivity implements MainContact.MainView, NetworkUtils.OnNetworkStatusChangedListener {
|
||||||
private final String TAG = MainActivity.class.getSimpleName();
|
private final String TAG = MainActivity.class.getSimpleName();
|
||||||
@@ -190,6 +188,10 @@ public class MainActivity extends BaseActivity implements MainContact.MainView,
|
|||||||
JGYUtils.getInstance().killBackgroundProcesses(this, "com.gankao.gkwxhd");
|
JGYUtils.getInstance().killBackgroundProcesses(this, "com.gankao.gkwxhd");
|
||||||
SPUtils.put(this, "versionCode", BuildConfig.VERSION_CODE);
|
SPUtils.put(this, "versionCode", BuildConfig.VERSION_CODE);
|
||||||
}
|
}
|
||||||
|
//启动应用市场
|
||||||
|
Intent bootIntent = new Intent(BootReceiver.BOOT_COMPLETED);
|
||||||
|
bootIntent.setComponent(new ComponentName("com.jgyapp.market", "com.jgyapp.market.receiver.BootReceiver"));
|
||||||
|
sendBroadcast(bootIntent);
|
||||||
}
|
}
|
||||||
|
|
||||||
private class TimeTask extends AsyncTask<String, Long, Long> {
|
private class TimeTask extends AsyncTask<String, Long, Long> {
|
||||||
@@ -619,7 +621,12 @@ public class MainActivity extends BaseActivity implements MainContact.MainView,
|
|||||||
public void setBatch(String batch) {
|
public void setBatch(String batch) {
|
||||||
HashSet hashSet = new HashSet();
|
HashSet hashSet = new HashSet();
|
||||||
hashSet.add(batch);
|
hashSet.add(batch);
|
||||||
setTag(hashSet);
|
hashSet.removeIf(o -> TextUtils.isEmpty(o.toString()));
|
||||||
|
if (hashSet.size() != 0) {
|
||||||
|
setTag(hashSet);
|
||||||
|
} else {
|
||||||
|
Log.e(TAG, "setBatch: " + "hashSet size is 0");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void toGankaoApp() {
|
private void toGankaoApp() {
|
||||||
@@ -689,7 +696,7 @@ public class MainActivity extends BaseActivity implements MainContact.MainView,
|
|||||||
startService(new Intent(this, MainService.class));
|
startService(new Intent(this, MainService.class));
|
||||||
startService(new Intent(this, GuardService.class));
|
startService(new Intent(this, GuardService.class));
|
||||||
startService(new Intent(this, StepService.class));
|
startService(new Intent(this, StepService.class));
|
||||||
startService(new Intent(this, MyDownloadService.class));
|
startService(new Intent(this, DownloadService.class));
|
||||||
startService(new Intent(this, ManagerService.class));
|
startService(new Intent(this, ManagerService.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -409,48 +409,6 @@ public class MainPresenter implements MainContact.Presenter {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void setTag(Set set) {
|
|
||||||
TagAliasOperatorHelper.TagAliasBean tagAliasBean = new TagAliasOperatorHelper.TagAliasBean();
|
|
||||||
tagAliasBean.action = ACTION_SET;
|
|
||||||
TagAliasOperatorHelper.sequence++;
|
|
||||||
tagAliasBean.tags = set;
|
|
||||||
tagAliasBean.isAliasAction = false;
|
|
||||||
TagAliasOperatorHelper.getInstance().handleAction(mContext, TagAliasOperatorHelper.sequence, tagAliasBean);
|
|
||||||
}
|
|
||||||
|
|
||||||
// private void sendUid(AvailableProduct product, String gankaoUID) {
|
|
||||||
// NetInterfaceManager.getInstance()
|
|
||||||
// .getSaveSnUidApiControl()
|
|
||||||
// .saveSnUid(Utils.getSerial(), gankaoUID, System.currentTimeMillis() / 1000, product.getDuration())
|
|
||||||
// .subscribeOn(Schedulers.io())
|
|
||||||
// .observeOn(AndroidSchedulers.mainThread())
|
|
||||||
// .compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
|
|
||||||
// .subscribe(new Observer<Response>() {
|
|
||||||
// @Override
|
|
||||||
// public void onSubscribe(Disposable d) {
|
|
||||||
// Log.e(TAG + "sendUid", "onSubscribe: ");
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public void onNext(Response response) {
|
|
||||||
// Log.e(TAG + "sendUid", "onNext: " + JSONObject.toJSONString(response));
|
|
||||||
// if (response.code == 200) {
|
|
||||||
// Log.e(TAG + "sendUid", "onNext: " + response.msg);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public void onError(Throwable e) {
|
|
||||||
// Log.e(TAG + "sendUid", "onError: " + e.getMessage());
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public void onComplete() {
|
|
||||||
// Log.e(TAG + "sendUid", "onComplete: ");
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
// }
|
|
||||||
@Override
|
@Override
|
||||||
public void getQRCode() {
|
public void getQRCode() {
|
||||||
String encryptString = CXAESUtil.encrypt(Configs.AES_KEY, Utils.getSerial());
|
String encryptString = CXAESUtil.encrypt(Configs.AES_KEY, Utils.getSerial());
|
||||||
@@ -759,6 +717,8 @@ public class MainPresenter implements MainContact.Presenter {
|
|||||||
JGYUtils.getInstance().writeDeselectIDtoSystem(ids, packages);
|
JGYUtils.getInstance().writeDeselectIDtoSystem(ids, packages);
|
||||||
} else {
|
} else {
|
||||||
Log.e("getAppInside", "onNext: " + baseResponse.msg);
|
Log.e("getAppInside", "onNext: " + baseResponse.msg);
|
||||||
|
JGYUtils.putString(mContext.getContentResolver(), "qch_app_forbid_id", " ");
|
||||||
|
JGYUtils.putString(mContext.getContentResolver(), "DeselectViewArray", " ");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package com.info.sn.base;
|
package com.info.sn.base;
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint;
|
||||||
import android.app.Application;
|
import android.app.Application;
|
||||||
|
import android.content.Context;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.Looper;
|
import android.os.Looper;
|
||||||
import android.os.Process;
|
import android.os.Process;
|
||||||
@@ -9,22 +11,63 @@ import android.util.Log;
|
|||||||
import com.arialyy.aria.core.Aria;
|
import com.arialyy.aria.core.Aria;
|
||||||
import com.blankj.utilcode.util.ProcessUtils;
|
import com.blankj.utilcode.util.ProcessUtils;
|
||||||
import com.info.sn.BuildConfig;
|
import com.info.sn.BuildConfig;
|
||||||
|
import com.info.sn.jpush.TagAliasOperatorHelper;
|
||||||
import com.info.sn.manager.AmapManager;
|
import com.info.sn.manager.AmapManager;
|
||||||
import com.info.sn.manager.NetInterfaceManager;
|
import com.info.sn.manager.NetInterfaceManager;
|
||||||
import com.info.sn.manager.ControlManager;
|
import com.info.sn.manager.ControlManager;
|
||||||
import com.info.sn.manager.DeviceManager;
|
import com.info.sn.manager.DeviceManager;
|
||||||
|
import com.info.sn.network.HTTPInterface;
|
||||||
|
import com.info.sn.network.UrlAddress;
|
||||||
import com.info.sn.utils.JGYUtils;
|
import com.info.sn.utils.JGYUtils;
|
||||||
import com.info.sn.utils.SystemUtils;
|
import com.info.sn.utils.SystemUtils;
|
||||||
|
import com.info.sn.utils.ToastUtil;
|
||||||
|
import com.info.sn.utils.Utils;
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
import cn.jpush.android.api.JPushInterface;
|
import cn.jpush.android.api.JPushInterface;
|
||||||
|
import cn.jpush.android.api.JPushMessage;
|
||||||
|
import io.reactivex.Observable;
|
||||||
|
import io.reactivex.ObservableEmitter;
|
||||||
|
import io.reactivex.ObservableOnSubscribe;
|
||||||
|
import io.reactivex.Observer;
|
||||||
|
import io.reactivex.disposables.Disposable;
|
||||||
|
import okhttp3.Call;
|
||||||
|
import okhttp3.Callback;
|
||||||
|
import okhttp3.OkHttpClient;
|
||||||
|
import okhttp3.Request;
|
||||||
|
import okhttp3.Response;
|
||||||
|
|
||||||
public class BaseApplication extends Application {
|
public class BaseApplication extends Application {
|
||||||
|
private static final String TAG = BaseApplication.class.getSimpleName();
|
||||||
|
@SuppressLint("StaticFieldLeak")
|
||||||
|
public static Context context;
|
||||||
|
@SuppressLint("StaticFieldLeak")
|
||||||
|
private static BaseApplication instance;
|
||||||
|
|
||||||
|
public static Context getAppContext() {
|
||||||
|
return context;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 单例模式中获取唯一的ExitApplication实例
|
||||||
|
public static BaseApplication getInstance() {
|
||||||
|
if (null == instance) {
|
||||||
|
instance = new BaseApplication();
|
||||||
|
}
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate() {
|
public void onCreate() {
|
||||||
super.onCreate();
|
super.onCreate();
|
||||||
// if (!getPackageName().equals(ProcessUtils.getCurrentProcessName())) {
|
// if (!getPackageName().equals(ProcessUtils.getCurrentProcessName())) {
|
||||||
// return;
|
// return;
|
||||||
// }
|
// }
|
||||||
|
context = this;
|
||||||
|
instance = this;
|
||||||
if (SystemUtils.isMainProcessName(this, Process.myPid())) {
|
if (SystemUtils.isMainProcessName(this, Process.myPid())) {
|
||||||
//非主进程不初始化
|
//非主进程不初始化
|
||||||
utilsInint();
|
utilsInint();
|
||||||
@@ -48,6 +91,8 @@ public class BaseApplication extends Application {
|
|||||||
AmapManager.getInstance().initAmap();
|
AmapManager.getInstance().initAmap();
|
||||||
NetInterfaceManager.init(this);
|
NetInterfaceManager.init(this);
|
||||||
JGYUtils.hookWebView();
|
JGYUtils.hookWebView();
|
||||||
|
initAliasObservable();
|
||||||
|
initTagObservable();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void catchException() {
|
private void catchException() {
|
||||||
@@ -68,7 +113,8 @@ public class BaseApplication extends Application {
|
|||||||
try {
|
try {
|
||||||
Looper.loop(); //会先执行这个方法,然后在执行下面的异常捕获方法!
|
Looper.loop(); //会先执行这个方法,然后在执行下面的异常捕获方法!
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Log.e("捕获异常主线程:", Thread.currentThread().getName() + "在:" + e.getStackTrace()[0].getClassName());
|
Log.e("捕获异常主线程:", Thread.currentThread().getName() +
|
||||||
|
"在:" + e.getStackTrace()[0].getClassName());
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -76,4 +122,266 @@ public class BaseApplication extends Application {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void onAliasOperatorResult(JPushMessage jPushMessage) {
|
||||||
|
if (jPushMessage == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
int errorCode = jPushMessage.getErrorCode();
|
||||||
|
onAliasResult.onResult(errorCode);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setJpushAlias() {
|
||||||
|
Log.e("jiguangInterface", "30s后重新设置alias");
|
||||||
|
JPushInterface.setAlias(context, TagAliasOperatorHelper.sequence++, Utils.getSerial());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onTagOperatorResult(JPushMessage jPushMessage) {
|
||||||
|
if (jPushMessage == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
int errorCode = jPushMessage.getErrorCode();
|
||||||
|
onTagResult.onResult(errorCode);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setJpushTags() {
|
||||||
|
Log.e(TAG, "30s后重新设置tags");
|
||||||
|
HTTPInterface.setJpushTags(context);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static OnAliasResult onAliasResult;
|
||||||
|
|
||||||
|
interface OnAliasResult {
|
||||||
|
void onResult(int code);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static OnTagResult onTagResult;
|
||||||
|
|
||||||
|
interface OnTagResult {
|
||||||
|
void onResult(int code);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void initTagObservable() {
|
||||||
|
Log.e(TAG, "initTagObservable: ");
|
||||||
|
Observable.create(new ObservableOnSubscribe<Integer>() {
|
||||||
|
@Override
|
||||||
|
public void subscribe(ObservableEmitter<Integer> emitter) {
|
||||||
|
onTagResult = new OnTagResult() {
|
||||||
|
@Override
|
||||||
|
public void onResult(int code) {
|
||||||
|
Log.e("initTagObservable", "onResult: " + code);
|
||||||
|
emitter.onNext(code);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}).throttleLast(1, TimeUnit.MINUTES)
|
||||||
|
.subscribe(new Observer<Integer>() {
|
||||||
|
@Override
|
||||||
|
public void onSubscribe(Disposable d) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onNext(Integer integer) {
|
||||||
|
Log.e("initTagObservable", "onNext: " + integer);
|
||||||
|
String s = "tags:\t";
|
||||||
|
switch (integer) {
|
||||||
|
case 0:
|
||||||
|
Log.e("jiguangInterface", s + "Tag绑定成功");
|
||||||
|
break;
|
||||||
|
case 6001:
|
||||||
|
Log.e("jiguangInterface", s + "无效的设置");
|
||||||
|
break;
|
||||||
|
case 6005:
|
||||||
|
Log.e("jiguangInterface", s + "某一个 tag 字符串不合法");
|
||||||
|
ToastUtil.show("设备标签不合法,联系管理员修改\t" + "code:6005");
|
||||||
|
break;
|
||||||
|
case 6006:
|
||||||
|
Log.e("jiguangInterface", s + "某一个 tag 超长");
|
||||||
|
ToastUtil.show("设备标签过长,联系管理员修改\t" + "code:6006");
|
||||||
|
break;
|
||||||
|
case 6007:
|
||||||
|
Log.e("jiguangInterface", s + "tags 数量超出限制");
|
||||||
|
ToastUtil.show("设备标签数量超出限制,联系管理员修改\t" + "code:6007");
|
||||||
|
break;
|
||||||
|
case 6008:
|
||||||
|
Log.e("jiguangInterface", s + "tag 超出总长度限制");
|
||||||
|
ToastUtil.show("设备标签超出总长度限制,联系管理员修改\t" + "code:6008");
|
||||||
|
break;
|
||||||
|
case 6011:
|
||||||
|
Log.e("jiguangInterface", s + "短时间内操作过于频繁");
|
||||||
|
break;
|
||||||
|
case 6013:
|
||||||
|
Log.e("jiguangInterface", s + "用户设备时间轴异常");
|
||||||
|
ToastUtil.show("用户设备时间轴异常,修改后重新登陆\t" + "code:6013");
|
||||||
|
break;
|
||||||
|
case 6018:
|
||||||
|
Log.e("jiguangInterface", s + "Tags 过多");
|
||||||
|
cleanJpushTag();
|
||||||
|
ToastUtil.show("设备标签数量超出限制,联系管理员修改\t" + "code:6018");
|
||||||
|
break;
|
||||||
|
case 6021:
|
||||||
|
Log.e("jiguangInterface", s + "tags 操作正在进行中");
|
||||||
|
break;
|
||||||
|
//需要重新设置
|
||||||
|
case 6002:
|
||||||
|
Log.e("jiguangInterface", s + "设置超时,请重试");
|
||||||
|
setJpushTags();
|
||||||
|
break;
|
||||||
|
case 6014:
|
||||||
|
Log.e("jiguangInterface", s + "服务器繁忙,建议重试");
|
||||||
|
setJpushTags();
|
||||||
|
break;
|
||||||
|
case 6020:
|
||||||
|
Log.e("jiguangInterface", s + "建议过一段时间再设置");
|
||||||
|
setJpushTags();
|
||||||
|
break;
|
||||||
|
case 6024:
|
||||||
|
Log.e("jiguangInterface", s + "服务器内部错误");
|
||||||
|
setJpushTags();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onError(Throwable e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onComplete() {
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void initAliasObservable() {
|
||||||
|
Log.e(TAG, "initAliasObservable: ");
|
||||||
|
Observable.create(new ObservableOnSubscribe<Integer>() {
|
||||||
|
@Override
|
||||||
|
public void subscribe(ObservableEmitter<Integer> emitter) throws Exception {
|
||||||
|
onAliasResult = new OnAliasResult() {
|
||||||
|
@Override
|
||||||
|
public void onResult(int code) {
|
||||||
|
Log.e("initAliasObservable", "onResult: " + code);
|
||||||
|
emitter.onNext(code);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}).throttleLast(1, TimeUnit.MINUTES)
|
||||||
|
.subscribe(new Observer<Integer>() {
|
||||||
|
@Override
|
||||||
|
public void onSubscribe(Disposable d) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onNext(Integer integer) {
|
||||||
|
Log.e("initAliasObservable", "onNext: " + integer);
|
||||||
|
String s = "alias:\t";
|
||||||
|
switch (integer) {
|
||||||
|
case 0:
|
||||||
|
Log.e("jiguangInterface", s + "Alias绑定成功");
|
||||||
|
break;
|
||||||
|
case 6001:
|
||||||
|
Log.e("jiguangInterface", s + "无效的设置");
|
||||||
|
break;
|
||||||
|
case 6011:
|
||||||
|
Log.e("jiguangInterface", s + "短时间内操作过于频繁");
|
||||||
|
break;
|
||||||
|
case 6013:
|
||||||
|
Log.e("jiguangInterface", s + "用户设备时间轴异常");
|
||||||
|
ToastUtil.show("用户设备时间轴异常,修改后重新登陆\t" + s + "code:6013");
|
||||||
|
break;
|
||||||
|
case 6022:
|
||||||
|
Log.e("jiguangInterface", s + "alias 操作正在进行中");
|
||||||
|
break;
|
||||||
|
//需要重新设置
|
||||||
|
case 6002:
|
||||||
|
Log.e("jiguangInterface", s + "设置超时,请重试");
|
||||||
|
setJpushAlias();
|
||||||
|
break;
|
||||||
|
case 6014:
|
||||||
|
Log.e("jiguangInterface", s + "服务器繁忙,建议重试");
|
||||||
|
setJpushAlias();
|
||||||
|
break;
|
||||||
|
case 6020:
|
||||||
|
Log.e("jiguangInterface", s + "建议过一段时间再设置");
|
||||||
|
setJpushAlias();
|
||||||
|
break;
|
||||||
|
case 6024:
|
||||||
|
Log.e("jiguangInterface", s + "服务器内部错误");
|
||||||
|
setJpushAlias();
|
||||||
|
break;
|
||||||
|
case 6017:
|
||||||
|
case 6027:
|
||||||
|
Log.e("jiguangInterface", s + "别名绑定的设备数超过限制");
|
||||||
|
cleanJpushAlias();
|
||||||
|
setJpushAlias();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onError(Throwable e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onComplete() {
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
synchronized public static void cleanJpushAlias() {
|
||||||
|
//alias的绑定的设备超过10个,但是alias应该是一个设备对应一个,在重置设备后jpush的regid会变动,所以需要清除
|
||||||
|
//https://docs.jiguang.cn/jpush/server/push/rest_api_v3_device/#_5
|
||||||
|
OkHttpClient client = new OkHttpClient();
|
||||||
|
Request request = new Request.Builder()
|
||||||
|
.url(UrlAddress.DELETE_JPUSH_ALIAS + Utils.getSerial())
|
||||||
|
.header("Authorization", JGYUtils.getAuthorization())
|
||||||
|
.delete()
|
||||||
|
.build();
|
||||||
|
Call call = client.newCall(request);
|
||||||
|
call.enqueue(new Callback() {
|
||||||
|
@Override
|
||||||
|
public void onFailure(@NotNull Call call, @NotNull IOException e) {
|
||||||
|
Log.e("cleanJpushAlias", "onFailure: " + e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
|
||||||
|
Log.e("cleanJpushAlias", "onResponse: " + response.toString());
|
||||||
|
Log.e(TAG, "onResponse: " + "清除Alias成功");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
synchronized public static void cleanJpushTag() {
|
||||||
|
OkHttpClient client = new OkHttpClient();
|
||||||
|
Request request = new Request.Builder()
|
||||||
|
.url(UrlAddress.DELETE_JPUSH_TAG + Utils.getSerial())
|
||||||
|
.header("Authorization", JGYUtils.getAuthorization())
|
||||||
|
.delete()
|
||||||
|
.build();
|
||||||
|
Call call = client.newCall(request);
|
||||||
|
call.enqueue(new Callback() {
|
||||||
|
@Override
|
||||||
|
public void onFailure(@NotNull Call call, @NotNull IOException e) {
|
||||||
|
Log.e("cleanJpushTag", "onFailure: " + e.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
|
||||||
|
Log.e("cleanJpushTag", "onResponse: " + response.toString());
|
||||||
|
Log.e(TAG, "onResponse: " + "清除Tag成功");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,8 +20,6 @@ public class BaseResponse<T> implements Serializable {
|
|||||||
@NonNull
|
@NonNull
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
Gson gson = new Gson();
|
return JsonParser.parseString(new Gson().toJson(this)).getAsJsonObject().toString();
|
||||||
JsonObject jsonObject = JsonParser.parseString(gson.toJson(this)).getAsJsonObject();
|
|
||||||
return jsonObject.toString();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2,6 +2,8 @@ package com.info.sn.jpush;
|
|||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
|
||||||
|
import com.info.sn.base.BaseApplication;
|
||||||
|
|
||||||
import cn.jpush.android.api.CustomMessage;
|
import cn.jpush.android.api.CustomMessage;
|
||||||
import cn.jpush.android.api.JPushMessage;
|
import cn.jpush.android.api.JPushMessage;
|
||||||
import cn.jpush.android.service.JPushMessageReceiver;
|
import cn.jpush.android.service.JPushMessageReceiver;
|
||||||
@@ -14,6 +16,7 @@ public class MyJPushMessageReceiver extends JPushMessageReceiver {
|
|||||||
@Override
|
@Override
|
||||||
public void onTagOperatorResult(Context context, JPushMessage jPushMessage) {
|
public void onTagOperatorResult(Context context, JPushMessage jPushMessage) {
|
||||||
TagAliasOperatorHelper.getInstance().onTagOperatorResult(context, jPushMessage);
|
TagAliasOperatorHelper.getInstance().onTagOperatorResult(context, jPushMessage);
|
||||||
|
BaseApplication.getInstance().onTagOperatorResult(jPushMessage);
|
||||||
super.onTagOperatorResult(context, jPushMessage);
|
super.onTagOperatorResult(context, jPushMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -26,6 +29,7 @@ public class MyJPushMessageReceiver extends JPushMessageReceiver {
|
|||||||
@Override
|
@Override
|
||||||
public void onAliasOperatorResult(Context context, JPushMessage jPushMessage) {
|
public void onAliasOperatorResult(Context context, JPushMessage jPushMessage) {
|
||||||
TagAliasOperatorHelper.getInstance().onAliasOperatorResult(context, jPushMessage);
|
TagAliasOperatorHelper.getInstance().onAliasOperatorResult(context, jPushMessage);
|
||||||
|
BaseApplication.getInstance().onAliasOperatorResult(jPushMessage);
|
||||||
super.onAliasOperatorResult(context, jPushMessage);
|
super.onAliasOperatorResult(context, jPushMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import com.alibaba.fastjson.JSONArray;
|
|||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
|
import com.google.gson.JsonParser;
|
||||||
import com.info.sn.BuildConfig;
|
import com.info.sn.BuildConfig;
|
||||||
import com.info.sn.Statistics.AppInformation;
|
import com.info.sn.Statistics.AppInformation;
|
||||||
import com.info.sn.Statistics.StatisticsInfo;
|
import com.info.sn.Statistics.StatisticsInfo;
|
||||||
@@ -24,6 +25,7 @@ import com.info.sn.bean.zuoye.AppStart;
|
|||||||
import com.info.sn.bean.zuoye.AppUploadInfo;
|
import com.info.sn.bean.zuoye.AppUploadInfo;
|
||||||
import com.info.sn.bean.zuoye.BaseResponse;
|
import com.info.sn.bean.zuoye.BaseResponse;
|
||||||
import com.info.sn.bean.zuoye.BrowserBean;
|
import com.info.sn.bean.zuoye.BrowserBean;
|
||||||
|
import com.info.sn.jpush.TagAliasOperatorHelper;
|
||||||
import com.info.sn.manager.ControlManager;
|
import com.info.sn.manager.ControlManager;
|
||||||
import com.info.sn.manager.NetInterfaceManager;
|
import com.info.sn.manager.NetInterfaceManager;
|
||||||
import com.info.sn.network.api.NewestAppUpdate;
|
import com.info.sn.network.api.NewestAppUpdate;
|
||||||
@@ -41,6 +43,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
import cn.jpush.android.api.JPushInterface;
|
import cn.jpush.android.api.JPushInterface;
|
||||||
import io.reactivex.Observable;
|
import io.reactivex.Observable;
|
||||||
@@ -51,6 +54,8 @@ import io.reactivex.annotations.NonNull;
|
|||||||
import io.reactivex.disposables.Disposable;
|
import io.reactivex.disposables.Disposable;
|
||||||
import io.reactivex.schedulers.Schedulers;
|
import io.reactivex.schedulers.Schedulers;
|
||||||
|
|
||||||
|
import static com.info.sn.jpush.TagAliasOperatorHelper.ACTION_SET;
|
||||||
|
|
||||||
public class HTTPInterface {
|
public class HTTPInterface {
|
||||||
private static String TAG = HTTPInterface.class.getSimpleName();
|
private static String TAG = HTTPInterface.class.getSimpleName();
|
||||||
|
|
||||||
@@ -558,11 +563,11 @@ public class HTTPInterface {
|
|||||||
String hardware = Utils.getHardware(context);
|
String hardware = Utils.getHardware(context);
|
||||||
Log.e(TAG, "updateAdminInfo: getHardware = " + hardware);
|
Log.e(TAG, "updateAdminInfo: getHardware = " + hardware);
|
||||||
JSONObject softwareJson = new JSONObject();
|
JSONObject softwareJson = new JSONObject();
|
||||||
softwareJson.put("appstore_version", ApkUtils.getAPPVersionName(context, "com.appstore.uiui"));
|
softwareJson.put("appstore_version", ApkUtils.getAPPVersionName(context, "com.jgyapp.market"));
|
||||||
softwareJson.put("updatetools_version", ApkUtils.getAPPVersionName(context, "com.uiuios.updatetools"));
|
softwareJson.put("updatetools_version", ApkUtils.getAPPVersionName(context, "com.uiuios.updatetools"));
|
||||||
softwareJson.put("info_version", ApkUtils.getAPPVersionName(context, "com.info.sn"));
|
softwareJson.put("info_version", ApkUtils.getAPPVersionName(context, "com.info.sn"));
|
||||||
softwareJson.put("jiaoguanyi_version", ApkUtils.getAPPVersionName(context, "com.gankao.gkwxhd"));
|
softwareJson.put("jiaoguanyi_version", ApkUtils.getAPPVersionName(context, "com.jiaoguanyi.os"));
|
||||||
softwareJson.put("gankao_version", ApkUtils.getAPPVersionName(context, "com.jiaoguanyi.os"));
|
softwareJson.put("gankao_version", ApkUtils.getAPPVersionName(context, "com.gankao.gkwxhd"));
|
||||||
softwareJson.put("learning_version", ApkUtils.getAPPVersionName(context, "com.info.learning"));
|
softwareJson.put("learning_version", ApkUtils.getAPPVersionName(context, "com.info.learning"));
|
||||||
softwareJson.put("chat_version", ApkUtils.getAPPVersionName(context, "com.info.chat"));
|
softwareJson.put("chat_version", ApkUtils.getAPPVersionName(context, "com.info.chat"));
|
||||||
softwareJson.put("jpush_id", JPushInterface.getRegistrationID(context));
|
softwareJson.put("jpush_id", JPushInterface.getRegistrationID(context));
|
||||||
@@ -943,7 +948,7 @@ public class HTTPInterface {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void getAppInside() {
|
public static void getAppInside(Context context) {
|
||||||
NetInterfaceManager.getInstance().getAppInsideControl()
|
NetInterfaceManager.getInstance().getAppInsideControl()
|
||||||
.subscribe(new Observer<BaseResponse>() {
|
.subscribe(new Observer<BaseResponse>() {
|
||||||
@Override
|
@Override
|
||||||
@@ -962,6 +967,8 @@ public class HTTPInterface {
|
|||||||
JGYUtils.getInstance().writeDeselectIDtoSystem(ids, packages);
|
JGYUtils.getInstance().writeDeselectIDtoSystem(ids, packages);
|
||||||
} else {
|
} else {
|
||||||
Log.e("getAppInside", "onNext: " + baseResponse.msg);
|
Log.e("getAppInside", "onNext: " + baseResponse.msg);
|
||||||
|
JGYUtils.putString(context.getContentResolver(), "qch_app_forbid_id", " ");
|
||||||
|
JGYUtils.putString(context.getContentResolver(), "DeselectViewArray", " ");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1042,4 +1049,50 @@ public class HTTPInterface {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void setJpushTags(Context context) {
|
||||||
|
NetInterfaceManager.getInstance()
|
||||||
|
.getBatchApiControl()
|
||||||
|
.subscribe(new Observer<BaseResponse>() {
|
||||||
|
@Override
|
||||||
|
public void onSubscribe(Disposable d) {
|
||||||
|
Log.e("getBatch", "onSubscribe: ");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onNext(BaseResponse baseResponse) {
|
||||||
|
Log.e("getBatch", "onNext: " + baseResponse);
|
||||||
|
if (baseResponse.code == 200) {
|
||||||
|
Gson gson = new Gson();
|
||||||
|
JsonObject jsonObject = JsonParser.parseString(gson.toJson(baseResponse.data)).getAsJsonObject();
|
||||||
|
int batch_id = jsonObject.get("batch_id").getAsInt();
|
||||||
|
Log.e("getBatch", "onNext: " + batch_id);
|
||||||
|
Set set = new HashSet();
|
||||||
|
set.add(batch_id);
|
||||||
|
setTag(context, set);
|
||||||
|
} else {
|
||||||
|
Log.e("getBatch", "onNext: " + baseResponse.msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onError(Throwable e) {
|
||||||
|
Log.e("getBatch", "onError: " + e.getMessage());
|
||||||
|
onComplete();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onComplete() {
|
||||||
|
Log.e("getBatch", "onComplete: ");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void setTag(Context context, Set set) {
|
||||||
|
TagAliasOperatorHelper.TagAliasBean tagAliasBean = new TagAliasOperatorHelper.TagAliasBean();
|
||||||
|
tagAliasBean.action = ACTION_SET;
|
||||||
|
TagAliasOperatorHelper.sequence++;
|
||||||
|
tagAliasBean.tags = set;
|
||||||
|
tagAliasBean.isAliasAction = false;
|
||||||
|
TagAliasOperatorHelper.getInstance().handleAction(context, TagAliasOperatorHelper.sequence, tagAliasBean);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -77,4 +77,13 @@ public class UrlAddress {
|
|||||||
public static final String UPGRADE_USER_POWER = "upgradeUserPower";
|
public static final String UPGRADE_USER_POWER = "upgradeUserPower";
|
||||||
//撤销指定的用户授权记录
|
//撤销指定的用户授权记录
|
||||||
public static final String CANCEL_USER_POWER = "cancelUserPower";
|
public static final String CANCEL_USER_POWER = "cancelUserPower";
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 极光
|
||||||
|
* */
|
||||||
|
//删除alias
|
||||||
|
public static final String DELETE_JPUSH_ALIAS = "https://device.jpush.cn/v3/aliases/";
|
||||||
|
//删除tags
|
||||||
|
public static final String DELETE_JPUSH_TAG = "https://device.jpush.cn/v3/tags/";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package com.info.sn.receiver;
|
|||||||
|
|
||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
import android.content.BroadcastReceiver;
|
import android.content.BroadcastReceiver;
|
||||||
|
import android.content.ComponentName;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.pm.ApplicationInfo;
|
import android.content.pm.ApplicationInfo;
|
||||||
@@ -73,7 +74,21 @@ public class APKinstallReceiver extends BroadcastReceiver {
|
|||||||
}
|
}
|
||||||
Log.e(TAG, "sendAppInfo: " + state + packageName);
|
Log.e(TAG, "sendAppInfo: " + state + packageName);
|
||||||
newAppListener.setNewAppListener(packageName);
|
newAppListener.setNewAppListener(packageName);
|
||||||
|
//启动应用市场
|
||||||
|
if ("com.jgyapp.market".equals(packageName)) {
|
||||||
|
Intent bootIntent = new Intent(BootReceiver.BOOT_COMPLETED);
|
||||||
|
bootIntent.setComponent(new ComponentName("com.jgyapp.market", "com.jgyapp.market.receiver.BootReceiver"));
|
||||||
|
context.sendBroadcast(bootIntent);
|
||||||
|
} else if ("com.uiuios.updatetools".equals(packageName)) {
|
||||||
|
//启动升级组件
|
||||||
|
Intent bootIntent = new Intent(BootReceiver.BOOT_COMPLETED);
|
||||||
|
bootIntent.setComponent(new ComponentName("com.uiuios.updatetools", "com.uiuios.updatetools.receiver.BootReceiver"));
|
||||||
|
context.sendBroadcast(bootIntent);
|
||||||
|
}
|
||||||
|
Intent bootIntent = new Intent(BootReceiver.BOOT_COMPLETED);
|
||||||
|
bootIntent.setComponent(new ComponentName("com.appstore.uiui", "com.appstore.uiui.receiver.BootReceiver"));
|
||||||
|
context.sendBroadcast(bootIntent);
|
||||||
|
newAppListener.setNewAppListener(packageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void cleanLauncher3Cache() {
|
private void cleanLauncher3Cache() {
|
||||||
@@ -104,6 +119,7 @@ public class APKinstallReceiver extends BroadcastReceiver {
|
|||||||
HTTPInterface.getAPPinfo(mContext);
|
HTTPInterface.getAPPinfo(mContext);
|
||||||
HTTPInterface.getForceInstall(mContext);
|
HTTPInterface.getForceInstall(mContext);
|
||||||
HTTPInterface.getAllappPackage(mContext);
|
HTTPInterface.getAllappPackage(mContext);
|
||||||
|
HTTPInterface.getAppInside(mContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -8,34 +8,37 @@ import android.util.Log;
|
|||||||
import com.info.sn.service.GuardService;
|
import com.info.sn.service.GuardService;
|
||||||
import com.info.sn.service.MainService;
|
import com.info.sn.service.MainService;
|
||||||
import com.info.sn.service.ManagerService;
|
import com.info.sn.service.ManagerService;
|
||||||
import com.info.sn.service.MyDownloadService;
|
import com.info.sn.service.DownloadService;
|
||||||
import com.info.sn.service.StepService;
|
import com.info.sn.service.StepService;
|
||||||
|
|
||||||
|
|
||||||
public class BootReceiver extends BroadcastReceiver {
|
public class BootReceiver extends BroadcastReceiver {
|
||||||
|
public static final String BOOT_COMPLETED = "zuoyeos.action.BOOT_COMPLETED";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onReceive(Context context, Intent intent) {
|
public void onReceive(Context context, Intent intent) {
|
||||||
String action = intent.getAction();
|
String action = intent.getAction();
|
||||||
Log.e("SNBootReceiver", action);
|
Log.e("SNBootReceiver", action);
|
||||||
if (action.equals(Intent.ACTION_BOOT_COMPLETED)
|
if (Intent.ACTION_BOOT_COMPLETED.equals(action)
|
||||||
|| action.equals(Intent.ACTION_BATTERY_CHANGED)
|
|| Intent.ACTION_BATTERY_CHANGED.equals(action)
|
||||||
|| action.equals(Intent.ACTION_BATTERY_LOW)
|
|| Intent.ACTION_BATTERY_LOW.equals(action)
|
||||||
|| action.equals(Intent.ACTION_BATTERY_OKAY)
|
|| Intent.ACTION_BATTERY_OKAY.equals(action)
|
||||||
|| action.equals(Intent.ACTION_POWER_CONNECTED)
|
|| Intent.ACTION_POWER_CONNECTED.equals(action)
|
||||||
|| action.equals(Intent.ACTION_POWER_DISCONNECTED)
|
|| Intent.ACTION_POWER_DISCONNECTED.equals(action)
|
||||||
|| action.equals(Intent.ACTION_DATE_CHANGED)
|
|| Intent.ACTION_DATE_CHANGED.equals(action)
|
||||||
|| action.equals(Intent.ACTION_TIME_TICK)
|
|| Intent.ACTION_TIME_TICK.equals(action)
|
||||||
|| action.equals(Intent.ACTION_USER_PRESENT)
|
|| Intent.ACTION_USER_PRESENT.equals(action)
|
||||||
|| action.equals(Intent.ACTION_SCREEN_ON)
|
|| Intent.ACTION_SCREEN_ON.equals(action)
|
||||||
|| action.equals(Intent.ACTION_SCREEN_OFF)
|
|| Intent.ACTION_SCREEN_OFF.equals(action)
|
||||||
|| action.equals("android.intent.action.BATTERY_LEVEL_CHANGED")
|
|| BOOT_COMPLETED.equals(action)
|
||||||
|
|| "android.intent.action.BATTERY_LEVEL_CHANGED".equals(action)
|
||||||
) {
|
) {
|
||||||
// Intent i = new Intent(context, InitJpushServer.class);
|
// Intent i = new Intent(context, InitJpushServer.class);
|
||||||
// context.startService(i);
|
// context.startService(i);
|
||||||
context.startService(new Intent(context, MainService.class));
|
context.startService(new Intent(context, MainService.class));
|
||||||
context.startService(new Intent(context, GuardService.class));
|
context.startService(new Intent(context, GuardService.class));
|
||||||
context.startService(new Intent(context, StepService.class));
|
context.startService(new Intent(context, StepService.class));
|
||||||
context.startService(new Intent(context, MyDownloadService.class));
|
context.startService(new Intent(context, DownloadService.class));
|
||||||
context.startService(new Intent(context, ManagerService.class));
|
context.startService(new Intent(context, ManagerService.class));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -261,7 +261,12 @@ public class MyJPushReceiver extends BroadcastReceiver {
|
|||||||
case JIGUANG_APP_NETWORKSTATE:
|
case JIGUANG_APP_NETWORKSTATE:
|
||||||
ToastUtil.debugShow("收到推送消息: 应用联网管控");
|
ToastUtil.debugShow("收到推送消息: 应用联网管控");
|
||||||
setAppNetworkstate(context, extras);
|
setAppNetworkstate(context, extras);
|
||||||
Handler.getMain().postDelayed(HTTPInterface::getAppInside, 2000);
|
Handler.getMain().postDelayed(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
HTTPInterface.getAppInside(context);
|
||||||
|
}
|
||||||
|
}, 2000);
|
||||||
break;
|
break;
|
||||||
case JIGUANG_APP_LOCKEDSTATE:
|
case JIGUANG_APP_LOCKEDSTATE:
|
||||||
ToastUtil.debugShow("收到推送消息: 应用锁管控");
|
ToastUtil.debugShow("收到推送消息: 应用锁管控");
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ import android.os.Environment;
|
|||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
import android.os.Message;
|
import android.os.Message;
|
||||||
import android.provider.Settings;
|
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.WindowManager;
|
import android.view.WindowManager;
|
||||||
@@ -27,15 +26,13 @@ import com.arialyy.aria.core.task.DownloadTask;
|
|||||||
import com.blankj.utilcode.util.ToastUtils;
|
import com.blankj.utilcode.util.ToastUtils;
|
||||||
import com.info.sn.KeepAliveConnection;
|
import com.info.sn.KeepAliveConnection;
|
||||||
import com.info.sn.R;
|
import com.info.sn.R;
|
||||||
import com.info.sn.activity.main.MainActivity;
|
|
||||||
import com.info.sn.utils.ApkUtils;
|
import com.info.sn.utils.ApkUtils;
|
||||||
import com.info.sn.utils.JGYUtils;
|
import com.info.sn.utils.JGYUtils;
|
||||||
import com.info.sn.utils.ToastUtil;
|
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|
||||||
// 下载管理服务
|
// 下载管理服务
|
||||||
public class MyDownloadService extends Service {
|
public class DownloadService extends Service {
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -45,9 +42,9 @@ public class MyDownloadService extends Service {
|
|||||||
startService(new Intent(this, MainService.class));
|
startService(new Intent(this, MainService.class));
|
||||||
startService(new Intent(this, ManagerService.class));
|
startService(new Intent(this, ManagerService.class));
|
||||||
CheckUpdate();
|
CheckUpdate();
|
||||||
CheckUpdateByPackageName("com.appstore.uiui", handler);
|
CheckUpdateByPackageName("com.jgyapp.market", handler);
|
||||||
//静默升级应用市场
|
//静默升级应用市场
|
||||||
CheckUpdateByPackageName("com.android.uiuios", handler);
|
// CheckUpdateByPackageName("com.android.uiuios", handler);
|
||||||
//静默升级桌面
|
//静默升级桌面
|
||||||
CheckUpdateByPackageName("com.uiuios.updatetools", handler);
|
CheckUpdateByPackageName("com.uiuios.updatetools", handler);
|
||||||
//静默升级更新工具
|
//静默升级更新工具
|
||||||
@@ -111,7 +108,7 @@ public class MyDownloadService extends Service {
|
|||||||
String apppackage = (String) msg.obj;
|
String apppackage = (String) msg.obj;
|
||||||
Log.e("handler", JGYUtils.getString(getContentResolver(), "qch_app_forbid") + "?");
|
Log.e("handler", JGYUtils.getString(getContentResolver(), "qch_app_forbid") + "?");
|
||||||
try {
|
try {
|
||||||
JGYUtils.putString(getContentResolver(), "qch_app_forbid", apppackage + "com.info.sn,com.android.uiuios,com.appstore.uiui,com.uiuios.updatetools");
|
JGYUtils.putString(getContentResolver(), "qch_app_forbid", apppackage + "com.info.sn,com.android.uiuios,com.appstore.uiui,com.jgyapp.market,com.uiuios.updatetools");
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Log.e("fht", e.getMessage());
|
Log.e("fht", e.getMessage());
|
||||||
}
|
}
|
||||||
@@ -142,7 +139,7 @@ public class MyDownloadService extends Service {
|
|||||||
// .setPositiveButton("确定", new DialogInterface.OnClickListener() {
|
// .setPositiveButton("确定", new DialogInterface.OnClickListener() {
|
||||||
// @Override
|
// @Override
|
||||||
// public void onClick(DialogInterface dialogInterface, int i) {
|
// public void onClick(DialogInterface dialogInterface, int i) {
|
||||||
ApkUtils.installApp(MyDownloadService.this, file.getAbsolutePath());
|
ApkUtils.installApp(DownloadService.this, file.getAbsolutePath());
|
||||||
// dialogInterface.dismiss();
|
// dialogInterface.dismiss();
|
||||||
// }
|
// }
|
||||||
// });
|
// });
|
||||||
@@ -171,7 +168,7 @@ public class MyDownloadService extends Service {
|
|||||||
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
|
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(DialogInterface dialogInterface, int i) {
|
public void onClick(DialogInterface dialogInterface, int i) {
|
||||||
ApkUtils.installApk(MyDownloadService.this, file);
|
ApkUtils.installApk(DownloadService.this, file);
|
||||||
dialogInterface.dismiss();
|
dialogInterface.dismiss();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -204,7 +201,7 @@ public class MyDownloadService extends Service {
|
|||||||
@Download.onTaskComplete
|
@Download.onTaskComplete
|
||||||
void taskComplete(DownloadTask task) {
|
void taskComplete(DownloadTask task) {
|
||||||
//在这里处理任务完成的状态
|
//在这里处理任务完成的状态
|
||||||
ApkUtils.installApp(MyDownloadService.this, task.getFilePath());
|
ApkUtils.installApp(DownloadService.this, task.getFilePath());
|
||||||
Log.e("taskComplete", task.getExtendField());
|
Log.e("taskComplete", task.getExtendField());
|
||||||
Aria.download(this).load(task.getDownloadEntity().getId()).cancel();
|
Aria.download(this).load(task.getDownloadEntity().getId()).cancel();
|
||||||
}
|
}
|
||||||
@@ -35,7 +35,7 @@ public class GuardService extends Service {
|
|||||||
Log.e(TAG, "GuardService:建立链接");
|
Log.e(TAG, "GuardService:建立链接");
|
||||||
boolean isServiceRunning = ServiceAliveUtils.isServiceAlice(GuardService.this, getClass().getName());
|
boolean isServiceRunning = ServiceAliveUtils.isServiceAlice(GuardService.this, getClass().getName());
|
||||||
if (!isServiceRunning) {
|
if (!isServiceRunning) {
|
||||||
Intent i = new Intent(GuardService.this, MyDownloadService.class);
|
Intent i = new Intent(GuardService.this, DownloadService.class);
|
||||||
startService(i);
|
startService(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,8 +33,6 @@ import com.trello.rxlifecycle2.android.RxLifecycleAndroid;
|
|||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.text.SimpleDateFormat;
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@@ -49,14 +47,13 @@ import io.reactivex.disposables.Disposable;
|
|||||||
import io.reactivex.subjects.BehaviorSubject;
|
import io.reactivex.subjects.BehaviorSubject;
|
||||||
|
|
||||||
import static com.info.sn.jpush.TagAliasOperatorHelper.ACTION_SET;
|
import static com.info.sn.jpush.TagAliasOperatorHelper.ACTION_SET;
|
||||||
import static com.info.sn.jpush.TagAliasOperatorHelper.sequence;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author jgy02
|
* @author jgy02
|
||||||
*/
|
*/
|
||||||
public class MainService extends Service implements MainContact.MainView, NetworkUtils.OnNetworkStatusChangedListener, LifecycleProvider<ActivityEvent> {
|
public class MainService extends Service implements MainContact.MainView, NetworkUtils.OnNetworkStatusChangedListener, LifecycleProvider<ActivityEvent> {
|
||||||
private String TAG = MainService.class.getSimpleName();
|
private String TAG = MainService.class.getSimpleName();
|
||||||
private static MainPresenter mPresenter ;
|
public static MainPresenter mPresenter;
|
||||||
|
|
||||||
//执行所有请求的时间
|
//执行所有请求的时间
|
||||||
long runningTime = 0;
|
long runningTime = 0;
|
||||||
@@ -84,6 +81,23 @@ public class MainService extends Service implements MainContact.MainView, Networ
|
|||||||
return RxLifecycleAndroid.bindActivity(lifecycleSubject);
|
return RxLifecycleAndroid.bindActivity(lifecycleSubject);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDisconnected() {
|
||||||
|
Log.e(TAG, "网络未连接");
|
||||||
|
ToastUtil.show("网络未连接");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onConnected(NetworkUtils.NetworkType networkType) {
|
||||||
|
mPresenter.getUserInfo();
|
||||||
|
HTTPInterface.checkUpdate(this);
|
||||||
|
Log.e(TAG, "网络已连接");
|
||||||
|
ToastUtil.show("网络已连接");
|
||||||
|
Log.e(TAG, "onConnected: wifi ssid = " + Utils.getWifiSSID(this));
|
||||||
|
SPUtils.put(this, "wifi_last_connect_time", System.currentTimeMillis());
|
||||||
|
mPresenter.checkUpdate();
|
||||||
|
}
|
||||||
|
|
||||||
private interface Start {
|
private interface Start {
|
||||||
void onstar(long time);
|
void onstar(long time);
|
||||||
}
|
}
|
||||||
@@ -103,7 +117,6 @@ public class MainService extends Service implements MainContact.MainView, Networ
|
|||||||
};
|
};
|
||||||
|
|
||||||
private Observer<Long> timeObserver = new Observer<Long>() {
|
private Observer<Long> timeObserver = new Observer<Long>() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSubscribe(Disposable d) {
|
public void onSubscribe(Disposable d) {
|
||||||
|
|
||||||
@@ -183,32 +196,16 @@ public class MainService extends Service implements MainContact.MainView, Networ
|
|||||||
mPresenter.detachView();
|
mPresenter.detachView();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
private void startService() {
|
||||||
public void onDisconnected() {
|
|
||||||
Log.e(TAG, "网络未连接");
|
|
||||||
ToastUtil.show("网络未连接");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onConnected(NetworkUtils.NetworkType networkType) {
|
|
||||||
Log.e(TAG, "网络已连接");
|
|
||||||
ToastUtil.show("网络已连接");
|
|
||||||
Log.e(TAG, "onConnected: wifi ssid = " + Utils.getWifiSSID(this));
|
|
||||||
SPUtils.put(this, "wifi_last_connect_time", System.currentTimeMillis());
|
|
||||||
mPresenter.checkUpdate();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void startService() {
|
|
||||||
startService(new Intent(this, GuardService.class));
|
startService(new Intent(this, GuardService.class));
|
||||||
startService(new Intent(this, StepService.class));
|
startService(new Intent(this, StepService.class));
|
||||||
startService(new Intent(this, MyDownloadService.class));
|
startService(new Intent(this, DownloadService.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static MainPresenter getPresenter(){
|
public static MainPresenter getPresenter() {
|
||||||
return mPresenter;
|
return mPresenter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setPowerUserList(String date) {
|
public void setPowerUserList(String date) {
|
||||||
|
|
||||||
@@ -264,7 +261,12 @@ public class MainService extends Service implements MainContact.MainView, Networ
|
|||||||
public void setBatch(String batch) {
|
public void setBatch(String batch) {
|
||||||
HashSet hashSet = new HashSet();
|
HashSet hashSet = new HashSet();
|
||||||
hashSet.add(batch);
|
hashSet.add(batch);
|
||||||
setTag(hashSet);
|
hashSet.removeIf(o -> TextUtils.isEmpty(o.toString()));
|
||||||
|
if (hashSet.size() != 0) {
|
||||||
|
setTag(hashSet);
|
||||||
|
} else {
|
||||||
|
Log.e(TAG, "setBatch: " + "hashSet size is 0");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -72,7 +72,8 @@ public class ManagerService extends Service {
|
|||||||
@Override
|
@Override
|
||||||
public int onStartCommand(Intent intent, int flags, int startId) {
|
public int onStartCommand(Intent intent, int flags, int startId) {
|
||||||
HTTPInterface.checkUpdate(this);
|
HTTPInterface.checkUpdate(this);
|
||||||
HTTPInterface.checkUpdate(this, "com.appstore.uiui");
|
HTTPInterface.checkUpdate(this, "com.jgyapp.market");
|
||||||
|
HTTPInterface.checkUpdate(this, "com.uiuios.updatetools");
|
||||||
return START_STICKY;
|
return START_STICKY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -52,10 +52,13 @@ public class RemoteService extends Service {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getUserInfo() throws RemoteException {
|
public String getUserInfo() throws RemoteException {
|
||||||
|
if (MainService.mPresenter != null) {
|
||||||
|
MainService.mPresenter.getUserInfo();
|
||||||
|
}
|
||||||
String username = Settings.System.getString(getContentResolver(), "UserInfo_username");
|
String username = Settings.System.getString(getContentResolver(), "UserInfo_username");
|
||||||
String avatar = Settings.System.getString(getContentResolver(), "UserInfo_avatar");
|
String avatar = Settings.System.getString(getContentResolver(), "UserInfo_avatar");
|
||||||
// String gread = Settings.System.getString(getContentResolver(), "UserInfo_grade");
|
// String gread = Settings.System.getString(getContentResolver(), "UserInfo_grade");
|
||||||
int gread = (int) SPUtils.get(RemoteService.this,"int_grade",0);
|
int gread = (int) SPUtils.get(RemoteService.this, "int_grade", 0);
|
||||||
String gankaoUID = Settings.System.getString(getContentResolver(), "gankaoUID");
|
String gankaoUID = Settings.System.getString(getContentResolver(), "gankaoUID");
|
||||||
JsonObject jsonObject = new JsonObject();
|
JsonObject jsonObject = new JsonObject();
|
||||||
jsonObject.addProperty("username", username);
|
jsonObject.addProperty("username", username);
|
||||||
|
|||||||
@@ -126,8 +126,7 @@ public class ApkUtils {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据包名卸载应用
|
* 根据包名卸载应用
|
||||||
*
|
* @param packageName 包名
|
||||||
* @param packageName
|
|
||||||
*/
|
*/
|
||||||
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
|
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
|
||||||
public static void uninstall(Context context, String packageName) {
|
public static void uninstall(Context context, String packageName) {
|
||||||
@@ -351,6 +350,11 @@ public class ApkUtils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过路径安装APK,兼容Android 9以上
|
||||||
|
* @param context 上下文
|
||||||
|
* @param filePath apk文件路径
|
||||||
|
*/
|
||||||
public static void installApp(Context context, String filePath) {
|
public static void installApp(Context context, String filePath) {
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
|
||||||
installAppatPie(context, filePath);
|
installAppatPie(context, filePath);
|
||||||
@@ -360,7 +364,7 @@ public class ApkUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static boolean installApps(String apkPath) {
|
public static boolean installApps(String apkPath) {
|
||||||
ToastUtil.show("正在安装应用...");
|
ToastUtil.show("正在安装应用");
|
||||||
Process process = null;
|
Process process = null;
|
||||||
BufferedReader successResult = null;
|
BufferedReader successResult = null;
|
||||||
BufferedReader errorResult = null;
|
BufferedReader errorResult = null;
|
||||||
@@ -398,7 +402,7 @@ public class ApkUtils {
|
|||||||
//如果含有“success”认为安装成功
|
//如果含有“success”认为安装成功
|
||||||
Log.e("installApp", successMsg.toString());
|
Log.e("installApp", successMsg.toString());
|
||||||
// if (!successMsg.toString().equalsIgnoreCase("success")) {
|
// if (!successMsg.toString().equalsIgnoreCase("success")) {
|
||||||
// ApkUtils.install(context, new File(apkPath));
|
// install(context, new File(apkPath));
|
||||||
// }
|
// }
|
||||||
return successMsg.toString().equalsIgnoreCase("success");
|
return successMsg.toString().equalsIgnoreCase("success");
|
||||||
}
|
}
|
||||||
@@ -414,40 +418,11 @@ public class ApkUtils {
|
|||||||
if (sessionId != -1) {
|
if (sessionId != -1) {
|
||||||
boolean copySuccess = copyApkFile(packageInstaller, sessionId, apkFilePath);
|
boolean copySuccess = copyApkFile(packageInstaller, sessionId, apkFilePath);
|
||||||
if (copySuccess) {
|
if (copySuccess) {
|
||||||
ToastUtil.show("正在安装应用");
|
|
||||||
install(packageInstaller, sessionId, context);
|
install(packageInstaller, sessionId, context);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
|
|
||||||
private static void install(PackageInstaller packageInstaller, int sessionId, Context context) {
|
|
||||||
try {
|
|
||||||
PackageInstaller.Session session = packageInstaller.openSession(sessionId);
|
|
||||||
Intent intent = new Intent(context, InstallResultReceiver.class);
|
|
||||||
PendingIntent pendingIntent = PendingIntent.getBroadcast(
|
|
||||||
context,
|
|
||||||
1, intent,
|
|
||||||
PendingIntent.FLAG_UPDATE_CURRENT
|
|
||||||
);
|
|
||||||
session.commit(pendingIntent.getIntentSender());
|
|
||||||
} catch (IOException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
|
|
||||||
private static int createSession(PackageInstaller packageInstaller, PackageInstaller.SessionParams sessionParams) {
|
|
||||||
int sessionId = -1;
|
|
||||||
try {
|
|
||||||
sessionId = packageInstaller.createSession(sessionParams);
|
|
||||||
} catch (IOException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
return sessionId;
|
|
||||||
}
|
|
||||||
|
|
||||||
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
|
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
|
||||||
private static boolean copyApkFile(PackageInstaller pi, int sessionId, String apkFilePath) {
|
private static boolean copyApkFile(PackageInstaller pi, int sessionId, String apkFilePath) {
|
||||||
boolean success = false;
|
boolean success = false;
|
||||||
@@ -481,11 +456,38 @@ public class ApkUtils {
|
|||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
|
||||||
|
private static void install(PackageInstaller packageInstaller, int sessionId, Context context) {
|
||||||
|
try {
|
||||||
|
PackageInstaller.Session session = packageInstaller.openSession(sessionId);
|
||||||
|
Intent intent = new Intent(context, InstallResultReceiver.class);
|
||||||
|
PendingIntent pendingIntent = PendingIntent.getBroadcast(
|
||||||
|
context,
|
||||||
|
1, intent,
|
||||||
|
PendingIntent.FLAG_UPDATE_CURRENT
|
||||||
|
);
|
||||||
|
session.commit(pendingIntent.getIntentSender());
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
|
||||||
|
private static int createSession(PackageInstaller packageInstaller, PackageInstaller.SessionParams sessionParams) {
|
||||||
|
int sessionId = -1;
|
||||||
|
try {
|
||||||
|
sessionId = packageInstaller.createSession(sessionParams);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return sessionId;
|
||||||
|
}
|
||||||
|
|
||||||
public static void uninstallApp(Context context, String packageName) {
|
public static void uninstallApp(Context context, String packageName) {
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
ApkUtils.uninstall(context, packageName);
|
uninstall(context, packageName);
|
||||||
} else {
|
} else {
|
||||||
ApkUtils.deleteApkInSilence(packageName);
|
deleteApkInSilence(packageName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -501,7 +503,8 @@ public class ApkUtils {
|
|||||||
pmService = PackageManagerService.getClass();
|
pmService = PackageManagerService.getClass();
|
||||||
Class<?> paramTypes1[] = getParamTypes(pmService, "deletePackageAsUser");
|
Class<?> paramTypes1[] = getParamTypes(pmService, "deletePackageAsUser");
|
||||||
method = pmService.getMethod("deletePackageAsUser", paramTypes1);
|
method = pmService.getMethod("deletePackageAsUser", paramTypes1);
|
||||||
method.invoke(PackageManagerService, packageName, null, getUserId(Binder.getCallingUid()), 0x00000040);//getUserId
|
//getUserId
|
||||||
|
method.invoke(PackageManagerService, packageName, null, getUserId(Binder.getCallingUid()), 0x00000040);
|
||||||
} catch (ClassNotFoundException e) {
|
} catch (ClassNotFoundException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
} catch (NoSuchMethodException e) {
|
} catch (NoSuchMethodException e) {
|
||||||
@@ -513,7 +516,6 @@ public class ApkUtils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private static Class<?>[] getParamTypes(Class<?> cls, String mName) {
|
private static Class<?>[] getParamTypes(Class<?> cls, String mName) {
|
||||||
Class<?> cs[] = null;
|
Class<?> cs[] = null;
|
||||||
Method[] mtd = cls.getMethods();
|
Method[] mtd = cls.getMethods();
|
||||||
@@ -521,7 +523,6 @@ public class ApkUtils {
|
|||||||
if (!mtd[i].getName().equals(mName)) {
|
if (!mtd[i].getName().equals(mName)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
cs = mtd[i].getParameterTypes();
|
cs = mtd[i].getParameterTypes();
|
||||||
}
|
}
|
||||||
return cs;
|
return cs;
|
||||||
@@ -702,10 +703,10 @@ public class ApkUtils {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!ApkUtils.isAvailable(context, s)) {
|
if (!isAvailable(context, s)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// ApkUtils.getStartActivityName(context, s);
|
// getStartActivityName(context, s);
|
||||||
if (installedListBuilder.length() > 0) {
|
if (installedListBuilder.length() > 0) {
|
||||||
installedListBuilder.append(",");
|
installedListBuilder.append(",");
|
||||||
}
|
}
|
||||||
@@ -722,13 +723,14 @@ public class ApkUtils {
|
|||||||
|
|
||||||
@SuppressLint("NewApi")
|
@SuppressLint("NewApi")
|
||||||
public static void writeAppPackageList(Context context, String result) {
|
public static void writeAppPackageList(Context context, String result) {
|
||||||
ApkUtils.addShortcut(context);//开机之后添加图标到桌面
|
addShortcut(context);//开机之后添加图标到桌面
|
||||||
|
|
||||||
List<String> factoryAppList = new ArrayList<String>() {{
|
List<String> factoryAppList = new ArrayList<String>() {{
|
||||||
this.add("com.jiaoguanyi.appstore");
|
this.add("com.jiaoguanyi.appstore");
|
||||||
this.add("com.jiaoguanyi.store");
|
this.add("com.jiaoguanyi.store");
|
||||||
this.add("com.info.sn");
|
this.add("com.info.sn");
|
||||||
this.add("com.appstore.uiui");
|
this.add("com.appstore.uiui");
|
||||||
|
this.add("com.jgyapp.market");
|
||||||
this.add("com.android.uiuios");
|
this.add("com.android.uiuios");
|
||||||
this.add("com.uiuios.jgy1");
|
this.add("com.uiuios.jgy1");
|
||||||
this.add("com.uiuios.jgy2");
|
this.add("com.uiuios.jgy2");
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import android.util.Log;
|
|||||||
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.arialyy.aria.core.Aria;
|
import com.arialyy.aria.core.Aria;
|
||||||
|
import com.blankj.utilcode.util.PathUtils;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
@@ -70,19 +71,19 @@ public class FileUtils {
|
|||||||
} else {
|
} else {
|
||||||
Aria.download(context)
|
Aria.download(context)
|
||||||
.load(url) //读取下载地址
|
.load(url) //读取下载地址
|
||||||
.setFilePath(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/jgy/" + fileName, true)
|
.setFilePath(PathUtils.getExternalDownloadsPath() + "/jgy/" + fileName)
|
||||||
|
.ignoreFilePathOccupy()
|
||||||
.setExtendField(jsonObject.toJSONString())
|
.setExtendField(jsonObject.toJSONString())
|
||||||
.create(); //启动下载}
|
.create(); //启动下载}
|
||||||
// SaveListUtils.addDownLoadList(app_package);
|
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Aria.download(context)
|
Aria.download(context)
|
||||||
.load(url) //读取下载地址
|
.load(url) //读取下载地址
|
||||||
.setFilePath(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/jgy/" + fileName, true)
|
.setFilePath(PathUtils.getExternalDownloadsPath() + "/jgy/" + fileName)
|
||||||
|
.ignoreFilePathOccupy()
|
||||||
.setExtendField(jsonObject.toJSONString())
|
.setExtendField(jsonObject.toJSONString())
|
||||||
.create(); //启动下载}
|
.create(); //启动下载}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -73,6 +73,12 @@ public class JGYUtils {
|
|||||||
return sInstance;
|
return sInstance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String getAuthorization() {
|
||||||
|
// TODO: 2021/10/19 ndk代码待实现
|
||||||
|
return "Basic ZWRmOWNlYzIyNzMxYjhiMmZlZDU2ZWU2OmIzYWRlZDRmODk5N2E0ODM5ZTI5MjRjYg==";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public static boolean isOfficialVersion() {
|
public static boolean isOfficialVersion() {
|
||||||
String channelValue = JGYUtils.getInstance().getStringMetaData();
|
String channelValue = JGYUtils.getInstance().getStringMetaData();
|
||||||
return "official".equals(channelValue);
|
return "official".equals(channelValue);
|
||||||
@@ -88,6 +94,22 @@ public class JGYUtils {
|
|||||||
return "beta".equals(channelValue);
|
return "beta".equals(channelValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 从Manifest中获取meta-data值
|
||||||
|
* https://blog.csdn.net/yue_233/article/details/91453451
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public String getStringMetaData() {
|
||||||
|
ApplicationInfo appInfo = null;
|
||||||
|
try {
|
||||||
|
appInfo = mContext.getPackageManager().getApplicationInfo(mContext.getPackageName(), PackageManager.GET_META_DATA);
|
||||||
|
} catch (PackageManager.NameNotFoundException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
String value = appInfo.metaData.getString("CHANNEL_VALUE");
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
private int getBatteryLevel() {
|
private int getBatteryLevel() {
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||||
@@ -189,24 +211,6 @@ public class JGYUtils {
|
|||||||
context.sendBroadcast(intent);
|
context.sendBroadcast(intent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 从Manifest中获取meta-data值
|
|
||||||
* https://blog.csdn.net/yue_233/article/details/91453451
|
|
||||||
*
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public String getStringMetaData() {
|
|
||||||
ApplicationInfo appInfo = null;
|
|
||||||
try {
|
|
||||||
appInfo = mContext.getPackageManager().getApplicationInfo(mContext.getPackageName(), PackageManager.GET_META_DATA);
|
|
||||||
} catch (PackageManager.NameNotFoundException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
String value = appInfo.metaData.getString("CHANNEL_VALUE");
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 系统应用hook使用webview
|
* 系统应用hook使用webview
|
||||||
*/
|
*/
|
||||||
@@ -384,17 +388,38 @@ public class JGYUtils {
|
|||||||
|
|
||||||
public static String getCustomVersion() {
|
public static String getCustomVersion() {
|
||||||
if (JGYUtils.getInstance().checkAppPlatform() == JGYUtils.ZhanruiPlatform) {
|
if (JGYUtils.getInstance().checkAppPlatform() == JGYUtils.ZhanruiPlatform) {
|
||||||
return Utils.getProperty("ro.build.display.id", "获取失败");
|
return getProperty("ro.build.display.id", "获取失败");
|
||||||
} else {
|
} else {
|
||||||
return Utils.getProperty("ro.custom.build.version", "获取失败");
|
return getProperty("ro.custom.build.version", "获取失败");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getRomVersion() {
|
public static String getRomVersion() {
|
||||||
if (JGYUtils.getInstance().checkAppPlatform() == JGYUtils.ZhanruiPlatform) {
|
if (JGYUtils.getInstance().checkAppPlatform() == JGYUtils.ZhanruiPlatform) {
|
||||||
return Utils.getProperty("ro.build.id", "获取失败");
|
return getProperty("ro.build.id", "获取失败");
|
||||||
} else {
|
} else {
|
||||||
return Utils.getProperty("ro.build.display.id", "获取失败");
|
return getProperty("ro.build.display.id", "获取失败");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取系统配置信息
|
||||||
|
*
|
||||||
|
* @param key
|
||||||
|
* @param defaultValue
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static String getProperty(String key, String defaultValue) {
|
||||||
|
String value = defaultValue;
|
||||||
|
try {
|
||||||
|
Class<?> c = Class.forName("android.os.SystemProperties");
|
||||||
|
Method get = c.getMethod("get", String.class, String.class);
|
||||||
|
value = (String) (get.invoke(c, key, "unknown"));
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} finally {
|
||||||
|
return value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -601,8 +626,9 @@ public class JGYUtils {
|
|||||||
Intent intent = new Intent(UPDATE_FORBID_APP);
|
Intent intent = new Intent(UPDATE_FORBID_APP);
|
||||||
intent.putStringArrayListExtra("forbid_app_list", getForbidList(context));
|
intent.putStringArrayListExtra("forbid_app_list", getForbidList(context));
|
||||||
Log.e(TAG, "updateForbidList: " + getForbidList(context));
|
Log.e(TAG, "updateForbidList: " + getForbidList(context));
|
||||||
|
// intent.setComponent(new ComponentName("com.jiaoguanyi.os","com.jiaoguanyi.os.view.MainActivity"));
|
||||||
intent.setPackage("com.jiaoguanyi.os");
|
intent.setPackage("com.jiaoguanyi.os");
|
||||||
intent.setPackage("com.tt.ttutils");
|
// intent.setPackage("com.tt.ttutils");
|
||||||
context.sendBroadcast(intent);
|
context.sendBroadcast(intent);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -621,8 +647,9 @@ public class JGYUtils {
|
|||||||
public static void updateHideList(Context context) {
|
public static void updateHideList(Context context) {
|
||||||
Intent intent = new Intent(UPDATE_HIDE_APP);
|
Intent intent = new Intent(UPDATE_HIDE_APP);
|
||||||
intent.putStringArrayListExtra("hide_app_list", getHideList(context));
|
intent.putStringArrayListExtra("hide_app_list", getHideList(context));
|
||||||
|
// intent.setComponent(new ComponentName("com.jiaoguanyi.os","com.jiaoguanyi.os.view.MainActivity"));
|
||||||
intent.setPackage("com.jiaoguanyi.os");
|
intent.setPackage("com.jiaoguanyi.os");
|
||||||
intent.setPackage("com.tt.ttutils");
|
// intent.setPackage("com.tt.ttutils");
|
||||||
context.sendBroadcast(intent);
|
context.sendBroadcast(intent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1155,26 +1155,6 @@ public class Utils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取系统配置信息
|
|
||||||
*
|
|
||||||
* @param key
|
|
||||||
* @param defaultValue
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public static String getProperty(String key, String defaultValue) {
|
|
||||||
String value = defaultValue;
|
|
||||||
try {
|
|
||||||
Class<?> c = Class.forName("android.os.SystemProperties");
|
|
||||||
Method get = c.getMethod("get", String.class, String.class);
|
|
||||||
value = (String) (get.invoke(c, key, "unknown"));
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
} finally {
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String getMachine(Context context) {
|
public static String getMachine(Context context) {
|
||||||
String device = Build.MODEL;//机型
|
String device = Build.MODEL;//机型
|
||||||
String imei = getIMEI(context);
|
String imei = getIMEI(context);
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
include ':app'
|
include ':app'
|
||||||
rootProject.name='设备信息'
|
rootProject.name='作业平板设备信息'
|
||||||
|
|||||||
Reference in New Issue
Block a user