Compare commits
144 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| b8a5454a0d | |||
| 1dd810dcfe | |||
| 6797c7a6bd | |||
| eea2af875b | |||
| 06513441bd | |||
| 64620b4778 | |||
| a03e8b8613 | |||
| 81e4f050ca | |||
| 2e2eae508a | |||
| c6232709e1 | |||
| a2ad1c705f | |||
| d041a3b1c8 | |||
| 589ab073b8 | |||
| dc1b129039 | |||
| eb73796554 | |||
| 60dab59ef8 | |||
| 3056267c4e | |||
| 0e9f0e8394 | |||
| 7599d14897 | |||
| 8716bf0e36 | |||
| 816753a500 | |||
| c360344acc | |||
| c6bec5cd43 | |||
| 84e3fa87fa | |||
| 6068bd4bb3 | |||
| 343700837e | |||
| 526914c64c | |||
| 08fd02bf93 | |||
| 7a07105d15 | |||
| 2f8a9e6f07 | |||
| 367832516f | |||
| 58c36173fd | |||
| d62722452c | |||
| 004de0cc2e | |||
| 08f5867864 | |||
| ba91b973e7 | |||
| 124696a9dd | |||
| 367c8e333c | |||
| 6d8e4509f0 | |||
| 913270821c | |||
| 1bf394241c | |||
| a7af7cf2a8 | |||
| 2122454ac3 | |||
| 6de0c1f016 | |||
| 183cde2afb | |||
| 129f47f9f0 | |||
| a069f5c848 | |||
| af14f02fba | |||
| 51a125ce3f | |||
| 03901123da | |||
| 8c948e62be | |||
| 539203e818 | |||
| c7046475da | |||
| e5cdbc2ecc | |||
| 93f87d3b68 | |||
| 4371ae3059 | |||
| 4f6a6cff93 | |||
| 8d0579a0f5 | |||
| 5da1be5d70 | |||
| a92fb6b8e0 | |||
| 2db37bdfa4 | |||
| 5875eff3c6 | |||
| 26075a1486 | |||
| 99a8038e41 | |||
| 7c9f21ed73 | |||
| a8c0e5b9bc | |||
| 275b7693fc | |||
| 66787bb6a7 | |||
| 5edeeb6fd4 | |||
| 19c9dfc2fc | |||
| 1cbb3c8c65 | |||
| 45ce0fc8ee | |||
| 5b49f1370f | |||
| 6ab5e00948 | |||
| b069c7a0eb | |||
| 90e18aec0e | |||
| f0655a2919 | |||
| 006b80f8d4 | |||
| 06dd8b053a | |||
| c9a5105e3e | |||
| cdaaaaed91 | |||
| b917401e86 | |||
| 83159cc584 | |||
| 8ac2a6503f | |||
| b01f101613 | |||
| 14fd58b82f | |||
| 1b83a79957 | |||
| 5b335c3029 | |||
| 7ac975f4cc | |||
| 2bf051b8c1 | |||
| 5c821df549 | |||
| 7a1a4fe5a5 | |||
| 11bad35331 | |||
| 5b567c55b1 | |||
| 53dd43030e | |||
| 8a609a0556 | |||
| caa8608f52 | |||
| 69a8934bd4 | |||
| 2339e1484d | |||
| 0a75344b61 | |||
| 297f33bf2d | |||
| 0cb21ceadc | |||
| f2cc0aea30 | |||
| 683f31087f | |||
| 62de0cac3f | |||
| 8d9fd57152 | |||
| 3ef0e56a08 | |||
|
|
5aac5e802b | ||
| f2b312c477 | |||
| 6efcba2829 | |||
| ee731661fc | |||
| 97bc5d6a75 | |||
| ecd683440a | |||
| 3c45ccc7b1 | |||
| 7d50cb709b | |||
| 7e37ab1104 | |||
| 2230ea5161 | |||
| 1d9abfc90e | |||
| 61ef0d7bfa | |||
| edf23945b5 | |||
| a432526311 | |||
| c9e72d00fb | |||
| 7c3a035ca6 | |||
| 5f3b3f51a0 | |||
| 34fa9fcdb7 | |||
| 768519e14e | |||
| a4c68f0b37 | |||
| 3018660216 | |||
| 13707fc96a | |||
| 0c1e0a094a | |||
| 588d815d7f | |||
| 827a3e0ee7 | |||
| 9963b276f6 | |||
| 35e2df454f | |||
| 0c27e60b29 | |||
| a318e07db9 | |||
| addda19fd5 | |||
| 92294fe180 | |||
| e38530fd81 | |||
| 89d4edd7c9 | |||
| 3a21c341d6 | |||
| 8990d9045f | |||
| 7511d944f2 | |||
| 26ab77e885 |
44
app/CMakeLists.txt
Normal file
44
app/CMakeLists.txt
Normal file
@@ -0,0 +1,44 @@
|
||||
# For more information about using CMake with Android Studio, read the
|
||||
# documentation: https://d.android.com/studio/projects/add-native-code.html
|
||||
|
||||
# Sets the minimum version of CMake required to build the native library.
|
||||
|
||||
cmake_minimum_required(VERSION 3.4.1)
|
||||
|
||||
# Creates and names a library, sets it as either STATIC
|
||||
# or SHARED, and provides the relative paths to its source code.
|
||||
# You can define multiple libraries, and CMake builds them for you.
|
||||
# Gradle automatically packages shared libraries with your APK.
|
||||
|
||||
add_library( # Sets the name of the library.
|
||||
jgy
|
||||
|
||||
# Sets the library as a shared library.
|
||||
SHARED
|
||||
|
||||
# Provides a relative path to your source file(s).
|
||||
src/main/jni/jgy.cpp )
|
||||
|
||||
# Searches for a specified prebuilt library and stores the path as a
|
||||
# variable. Because CMake includes system libraries in the search path by
|
||||
# default, you only need to specify the name of the public NDK library
|
||||
# you want to add. CMake verifies that the library exists before
|
||||
# completing its build.
|
||||
|
||||
find_library( # Sets the name of the path variable.
|
||||
log-lib
|
||||
|
||||
# Specifies the name of the NDK library that
|
||||
# you want CMake to locate.
|
||||
log )
|
||||
|
||||
# Specifies libraries CMake should link to your target library. You
|
||||
# can link multiple libraries, such as libraries you define in this
|
||||
# build script, prebuilt third-party libraries, or system libraries.
|
||||
|
||||
target_link_libraries( # Specifies the target library.
|
||||
jgy
|
||||
|
||||
# Links the target library to the log library
|
||||
# included in the NDK.
|
||||
${log-lib} )
|
||||
838
app/build.gradle
838
app/build.gradle
@@ -1,34 +1,65 @@
|
||||
apply plugin: 'com.android.application'
|
||||
|
||||
def appName() {
|
||||
return "DeviceInfo"
|
||||
static def appName() {
|
||||
return "AoleyunDeviceInfo"
|
||||
}
|
||||
|
||||
def releaseTime() {
|
||||
return new Date().format("yyyyMMdd", TimeZone.getDefault())
|
||||
static def releaseTime() {
|
||||
return new Date().format("yyyyMMdd_HHmmss", TimeZone.getDefault())
|
||||
}
|
||||
|
||||
android {
|
||||
//Android Studio 4.0 之后使用这个,但是会把jar打包进apk
|
||||
// gradle.projectsEvaluated {
|
||||
// tasks.withType(JavaCompile) {
|
||||
// Set<File> fileSet = options.bootstrapClasspath.getFiles()
|
||||
// List<File> newFileList = new ArrayList<>();
|
||||
// //JAVA语法,可连续调用,输入参数建议为相对路径
|
||||
// newFileList.add(new File("libs/framework.jar"))
|
||||
// //最后将原始参数添加
|
||||
// newFileList.addAll(fileSet)
|
||||
// options.bootstrapClasspath = files(
|
||||
// newFileList.toArray()
|
||||
// )
|
||||
// }
|
||||
// }
|
||||
|
||||
compileSdkVersion 29
|
||||
buildToolsVersion "30.0.3"
|
||||
|
||||
defaultConfig {
|
||||
applicationId "com.jiaoguanyi.appstore"
|
||||
applicationId "com.aoleyun.sn"
|
||||
versionCode 206
|
||||
versionName "1.6.0226"
|
||||
|
||||
//There are no CERT files because If the mini sdk version is 23+, the AGP will ignore the V1 scheme signature.
|
||||
minSdkVersion 24
|
||||
targetSdkVersion 29
|
||||
|
||||
multiDexEnabled true
|
||||
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
packagingOptions {
|
||||
exclude 'META-INF/rxjava.properties'
|
||||
|
||||
ndk {
|
||||
//选择要添加的对应 cpu 类型的 .so 库。
|
||||
abiFilters 'arm64-v8a'
|
||||
// 还可以添加 'armeabi', 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64', 'mips', 'mips64'
|
||||
}
|
||||
|
||||
buildConfigField "String", "ROOT_URL", '"https://led.aoleyun.cn/api/"'
|
||||
buildConfigField "String", "SCREEN_BASE_URL", '"https://led.aoleyun.cn:2018/"'
|
||||
buildConfigField "String", "SCREEN_URL", '"https://led.aoleyun.cn:2018/wm/is_online"'
|
||||
buildConfigField "String", "WEBSOCKET_URL", '"wss://led.aoleyun.cn/wss/"'
|
||||
|
||||
}
|
||||
|
||||
lintOptions {
|
||||
checkReleaseBuilds false
|
||||
// Or, if you prefer, you can continue to check for errors in release builds,
|
||||
// but continue the build even when errors are found:
|
||||
abortOnError false
|
||||
}
|
||||
|
||||
dexOptions {
|
||||
jumboMode true
|
||||
dataBinding {
|
||||
enabled true
|
||||
}
|
||||
|
||||
compileOptions {
|
||||
@@ -36,88 +67,29 @@ android {
|
||||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
}
|
||||
|
||||
//多版本
|
||||
productFlavors {
|
||||
//新平台正式
|
||||
newly {
|
||||
flavorDimensions "default"
|
||||
versionCode 512
|
||||
//versionCode 1037
|
||||
versionName "2.1.2"
|
||||
/*********************************极光推送************************************/
|
||||
manifestPlaceholders = [
|
||||
JPUSH_PKGNAME: "com.jiaoguanyi.appstore",
|
||||
JPUSH_APPKEY : "20f70bbeb78bad23eddd08d0", //JPush上注册的包名对应的appkey.
|
||||
JPUSH_CHANNEL: "developer-default", //暂时填写默认值即可.
|
||||
channel_value: "newly" ,
|
||||
// AMAP_KEY: "546eb5646a65ac6a5b7d1c7456466e05"
|
||||
]
|
||||
/*********************************极光推送end************************************/
|
||||
buildConfigField "String", "ROOT_URL", '"http://name.jiaoguanyi.cn/api/"'
|
||||
buildConfigField "String", "WebsocketURL", '"ws://47.119.147.245:2345"'
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
path file('CMakeLists.txt')
|
||||
}
|
||||
|
||||
//新平台测试
|
||||
beta {
|
||||
flavorDimensions "default"
|
||||
versionCode 174
|
||||
versionName "1.7.4"
|
||||
/*********************************极光推送************************************/
|
||||
manifestPlaceholders = [
|
||||
JPUSH_PKGNAME: "com.jiaoguanyi.appstore",
|
||||
JPUSH_APPKEY : "52d81643665bb2cadacf0e9e", //JPush上注册的包名对应的appkey.
|
||||
JPUSH_CHANNEL: "developer-default", //暂时填写默认值即可.
|
||||
channel_value: "beta" ,
|
||||
// AMAP_KEY: "5b68c8ee39800ff700a3762b6e028b78"
|
||||
]
|
||||
/*********************************极光推送end************************************/
|
||||
buildConfigField "String", "ROOT_URL", '"http://name.uiuios.com/api/"'
|
||||
buildConfigField "String", "WebsocketURL", '"ws://39.108.116.195:2345"'
|
||||
}
|
||||
|
||||
// //老平台正式
|
||||
// official {
|
||||
// flavorDimensions "default"
|
||||
// versionCode 1039
|
||||
// versionName "2.0.3.9"
|
||||
// /*********************************极光推送************************************/
|
||||
// manifestPlaceholders = [
|
||||
// JPUSH_PKGNAME: "com.jiaoguanyi.appstore",
|
||||
// JPUSH_APPKEY : "20f70bbeb78bad23eddd08d0", //JPush上注册的包名对应的appkey.
|
||||
// JPUSH_CHANNEL: "developer-default", //暂时填写默认值即可.
|
||||
// channel_value: "official",
|
||||
// AMAP_KEY: "5b68c8ee39800ff700a3762b6e028b78"
|
||||
// ]
|
||||
// /*********************************极光推送end************************************/
|
||||
// buildConfigField "String", "ROOT_URL", '"http://partner.jiaoguanyi.com/api/"'
|
||||
// buildConfigField "String", "WebsocketURL", '"ws://47.107.133.19:1234"'
|
||||
// }
|
||||
//
|
||||
// //中优
|
||||
// zhongyou {
|
||||
// flavorDimensions "default"
|
||||
// versionCode 1
|
||||
// versionName "1.0"//测试jiaoguanyi.cn
|
||||
// /*********************************极光推送************************************/
|
||||
// manifestPlaceholders = [
|
||||
// JPUSH_PKGNAME: "com.jiaoguanyi.appstore",
|
||||
// JPUSH_APPKEY : "a98c8a210687b4bb43c39c39", //JPush上注册的包名对应的appkey.
|
||||
// JPUSH_CHANNEL: "developer-default", //暂时填写默认值即可.
|
||||
// channel_value: "zhongyou" ,
|
||||
// AMAP_KEY: "5b68c8ee39800ff700a3762b6e028b78"
|
||||
// ]
|
||||
// /*********************************极光推送end************************************/
|
||||
// buildConfigField "String", "ROOT_URL", '"https://jgy.jundunxueyuan.com/api/"'
|
||||
// buildConfigField "String", "WebsocketURL", '"ws://39.98.59.202:2345"'
|
||||
// }
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
//测试版的图标
|
||||
beta.res.srcDirs = ['src/beta/res']
|
||||
// beta.res.srcDirs = ['src/beta/res']
|
||||
// newly.res.srcDirs = ['src/beta/res']
|
||||
|
||||
main {
|
||||
jniLibs.srcDir 'src/main/jniLibs'
|
||||
}
|
||||
}
|
||||
|
||||
// Disable release builds for now
|
||||
android.variantFilter { variant ->
|
||||
// // Icon recents is Go only
|
||||
// if (name.contains("WithQuickstepIconRecents") && !name.contains("l3go")) {
|
||||
// variant.setIgnore(true)
|
||||
// }
|
||||
}
|
||||
|
||||
//签名
|
||||
signingConfigs {
|
||||
@@ -127,162 +99,689 @@ android {
|
||||
keyAlias "zhanxun"
|
||||
keyPassword "123456"
|
||||
v1SigningEnabled true
|
||||
v2SigningEnabled true
|
||||
v2SigningEnabled false
|
||||
}
|
||||
|
||||
debug {
|
||||
storeFile file("keystore/xueshibaoos.jks")
|
||||
zhanRuiUserdebug {
|
||||
storeFile file("keystore/zhanxunUserdebug.keystore")
|
||||
storePassword "123456"
|
||||
keyAlias "xueshibaoos"
|
||||
keyPassword "123456"
|
||||
v1SigningEnabled true
|
||||
v2SigningEnabled true
|
||||
}
|
||||
|
||||
release {
|
||||
storeFile file("keystore/xueshibaoos.jks")
|
||||
storePassword "123456"
|
||||
keyAlias "xueshibaoos"
|
||||
keyAlias "zhanxunUserdebug"
|
||||
keyPassword "123456"
|
||||
v1SigningEnabled true
|
||||
v2SigningEnabled false
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Disable release builds for now
|
||||
android.variantFilter { variant ->
|
||||
if (variant.buildType.name.endsWith('zhanRuiRelease')) {
|
||||
variant.setIgnore(variant.getFlavors().get(0).name.equals('official')||variant.getFlavors().get(0).name.equals('zhongyou'))
|
||||
zhanRui12 {
|
||||
storeFile file("keystore/zhanrui12.jks")
|
||||
storePassword "123456"
|
||||
keyAlias "zhanrui12"
|
||||
keyPassword "123456"
|
||||
v1SigningEnabled true
|
||||
v2SigningEnabled false
|
||||
}
|
||||
|
||||
if (variant.buildType.name.endsWith('zhanRuiDebug')) {
|
||||
variant.setIgnore(variant.getFlavors().get(0).name.equals('official')||variant.getFlavors().get(0).name.equals('zhongyou'))
|
||||
mtk {
|
||||
storeFile file("keystore/xueshibaoos.jks")
|
||||
storePassword "123456"
|
||||
keyAlias "xueshibaoos"
|
||||
keyPassword "123456"
|
||||
v1SigningEnabled true
|
||||
v2SigningEnabled true
|
||||
}
|
||||
|
||||
G10P {
|
||||
storeFile file("keystore/G10PMTK11.jks")
|
||||
storePassword "123456"
|
||||
keyAlias "G10PMTK11"
|
||||
keyPassword "123456"
|
||||
v1SigningEnabled true
|
||||
v2SigningEnabled true
|
||||
}
|
||||
|
||||
G11Userdebug {
|
||||
storeFile file("keystore/G11Userdebug.keystore")
|
||||
storePassword "123456"
|
||||
keyAlias "G11Userdebug"
|
||||
keyPassword "123456"
|
||||
v1SigningEnabled true
|
||||
v2SigningEnabled true
|
||||
}
|
||||
|
||||
G10PUserDebug {
|
||||
storeFile file("keystore/G10PUserDebug.jks")
|
||||
storePassword "123456"
|
||||
keyAlias "G10PUserDebug"
|
||||
keyPassword "123456"
|
||||
v1SigningEnabled true
|
||||
v2SigningEnabled true
|
||||
}
|
||||
|
||||
zhanruiG10Z {
|
||||
storeFile file("keystore/zhanruiG10Z.keystore")
|
||||
storePassword "123456"
|
||||
keyAlias "zhanruiG10Z"
|
||||
keyPassword "123456"
|
||||
v1SigningEnabled true
|
||||
v2SigningEnabled true
|
||||
}
|
||||
|
||||
G10ZUserDebug {
|
||||
storeFile file("keystore/G10zUserDebug.keystore")
|
||||
storePassword "123456"
|
||||
keyAlias "G10zUserDebug"
|
||||
keyPassword "123456"
|
||||
v1SigningEnabled true
|
||||
v2SigningEnabled true
|
||||
}
|
||||
|
||||
mtk12 {
|
||||
storeFile file("keystore/mtkAndroid12.keystore")
|
||||
storePassword "123456"
|
||||
keyAlias "mtk12"
|
||||
keyPassword "123456"
|
||||
v1SigningEnabled true
|
||||
v2SigningEnabled true
|
||||
}
|
||||
|
||||
P20S {
|
||||
storeFile file("keystore/MTKP20S.keystore")
|
||||
storePassword "123456"
|
||||
keyAlias "MTKP20S"
|
||||
keyPassword "123456"
|
||||
v2SigningEnabled false
|
||||
}
|
||||
|
||||
//iPlay50 mini,iPlay50 android13 共用签名
|
||||
iPlay50mini {
|
||||
storeFile file("keystore/iPlay50Mini.keystore")
|
||||
storePassword "android"
|
||||
keyAlias "platform"
|
||||
keyPassword "android"
|
||||
v2SigningEnabled false
|
||||
}
|
||||
|
||||
teclast8183 {
|
||||
storeFile file("keystore/TeclastMTK12.jks")
|
||||
storePassword "123456"
|
||||
keyAlias "TeclastMTK12"
|
||||
keyPassword "123456"
|
||||
v2SigningEnabled false
|
||||
}
|
||||
|
||||
Huaruian8768 {
|
||||
storeFile file("keystore/Huaruian8768.jks")
|
||||
storePassword "123456"
|
||||
keyAlias "Huaruian8768"
|
||||
keyPassword "123456"
|
||||
v1SigningEnabled true
|
||||
v2SigningEnabled true
|
||||
}
|
||||
|
||||
T40Air {
|
||||
storeFile file("keystore/T40Air.jks")
|
||||
storePassword "123456"
|
||||
keyAlias "T40Air"
|
||||
keyPassword "123456"
|
||||
v1SigningEnabled true
|
||||
v2SigningEnabled true
|
||||
}
|
||||
|
||||
P50 {
|
||||
storeFile file("keystore/P50TD.jks")
|
||||
storePassword "123456"
|
||||
keyAlias "P50TD"
|
||||
keyPassword "123456"
|
||||
v1SigningEnabled true
|
||||
v2SigningEnabled true
|
||||
}
|
||||
|
||||
seewo {
|
||||
storeFile file("keystore/aiud.keystore")
|
||||
storePassword "s4HdJuphaiHhU7WY"
|
||||
keyAlias "androidreleasekey"
|
||||
keyPassword "JwUw2oV16rUjWLBC"
|
||||
v1SigningEnabled true
|
||||
v2SigningEnabled true
|
||||
}
|
||||
|
||||
iPlay50miniPro {
|
||||
storeFile file("keystore/iPlay50miniPro.jks")
|
||||
storePassword "123456"
|
||||
keyAlias "iplay50minipro"
|
||||
keyPassword "123456"
|
||||
v1SigningEnabled true
|
||||
v2SigningEnabled true
|
||||
}
|
||||
|
||||
U1302 {
|
||||
storeFile file("keystore/U1302.keystore")
|
||||
storePassword "123456"
|
||||
keyAlias "u1302"
|
||||
keyPassword "123456"
|
||||
v1SigningEnabled true
|
||||
v2SigningEnabled true
|
||||
}
|
||||
|
||||
MT6765 {
|
||||
storeFile file("keystore/MT6765.keystore")
|
||||
storePassword "123456"
|
||||
keyAlias "mt6765"
|
||||
keyPassword "123456"
|
||||
v1SigningEnabled true
|
||||
v2SigningEnabled true
|
||||
}
|
||||
|
||||
G128T {
|
||||
storeFile file("keystore/HuaruianG128T.jks")
|
||||
storePassword "123456"
|
||||
keyAlias "g128t"
|
||||
keyPassword "123456"
|
||||
v1SigningEnabled true
|
||||
v2SigningEnabled true
|
||||
}
|
||||
// // Icon recents is Go only
|
||||
// if (name.contains("WithQuickstepIconRecents") && !name.contains("l3go")) {
|
||||
// variant.setIgnore(true)
|
||||
// }
|
||||
}
|
||||
|
||||
buildTypes {
|
||||
zhanRuiRelease.initWith(release)
|
||||
zhanRuiRelease {
|
||||
manifestPlaceholders = [
|
||||
AMAP_KEY: "546eb5646a65ac6a5b7d1c7456466e05"
|
||||
]
|
||||
buildConfigField "String", "platform", '"ZhanRui"'
|
||||
signingConfig signingConfigs.zhanRui
|
||||
G128TDebug.initWith(debug)
|
||||
G128TDebug {
|
||||
buildConfigField "String", "platform", '"G128T"'
|
||||
versionNameSuffix "-debug"
|
||||
debuggable true
|
||||
signingConfig signingConfigs.G128T
|
||||
}
|
||||
|
||||
G128TRelease.initWith(release)
|
||||
G128TRelease {
|
||||
buildConfigField "String", "platform", '"G128T"'
|
||||
signingConfig signingConfigs.G128T
|
||||
}
|
||||
|
||||
MT6765Debug.initWith(debug)
|
||||
MT6765Debug {
|
||||
buildConfigField "String", "platform", '"MT6765"'
|
||||
versionNameSuffix "-debug"
|
||||
debuggable true
|
||||
signingConfig signingConfigs.MT6765
|
||||
}
|
||||
|
||||
MT6765Release.initWith(release)
|
||||
MT6765Release {
|
||||
buildConfigField "String", "platform", '"MT6765"'
|
||||
signingConfig signingConfigs.MT6765
|
||||
}
|
||||
|
||||
QZ15Debug.initWith(debug)
|
||||
QZ15Debug {
|
||||
buildConfigField "String", "platform", '"QZA15"'
|
||||
versionNameSuffix "-debug"
|
||||
debuggable true
|
||||
signingConfig signingConfigs.U1302
|
||||
}
|
||||
|
||||
QZ15Release.initWith(release)
|
||||
QZ15Release {
|
||||
buildConfigField "String", "platform", '"QZA15"'
|
||||
signingConfig signingConfigs.U1302
|
||||
}
|
||||
|
||||
iPlay50miniProDebug.initWith(debug)
|
||||
iPlay50miniProDebug {
|
||||
buildConfigField "String", "platform", '"miniG99"'
|
||||
versionNameSuffix "-debug"
|
||||
debuggable true
|
||||
signingConfig signingConfigs.iPlay50miniPro
|
||||
}
|
||||
|
||||
iPlay50miniProRelease.initWith(release)
|
||||
iPlay50miniProRelease {
|
||||
buildConfigField "String", "platform", '"miniG99"'
|
||||
signingConfig signingConfigs.iPlay50miniPro
|
||||
}
|
||||
|
||||
seewoDebug.initWith(debug)
|
||||
seewoDebug {
|
||||
versionNameSuffix "-debug"
|
||||
debuggable true
|
||||
signingConfig signingConfigs.seewo
|
||||
buildConfigField "String", "platform", '"seewo"'
|
||||
}
|
||||
|
||||
seewoRelease.initWith(release)
|
||||
seewoRelease {
|
||||
signingConfig signingConfigs.seewo
|
||||
buildConfigField "String", "platform", '"seewo"'
|
||||
}
|
||||
|
||||
P50Debug.initWith(debug)
|
||||
P50Debug {
|
||||
versionNameSuffix "-debug"
|
||||
debuggable true
|
||||
signingConfig signingConfigs.P50
|
||||
buildConfigField "String", "platform", '"P50TD"'
|
||||
}
|
||||
|
||||
P50Release.initWith(release)
|
||||
P50Release {
|
||||
signingConfig signingConfigs.P50
|
||||
buildConfigField "String", "platform", '"P50TD"'
|
||||
}
|
||||
|
||||
G11JDebug.initWith(debug)
|
||||
G11JDebug {
|
||||
versionNameSuffix "-debug"
|
||||
debuggable true
|
||||
signingConfig signingConfigs.Huaruian8768
|
||||
buildConfigField "String", "platform", '"aud8786"'
|
||||
}
|
||||
|
||||
G11JRelease.initWith(release)
|
||||
G11JRelease {
|
||||
signingConfig signingConfigs.Huaruian8768
|
||||
buildConfigField "String", "platform", '"aud8786"'
|
||||
}
|
||||
|
||||
T40AirDebug.initWith(debug)
|
||||
T40AirDebug {
|
||||
versionNameSuffix "-debug"
|
||||
debuggable true
|
||||
signingConfig signingConfigs.T40Air
|
||||
buildConfigField "String", "platform", '"HL500"'
|
||||
}
|
||||
|
||||
T40AirRelease.initWith(release)
|
||||
T40AirRelease {
|
||||
signingConfig signingConfigs.T40Air
|
||||
buildConfigField "String", "platform", '"HL500"'
|
||||
}
|
||||
|
||||
AiUduDebug.initWith(debug)
|
||||
AiUduDebug {
|
||||
versionNameSuffix "-debug"
|
||||
debuggable true
|
||||
signingConfig signingConfigs.G10P
|
||||
buildConfigField "String", "platform", '"AUDG104"'
|
||||
}
|
||||
|
||||
AiUduRelease.initWith(release)
|
||||
AiUduRelease {
|
||||
signingConfig signingConfigs.G10P
|
||||
buildConfigField "String", "platform", '"AUDG104"'
|
||||
}
|
||||
|
||||
Huaruian8768Debug.initWith(debug)
|
||||
Huaruian8768Debug {
|
||||
versionNameSuffix "-debug"
|
||||
debuggable true
|
||||
signingConfig signingConfigs.Huaruian8768
|
||||
buildConfigField "String", "platform", '"MT8768"'
|
||||
}
|
||||
|
||||
Huaruian8768Release.initWith(release)
|
||||
Huaruian8768Release {
|
||||
signingConfig signingConfigs.Huaruian8768
|
||||
buildConfigField "String", "platform", '"MT8768"'
|
||||
}
|
||||
|
||||
YXPD1Debug.initWith(debug)
|
||||
YXPD1Debug {
|
||||
versionNameSuffix "-debug"
|
||||
debuggable true
|
||||
signingConfig signingConfigs.G10P
|
||||
buildConfigField "String", "platform", '"YXPD1"'
|
||||
}
|
||||
|
||||
YXPD1Release.initWith(release)
|
||||
YXPD1Release {
|
||||
signingConfig signingConfigs.G10P
|
||||
buildConfigField "String", "platform", '"YXPD1"'
|
||||
}
|
||||
|
||||
c2Debug.initWith(debug)
|
||||
c2Debug {
|
||||
versionNameSuffix "-debug"
|
||||
debuggable true
|
||||
signingConfig signingConfigs.teclast8183
|
||||
// signingConfig signingConfigs.mtk
|
||||
buildConfigField "String", "platform", '"MTK8183"'
|
||||
}
|
||||
|
||||
c2Release.initWith(release)
|
||||
c2Release {
|
||||
signingConfig signingConfigs.teclast8183
|
||||
// signingConfig signingConfigs.mtk
|
||||
buildConfigField "String", "platform", '"MTK8183"'
|
||||
}
|
||||
|
||||
teclast8183Debug.initWith(debug)
|
||||
teclast8183Debug {
|
||||
versionNameSuffix "-debug"
|
||||
debuggable true
|
||||
signingConfig signingConfigs.teclast8183
|
||||
buildConfigField "String", "platform", '"teclast8183"'
|
||||
}
|
||||
|
||||
teclast8183Release.initWith(release)
|
||||
teclast8183Release {
|
||||
signingConfig signingConfigs.teclast8183
|
||||
buildConfigField "String", "platform", '"teclast8183"'
|
||||
}
|
||||
|
||||
iPlay5013Debug.initWith(debug)
|
||||
iPlay5013Debug {
|
||||
buildConfigField "String", "platform", '"iplay5013"'
|
||||
versionNameSuffix "-debug"
|
||||
debuggable true
|
||||
signingConfig signingConfigs.iPlay50mini
|
||||
}
|
||||
|
||||
iPlay5013Release.initWith(release)
|
||||
iPlay5013Release {
|
||||
buildConfigField "String", "platform", '"iplay5013"'
|
||||
signingConfig signingConfigs.iPlay50mini
|
||||
}
|
||||
|
||||
MTKAndroid12Debug.initWith(debug)
|
||||
MTKAndroid12Debug {
|
||||
versionNameSuffix "-debug"
|
||||
debuggable true
|
||||
signingConfig signingConfigs.mtk12
|
||||
}
|
||||
|
||||
MTKAndroid12Release.initWith(release)
|
||||
MTKAndroid12Release {
|
||||
signingConfig signingConfigs.mtk12
|
||||
}
|
||||
|
||||
G11Debug.initWith(debug)
|
||||
G11Debug {
|
||||
versionNameSuffix "-debug"
|
||||
debuggable true
|
||||
signingConfig signingConfigs.G11Userdebug
|
||||
buildConfigField "String", "platform", '"MTKG11"'
|
||||
}
|
||||
|
||||
G11Release.initWith(release)
|
||||
G11Release {
|
||||
signingConfig signingConfigs.G11Userdebug
|
||||
buildConfigField "String", "platform", '"MTKG11"'
|
||||
}
|
||||
|
||||
G10PDebug.initWith(debug)
|
||||
G10PDebug {
|
||||
versionNameSuffix "-debug"
|
||||
debuggable true
|
||||
signingConfig signingConfigs.G10P
|
||||
buildConfigField "String", "platform", '"G10P"'
|
||||
}
|
||||
|
||||
G10PRelease.initWith(release)
|
||||
G10PRelease {
|
||||
signingConfig signingConfigs.G10P
|
||||
buildConfigField "String", "platform", '"G10P"'
|
||||
}
|
||||
|
||||
G13Debug.initWith(debug)
|
||||
G13Debug {
|
||||
versionNameSuffix "-debug"
|
||||
debuggable true
|
||||
signingConfig signingConfigs.G10P
|
||||
buildConfigField "String", "platform", '"HRAD13"'
|
||||
}
|
||||
|
||||
G13Release.initWith(release)
|
||||
G13Release {
|
||||
signingConfig signingConfigs.G10P
|
||||
buildConfigField "String", "platform", '"HRAD13"'
|
||||
}
|
||||
|
||||
G104Debug.initWith(debug)
|
||||
G104Debug {
|
||||
versionNameSuffix "-debug"
|
||||
debuggable true
|
||||
signingConfig signingConfigs.G10P
|
||||
buildConfigField "String", "platform", '"MTK11"'
|
||||
}
|
||||
|
||||
G104Release.initWith(release)
|
||||
G104Release {
|
||||
signingConfig signingConfigs.G10P
|
||||
buildConfigField "String", "platform", '"MTK11"'
|
||||
}
|
||||
|
||||
G104UserDebug.initWith(debug)
|
||||
G104UserDebug {
|
||||
versionNameSuffix "-debug"
|
||||
debuggable true
|
||||
signingConfig signingConfigs.G10PUserDebug
|
||||
buildConfigField "String", "platform", '"MTK11"'
|
||||
}
|
||||
|
||||
zhanruiG10ZUserDebug.initWith(debug)
|
||||
zhanruiG10ZUserDebug {
|
||||
versionNameSuffix "-debug"
|
||||
debuggable true
|
||||
signingConfig signingConfigs.G10ZUserDebug
|
||||
buildConfigField "String", "platform", '"ZR6016"'
|
||||
}
|
||||
|
||||
zhanruiG10ZDebug.initWith(debug)
|
||||
zhanruiG10ZDebug {
|
||||
versionNameSuffix "-debug"
|
||||
debuggable true
|
||||
signingConfig signingConfigs.zhanruiG10Z
|
||||
buildConfigField "String", "platform", '"ZR6016"'
|
||||
}
|
||||
|
||||
zhanruiG10ZRelease.initWith(release)
|
||||
zhanruiG10ZRelease {
|
||||
signingConfig signingConfigs.zhanruiG10Z
|
||||
buildConfigField "String", "platform", '"ZR6016"'
|
||||
}
|
||||
|
||||
TeclastP20SDebug.initWith(debug)
|
||||
TeclastP20SDebug {
|
||||
debuggable true
|
||||
versionNameSuffix "-debug"
|
||||
signingConfig signingConfigs.P20S
|
||||
buildConfigField "String", "platform", '"P20S"'
|
||||
}
|
||||
|
||||
TeclastP20SRelease.initWith(release)
|
||||
TeclastP20SRelease {
|
||||
signingConfig signingConfigs.P20S
|
||||
buildConfigField "String", "platform", '"P20S"'
|
||||
}
|
||||
|
||||
zhanRuiDebug.initWith(debug)
|
||||
zhanRuiDebug {
|
||||
manifestPlaceholders = [
|
||||
AMAP_KEY: "546eb5646a65ac6a5b7d1c7456466e05"
|
||||
]
|
||||
versionNameSuffix "-debug"
|
||||
buildConfigField "String", "platform", '"ZhanRui"'
|
||||
debuggable true
|
||||
versionNameSuffix "-debug"
|
||||
signingConfig signingConfigs.zhanRui
|
||||
buildConfigField "String", "platform", '"展锐"'
|
||||
}
|
||||
|
||||
zhanRuiRelease.initWith(release)
|
||||
zhanRuiRelease {
|
||||
signingConfig signingConfigs.zhanRui
|
||||
buildConfigField "String", "platform", '"展锐"'
|
||||
}
|
||||
|
||||
//userdebug rom使用这个版本
|
||||
zhanRuiUserdebug.initWith(zhanRuiDebug)
|
||||
zhanRuiUserdebug {
|
||||
debuggable true
|
||||
versionNameSuffix "-debug"
|
||||
signingConfig signingConfigs.zhanRuiUserdebug
|
||||
buildConfigField "String", "platform", '"展锐"'
|
||||
}
|
||||
|
||||
zhanRuiUserdebugReleas.initWith(release)
|
||||
zhanRuiUserdebugReleas {
|
||||
debuggable true
|
||||
signingConfig signingConfigs.zhanRuiUserdebug
|
||||
buildConfigField "String", "platform", '"展锐"'
|
||||
}
|
||||
|
||||
zhanRui12Debug.initWith(debug)
|
||||
zhanRui12Debug {
|
||||
debuggable true
|
||||
versionNameSuffix "-debug"
|
||||
signingConfig signingConfigs.zhanRui12
|
||||
buildConfigField "String", "platform", '"AH6016"'
|
||||
}
|
||||
|
||||
zhanRui12Release.initWith(release)
|
||||
zhanRui12Release {
|
||||
signingConfig signingConfigs.zhanRui12
|
||||
buildConfigField "String", "platform", '"AH6016"'
|
||||
}
|
||||
|
||||
debug {
|
||||
buildConfigField "String", "platform", '"MTK"'
|
||||
manifestPlaceholders = [
|
||||
AMAP_KEY: "5b68c8ee39800ff700a3762b6e028b78"
|
||||
]
|
||||
// 不显示Log
|
||||
//buildConfigField "boolean", "LOG_DEBUG", "false"
|
||||
//
|
||||
debuggable true
|
||||
versionNameSuffix "-debug"
|
||||
minifyEnabled false
|
||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
||||
//Zipalign优化
|
||||
zipAlignEnabled true
|
||||
signingConfig signingConfigs.debug
|
||||
applicationVariants.all { variant ->
|
||||
variant.outputs.each { output ->
|
||||
def outputFile = output.outputFile
|
||||
if (outputFile != null) {
|
||||
def fileName = "${appName()}-${variant.versionCode}-V${variant.versionName}-${releaseTime()}-${buildType.name}.apk"
|
||||
def fileName = "${appName()}_${variant.versionCode}_V${variant.versionName}_${releaseTime()}_${buildType.name}.apk"
|
||||
output.outputFileName = fileName
|
||||
}
|
||||
}
|
||||
}
|
||||
signingConfig signingConfigs.mtk
|
||||
buildConfigField "String", "platform", '"MTK"'
|
||||
}
|
||||
|
||||
release {
|
||||
buildConfigField "String", "platform", '"MTK"'
|
||||
manifestPlaceholders = [
|
||||
AMAP_KEY: "5b68c8ee39800ff700a3762b6e028b78"
|
||||
]
|
||||
//混淆
|
||||
minifyEnabled false
|
||||
//前一部分代表系统默认的android程序的混淆文件,该文件已经包含了基本的混淆声明,后一个文件是自己的定义混淆文件
|
||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
||||
//Zipalign优化
|
||||
zipAlignEnabled true
|
||||
//签名
|
||||
signingConfig signingConfigs.release
|
||||
//将release版本的包名重命名,加上版本及日期
|
||||
applicationVariants.all { variant ->
|
||||
variant.outputs.each { output ->
|
||||
def outputFile = ""
|
||||
def outputFile = output.outputFile
|
||||
if (outputFile != null) {
|
||||
def fileName = "${appName()}-${variant.versionCode}-V${variant.versionName}-${releaseTime()}-${productFlavors[0].name}-${buildType.name}.apk"
|
||||
def fileName = "${appName()}_${variant.versionCode}_V${variant.versionName}_${releaseTime()}_${buildType.name}.apk"
|
||||
output.outputFileName = fileName
|
||||
}
|
||||
}
|
||||
}
|
||||
signingConfig signingConfigs.mtk
|
||||
buildConfigField "String", "platform", '"MTK"'
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
dependencies {
|
||||
//implementation fileTree(include: ['*.jar'], dir: 'libs')
|
||||
compileOnly files('src/main/libs/classes.jar')
|
||||
// implementation fileTree(dir: "libs", include: ["*.jar"])
|
||||
compileOnly files('libs/framework.jar')
|
||||
compileOnly files('libs/cube_mdm.jar')
|
||||
compileOnly files('libs/cube_sdk_v1.0.0.jar')
|
||||
//版本高了idea plugin 下载VisualClassBytes修改version jclasslib最好用
|
||||
// compileOnly files('libs/qz_cubemdm_sdk_v1.0.0_1.8.jar')
|
||||
compileOnly files('libs/qz_cubemdm_sdk_v1.0.1_1.8.jar')
|
||||
|
||||
implementation 'androidx.appcompat:appcompat:1.2.0'
|
||||
implementation 'androidx.recyclerview:recyclerview:1.1.0'
|
||||
|
||||
implementation files('libs/ebf_tools_v1.0.jar')
|
||||
implementation files('libs/vendor.mediatek.hardware.nvram-V1.0-java.jar')
|
||||
|
||||
implementation files('libs/BaiduTraceSDK_v3_1_10.jar')
|
||||
|
||||
implementation 'androidx.recyclerview:recyclerview:1.2.1'
|
||||
implementation 'androidx.cardview:cardview:1.0.0'
|
||||
implementation 'androidx.multidex:multidex:2.0.1'
|
||||
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
|
||||
implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0'
|
||||
testImplementation 'junit:junit:4.13.1'
|
||||
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
|
||||
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
|
||||
implementation 'com.jakewharton:butterknife:10.1.0'
|
||||
annotationProcessor 'com.jakewharton:butterknife-compiler:10.1.0'
|
||||
implementation 'uk.co.chrisjenx:calligraphy:2.3.0'
|
||||
implementation "org.java-websocket:Java-WebSocket:1.4.1"
|
||||
implementation 'com.squareup.okhttp3:okhttp:4.6.0'
|
||||
|
||||
implementation 'androidx.appcompat:appcompat:1.3.1'
|
||||
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
|
||||
testImplementation 'junit:junit:4.13.2'
|
||||
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
|
||||
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
|
||||
|
||||
implementation 'com.squareup.moshi:moshi:1.9.3'
|
||||
//OkHttp
|
||||
implementation 'com.squareup.okhttp3:okhttp:4.8.0'
|
||||
implementation 'com.squareup.okhttp3:logging-interceptor:4.9.3'
|
||||
//Retrofit
|
||||
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
|
||||
implementation 'com.squareup.retrofit2:converter-moshi:2.9.0'
|
||||
implementation 'com.squareup.retrofit2:adapter-rxjava3:2.9.0'
|
||||
// gson converter
|
||||
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
|
||||
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.4.0'
|
||||
implementation 'io.reactivex.rxjava2:rxjava:2.2.5'
|
||||
implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'
|
||||
// 标准转换器,去掉 Retrofit以Mutipart上传参数时,String参数会多一对双引号
|
||||
implementation 'com.squareup.retrofit2:converter-scalars:2.3.0'
|
||||
//RxJava
|
||||
implementation 'io.reactivex.rxjava3:rxjava:3.0.0'
|
||||
implementation 'io.reactivex.rxjava3:rxandroid:3.0.0'
|
||||
//生命周期管理
|
||||
implementation 'com.trello.rxlifecycle4:rxlifecycle:4.0.2'
|
||||
implementation 'com.trello.rxlifecycle4:rxlifecycle-android:4.0.2'
|
||||
implementation 'com.trello.rxlifecycle4:rxlifecycle-components:4.0.2'
|
||||
implementation 'com.trello.rxlifecycle4:rxlifecycle-components-preference:4.0.2'
|
||||
implementation 'com.trello.rxlifecycle4:rxlifecycle-android-lifecycle:4.0.2'
|
||||
implementation 'com.jakewharton.rxbinding4:rxbinding:4.0.0'
|
||||
implementation 'com.jeremyliao:live-event-bus-x:1.7.3'
|
||||
|
||||
//implementation "com.uber.autodispose:autodispose:1.3.0"
|
||||
//implementation "com.uber.autodispose:autodispose-android-archcomponents:1.3.0"
|
||||
implementation 'com.google.code.gson:gson:2.8.6'
|
||||
implementation 'com.google.zxing:core:3.3.0'
|
||||
implementation 'cn.jiguang.sdk:jpush:3.8.6' // 此处以JPush 3.5.6 版本为例。
|
||||
implementation 'cn.jiguang.sdk:jcore:2.6.0' // 此处以JCore 2.2.8 版本为例。
|
||||
implementation 'com.alibaba:fastjson:1.2.70'
|
||||
implementation 'com.lzy.net:okgo:2.1.4'
|
||||
implementation 'com.lzy.net:okrx:0.1.2'
|
||||
//implementation 'com.lzy.net:okserver:1.1.3'
|
||||
implementation 'com.blankj:utilcode:1.23.7'
|
||||
//Google
|
||||
implementation 'com.google.code.gson:gson:2.9.0'
|
||||
implementation 'com.google.zxing:core:3.5.0'
|
||||
//图片加载框架
|
||||
implementation 'com.github.bumptech.glide:glide:4.13.2'
|
||||
annotationProcessor 'com.github.bumptech.glide:compiler:4.13.2'
|
||||
|
||||
// debugImplementation because LeakCanary should only run in debug builds.
|
||||
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.14'
|
||||
//磁盘缓存
|
||||
implementation 'com.jakewharton:disklrucache:2.0.2'
|
||||
//阿里云推送
|
||||
implementation 'com.aliyun.ams:alicloud-android-push:3.8.0'
|
||||
//百度地图
|
||||
implementation 'com.baidu.lbsyun:BaiduMapSDK_Location:9.1.8'
|
||||
//MMKV
|
||||
implementation 'com.tencent:mmkv-static:1.2.13'
|
||||
//bugly
|
||||
implementation 'com.tencent.bugly:crashreport:4.1.9.2'
|
||||
//xCrash
|
||||
implementation 'com.iqiyi.xcrash:xcrash-android-lib:3.0.0'
|
||||
//工具类
|
||||
implementation 'com.blankj:utilcodex:1.31.0'
|
||||
//Aria
|
||||
implementation 'com.arialyy.aria:core:3.8.15'
|
||||
annotationProcessor 'com.arialyy.aria:compiler:3.8.15'
|
||||
//高德地图定位
|
||||
implementation 'com.amap.api:location:5.1.0'
|
||||
//压缩文件解压
|
||||
implementation 'org.zeroturnaround:zt-zip:1.13'
|
||||
implementation 'org.zeroturnaround:zt-zip:1.15'
|
||||
//更换字体框架
|
||||
implementation 'uk.co.chrisjenx:calligraphy:2.3.0'
|
||||
//Java WebSocket
|
||||
implementation "org.java-websocket:Java-WebSocket:1.5.3"
|
||||
//状态栏透明
|
||||
implementation 'com.gitee.zackratos:UltimateBarX:0.8.0'
|
||||
// // 基础依赖包,必须要依赖
|
||||
// implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
|
||||
// // fragment快速实现(可选)
|
||||
// implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0'
|
||||
// // kotlin扩展(可选)
|
||||
// implementation 'com.gyf.immersionbar:immersionbar-ktx:3.0.0'
|
||||
implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.24'
|
||||
implementation 'com.facebook.rebound:rebound:0.3.8'
|
||||
implementation 'com.king.view:circleprogressview:1.1.2'
|
||||
// 吐司框架:https://github.com/getActivity/Toaster
|
||||
implementation 'com.github.getActivity:Toaster:12.6'
|
||||
}
|
||||
|
||||
preBuild {
|
||||
doLast {
|
||||
def imlFile = file(project.name + ".iml")
|
||||
// def imlFile = file("..\\.idea\\modules\\" + project.name + "\\" + rootProject.name + "." + project.name + ".iml")
|
||||
println 'Change ' + project.name + '.iml order'
|
||||
try {
|
||||
def parsedXml = (new XmlParser()).parse(imlFile)
|
||||
@@ -298,5 +797,8 @@ preBuild {
|
||||
}
|
||||
}
|
||||
//https://www.pianshen.com/article/93481144911/
|
||||
//https://blog.csdn.net/dhl_1986/article/details/102856026
|
||||
//https://blog.csdn.net/zhonghe1114/article/details/80923730
|
||||
//https://blog.csdn.net/u014175785/article/details/116235760
|
||||
//使用系统编译后的framework.jar
|
||||
}
|
||||
|
||||
BIN
app/keystore/G10PMTK11.jks
Normal file
BIN
app/keystore/G10PMTK11.jks
Normal file
Binary file not shown.
BIN
app/keystore/G10PUserDebug.jks
Normal file
BIN
app/keystore/G10PUserDebug.jks
Normal file
Binary file not shown.
BIN
app/keystore/G10zUserDebug.keystore
Normal file
BIN
app/keystore/G10zUserDebug.keystore
Normal file
Binary file not shown.
BIN
app/keystore/G11Userdebug.keystore
Normal file
BIN
app/keystore/G11Userdebug.keystore
Normal file
Binary file not shown.
BIN
app/keystore/Huaruian8768.jks
Normal file
BIN
app/keystore/Huaruian8768.jks
Normal file
Binary file not shown.
BIN
app/keystore/HuaruianG128T.jks
Normal file
BIN
app/keystore/HuaruianG128T.jks
Normal file
Binary file not shown.
BIN
app/keystore/MT6765.keystore
Normal file
BIN
app/keystore/MT6765.keystore
Normal file
Binary file not shown.
BIN
app/keystore/MTKP20S.keystore
Normal file
BIN
app/keystore/MTKP20S.keystore
Normal file
Binary file not shown.
BIN
app/keystore/P22.keystore
Normal file
BIN
app/keystore/P22.keystore
Normal file
Binary file not shown.
BIN
app/keystore/P50TD.jks
Normal file
BIN
app/keystore/P50TD.jks
Normal file
Binary file not shown.
BIN
app/keystore/T40Air.jks
Normal file
BIN
app/keystore/T40Air.jks
Normal file
Binary file not shown.
BIN
app/keystore/TeclastMTK12.jks
Normal file
BIN
app/keystore/TeclastMTK12.jks
Normal file
Binary file not shown.
BIN
app/keystore/U1302.keystore
Normal file
BIN
app/keystore/U1302.keystore
Normal file
Binary file not shown.
BIN
app/keystore/aiud.keystore
Normal file
BIN
app/keystore/aiud.keystore
Normal file
Binary file not shown.
BIN
app/keystore/iPlay50Mini.keystore
Normal file
BIN
app/keystore/iPlay50Mini.keystore
Normal file
Binary file not shown.
BIN
app/keystore/iPlay50miniPro.jks
Normal file
BIN
app/keystore/iPlay50miniPro.jks
Normal file
Binary file not shown.
BIN
app/keystore/mtkAndroid12.keystore
Normal file
BIN
app/keystore/mtkAndroid12.keystore
Normal file
Binary file not shown.
BIN
app/keystore/zhanrui12.jks
Normal file
BIN
app/keystore/zhanrui12.jks
Normal file
Binary file not shown.
BIN
app/keystore/zhanruiG10Z.keystore
Normal file
BIN
app/keystore/zhanruiG10Z.keystore
Normal file
Binary file not shown.
BIN
app/keystore/zhanxunUserdebug.keystore
Normal file
BIN
app/keystore/zhanxunUserdebug.keystore
Normal file
Binary file not shown.
BIN
app/libs/BaiduTraceSDK_v3_1_10.jar
Normal file
BIN
app/libs/BaiduTraceSDK_v3_1_10.jar
Normal file
Binary file not shown.
BIN
app/libs/cube_mdm.jar
Normal file
BIN
app/libs/cube_mdm.jar
Normal file
Binary file not shown.
BIN
app/libs/cube_sdk_v1.0.0.jar
Normal file
BIN
app/libs/cube_sdk_v1.0.0.jar
Normal file
Binary file not shown.
BIN
app/libs/ebf_tools_v1.0.jar
Normal file
BIN
app/libs/ebf_tools_v1.0.jar
Normal file
Binary file not shown.
BIN
app/libs/qz_cubemdm_sdk_v1.0.0_1.8.jar
Normal file
BIN
app/libs/qz_cubemdm_sdk_v1.0.0_1.8.jar
Normal file
Binary file not shown.
BIN
app/libs/qz_cubemdm_sdk_v1.0.1_1.8.jar
Normal file
BIN
app/libs/qz_cubemdm_sdk_v1.0.1_1.8.jar
Normal file
Binary file not shown.
BIN
app/libs/vendor.mediatek.hardware.nvram-V1.0-java.jar
Normal file
BIN
app/libs/vendor.mediatek.hardware.nvram-V1.0-java.jar
Normal file
Binary file not shown.
118
app/libs/接口说明.txt
Normal file
118
app/libs/接口说明.txt
Normal file
@@ -0,0 +1,118 @@
|
||||
一:对接方式: aidl
|
||||
1.导入jar包依赖
|
||||
2.绑定aidl服务:
|
||||
Intent intent = new Intent("com.kte.interfacesettings.aidl");
|
||||
intent.setPackage("com.kte.interfacesettings");
|
||||
context.bindService(intent, aidlConnection, Context.BIND_AUTO_CREATE);
|
||||
3.解绑服务:
|
||||
unbindService(mConnection);
|
||||
|
||||
二:接口说明
|
||||
// 启用/禁用MTP数据传输功能 :
|
||||
void setMtpEnable(boolean enable);
|
||||
|
||||
// 启用/禁用Camera功能 :
|
||||
void setCameraEnable(boolean enable);
|
||||
|
||||
// 启用/禁用蓝牙功能 :
|
||||
void setBluetoothEnable(boolean enable);
|
||||
|
||||
// 启用/禁用wifi :
|
||||
void setWifiAdvanceEnable(boolean enable);
|
||||
|
||||
|
||||
// 设置默认浏览器:
|
||||
void setDefaultBrowser(String packageName);
|
||||
|
||||
|
||||
// 关机功能:
|
||||
void shutdownDevice();
|
||||
|
||||
|
||||
// 睡眠/唤醒功能(熄屏亮屏):
|
||||
void lockNow(boolean on);
|
||||
|
||||
|
||||
// 设置背光亮度(屏幕亮度-1,0-255 ):
|
||||
void setBackLightBrightness(int brightness);
|
||||
|
||||
// 禁用/启用 飞行模式:
|
||||
void setAirplaneDisable(boolean disable);
|
||||
|
||||
// 重启功能:
|
||||
void rebootDevice();
|
||||
|
||||
// 清除最近任务:
|
||||
void clearRecentTask();
|
||||
|
||||
// 清除应用数据:
|
||||
void clearAppData(String packageName);
|
||||
|
||||
// 恢复出厂设置:
|
||||
void wipeData();
|
||||
|
||||
|
||||
// 静默安装apk功能
|
||||
void silentInstall(String path,boolean autoLa);
|
||||
|
||||
// 静默卸载apk功能
|
||||
void silentUninstall(String pkgName);
|
||||
|
||||
|
||||
// 获取硬件MAC地址:
|
||||
String getMACaddress();
|
||||
|
||||
|
||||
// 静默截图功能(截屏)
|
||||
Bitmap captureScreen(String savePath);
|
||||
|
||||
|
||||
// 设置默认输入法
|
||||
boolean setDefaultInputMethod(String ime);
|
||||
|
||||
// 设置默认播放器
|
||||
boolean setDefaultVideoPlayer(String packageName,String className);
|
||||
|
||||
// 获取root状态
|
||||
boolean isRooted();
|
||||
|
||||
// 设置锁屏壁纸
|
||||
void setLockWallPaper(String filePath);
|
||||
|
||||
// 显示/隐藏下拉状态栏图标
|
||||
void showNotificationItems(int item, boolean visible);
|
||||
|
||||
// 显隐系统设置项:
|
||||
void setSettingOptionGoneorVisible(int item ,boolean visible);
|
||||
|
||||
|
||||
// 获取当前所有正在运行的第三方应用进程接口
|
||||
List<String> getThirdAppPkgList();
|
||||
|
||||
/**
|
||||
* 打开/关闭护眼模式(夜间模式)
|
||||
* @param state
|
||||
* true 关闭;false 打开;默认是关闭状态;
|
||||
**/
|
||||
void setProtectEyeModeClosed(boolean state);
|
||||
|
||||
/**
|
||||
* 获取护眼模式状态(夜间模式)
|
||||
* @return state
|
||||
* true 打开;false 关闭;
|
||||
**/
|
||||
boolean getProtectEyeMode();
|
||||
|
||||
/**
|
||||
* 打开/关闭阅读模式(黑白屏)
|
||||
* @param state
|
||||
* true 关闭;false 打开;默认是关闭状态;
|
||||
**/
|
||||
void setReaderModeClosed(boolean state);
|
||||
|
||||
/**
|
||||
* 获取阅读模式(黑白屏)
|
||||
* @return state
|
||||
* true 打开;false 关闭;
|
||||
**/
|
||||
boolean getReaderMode();
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 5.8 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 5.8 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 5.8 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 5.8 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 5.8 KiB |
@@ -1,4 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
|
||||
<string name="app_name">我的设备测试</string>
|
||||
</resources>
|
||||
@@ -1,65 +1,117 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
package="com.mjsheng.myappstore"
|
||||
coreApp="true"
|
||||
package="com.aoleyun.sn"
|
||||
android:sharedUserId="android.uid.system">
|
||||
|
||||
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
|
||||
<uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW" />
|
||||
<queries>
|
||||
<intent>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
</intent>
|
||||
</queries>
|
||||
|
||||
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
|
||||
<uses-permission android:name="android.permission.INSTALL_PACKAGES" />
|
||||
<uses-permission android:name="android.permission.DELETE_PACKAGES" />
|
||||
<uses-permission android:name="android.permission.MASTER_CLEAR" />
|
||||
<uses-permission android:name="android.permission.REBOOT" />
|
||||
<uses-permission android:name="android.permission.DUMP" />
|
||||
<uses-permission android:name="android.permission.READ_LOGS" />
|
||||
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
|
||||
<uses-permission android:name="android.permission.GET_TASKS" />
|
||||
<uses-permission android:name="android.permission.REAL_GET_TASKS" />
|
||||
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
|
||||
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
|
||||
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
|
||||
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
||||
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
|
||||
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
|
||||
<uses-permission android:name="android.permission.BLUETOOTH" />
|
||||
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
|
||||
<uses-permission android:name="android.permission.SHUTDOWN" />
|
||||
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
|
||||
<uses-permission android:name="android.permission.GET_PACKAGE_SIZE" />
|
||||
<uses-permission android:name="android.permission.DELETE_CACHE_FILES" />
|
||||
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
|
||||
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
|
||||
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
|
||||
<uses-permission android:name="android.permission.RECORD_AUDIO" />
|
||||
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
|
||||
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
|
||||
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
|
||||
<uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW" />
|
||||
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
|
||||
<uses-permission android:name="android.permission.RECORD_AUDIO" /> <!-- 静默安装权限 -->
|
||||
<uses-permission
|
||||
android:name="android.permission.INSTALL_PACKAGES"
|
||||
tools:ignore="ProtectedPermissions" /> <!-- 应用卸载权限 -->
|
||||
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
|
||||
<uses-permission
|
||||
android:name="android.permission.DELETE_PACKAGES"
|
||||
tools:ignore="ProtectedPermissions" /> <!-- ##############################极光推送############################## -->
|
||||
<!-- Required -->
|
||||
<permission
|
||||
android:name="${JPUSH_PKGNAME}.permission.JPUSH_MESSAGE"
|
||||
android:protectionLevel="signature" /> <!-- Required -->
|
||||
<uses-permission android:name="${JPUSH_PKGNAME}.permission.JPUSH_MESSAGE" />
|
||||
<uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
|
||||
<uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" />
|
||||
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
|
||||
<uses-permission android:name="android.permission.BATTERY_STATS" />
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
|
||||
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||
<uses-permission android:name="android.permission.DELETE_CACHE_FILES" />
|
||||
<uses-permission android:name="android.permission.DUMP" />
|
||||
<uses-permission android:name="android.permission.MASTER_CLEAR" />
|
||||
<uses-permission android:name="android.permission.REBOOT" />
|
||||
<uses-permission android:name="android.permission.REAL_GET_TASKS" />
|
||||
<uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" />
|
||||
<uses-permission android:name="android.permission.SHUTDOWN" />
|
||||
<uses-permission android:name="android.permission.GET_TASKS" />
|
||||
<uses-permission android:name="android.permission.SET_WALLPAPER" />
|
||||
|
||||
<uses-permission
|
||||
android:name="com.android.browser.permission.WRITE_HISTORY_BOOKMARKS"
|
||||
android:maxSdkVersion="22" />
|
||||
<uses-permission
|
||||
android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS"
|
||||
android:maxSdkVersion="23" /> <!-- 高德地图 -->
|
||||
android:maxSdkVersion="23" />
|
||||
<!-- 静默安装权限 -->
|
||||
<uses-permission android:name="android.permission.INSTALL_PACKAGES" />
|
||||
<uses-permission
|
||||
android:name="android.permission.INSTALL_PACKAGES"
|
||||
tools:ignore="ProtectedPermissions" />
|
||||
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
|
||||
<!-- 应用卸载权限 -->
|
||||
<uses-permission android:name="android.permission.DELETE_PACKAGES" />
|
||||
<uses-permission
|
||||
android:name="android.permission.DELETE_PACKAGES"
|
||||
tools:ignore="ProtectedPermissions" />
|
||||
<!-- 自定义安装应用权限 -->
|
||||
<uses-permission android:name="com.aoleyun.sn.permissions.INSTALL_APK" />
|
||||
|
||||
<permission android:name="com.aoleyun.sn.permissions.INSTALL_APK" />
|
||||
|
||||
<!-- 百度 -->
|
||||
<!-- 这个权限用于进行网络定位 -->
|
||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
||||
<!-- 这个权限用于访问GPS定位 -->
|
||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||
<!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位 -->
|
||||
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
|
||||
<!-- 获取运营商信息,用于支持提供运营商信息相关的接口 -->
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||
<!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位 -->
|
||||
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
|
||||
<!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据 -->
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||
<!-- 访问网络,网络定位需要上网 -->
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<!-- 允许挂载和反挂载文件系统可移动存储 -->
|
||||
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
|
||||
<!-- 允许程序读取底层系统日志文件 -->
|
||||
<uses-permission android:name="android.permission.READ_LOGS" />
|
||||
<!-- 允许访问振动设备 -->
|
||||
<uses-permission android:name="android.permission.VIBRATE" />
|
||||
<!-- 允许使用PowerManager的 WakeLocks保持进程在休眠时从屏幕消失 -->
|
||||
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
||||
<!-- 允许程序读取或写入系统设置 -->
|
||||
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
|
||||
<!-- android 9.0上使用前台服务,需要添加权限 -->
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
||||
<!-- 用于读取手机当前的状态 -->
|
||||
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
|
||||
<!-- 读取缓存数据 -->
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||
<!-- 获取模拟定位信息 -->
|
||||
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
|
||||
|
||||
<!-- 【必须】 移动推送 TPNS SDK 所需权限 -->
|
||||
<!-- <uses-permission android:name="android.permission.INTERNET" /> -->
|
||||
<!-- <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> -->
|
||||
<!-- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> -->
|
||||
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />
|
||||
|
||||
<!-- 【常用】 移动推送 TPNS SDK所需权限 -->
|
||||
<!-- <uses-permission android:name="android.permission.WAKE_LOCK" /> -->
|
||||
<!-- <uses-permission android:name="android.permission.VIBRATE" /> -->
|
||||
<uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
|
||||
<!-- <uses-permission android:name="android.permission.READ_PHONE_STATE" /> -->
|
||||
<!-- <uses-permission android:name="android.permission.GET_TASKS" /> -->
|
||||
|
||||
<!-- 高德地图 -->
|
||||
<!-- 用于进行网络定位 -->
|
||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- 用于访问GPS定位 -->
|
||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- 用于获取运营商信息,用于支持提供运营商信息相关的接口 -->
|
||||
<!-- <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> -->
|
||||
<!-- 用于访问GPS定位 -->
|
||||
<!-- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> -->
|
||||
<!-- 用于获取运营商信息,用于支持提供运营商信息相关的接口 -->
|
||||
<!-- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> -->
|
||||
<!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位 -->
|
||||
<!-- <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> -->
|
||||
@@ -72,12 +124,39 @@
|
||||
<!-- 用于写入缓存数据到扩展存储卡 -->
|
||||
<!-- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> -->
|
||||
<!-- 用于申请调用A-GPS模块 -->
|
||||
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> <!-- 如果设置了target >= 28 如果需要启动后台定位则必须声明这个权限 -->
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <!-- 如果您的应用需要后台定位权限,且有可能运行在Android Q设备上,并且设置了target>28,必须增加这个权限声明 -->
|
||||
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
|
||||
<!-- 如果设置了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="com.jiaoguanyi.appstore.permissions.INSTALL_APK" />
|
||||
|
||||
<permission android:name="com.jiaoguanyi.appstore.permissions.INSTALL_APK" />
|
||||
<!-- 以下是鹰眼SDK基础权限 -->
|
||||
<!-- 这个权限用于进行网络定位-->
|
||||
<!-- <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />-->
|
||||
<!-- 这个权限用于访问卫星系统接口提供的卫星定位信息-->
|
||||
<!-- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />-->
|
||||
<!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位-->
|
||||
<!-- <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />-->
|
||||
<!-- 获取运营商信息,用于支持提供运营商信息相关的接口-->
|
||||
<!-- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />-->
|
||||
<!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
|
||||
<!-- <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />-->
|
||||
<!-- 写入扩展存储,向扩展卡写入数据,用于写入对象存储BOS数据-->
|
||||
<!-- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />-->
|
||||
<!-- 访问网络,网络定位需要上网-->
|
||||
<!-- <uses-permission android:name="android.permission.INTERNET" />-->
|
||||
<!-- Android O之后开启前台服务需要申请该权限 -->
|
||||
<!-- <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />-->
|
||||
<!-- Android Q之后,后台定位需要申请该权限 -->
|
||||
<!-- <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />-->
|
||||
|
||||
|
||||
<!-- 以下不是鹰眼SDK需要的基础权限,可选 -->
|
||||
|
||||
<!-- 用于加快首次卫星定位,可选权限,非必须-->
|
||||
<!-- <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />-->
|
||||
<!-- 用于Android M及以上系统,申请加入忽略电池优化白名单,可选权限,非必须-->
|
||||
<!-- <uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />-->
|
||||
|
||||
|
||||
<application
|
||||
@@ -89,13 +168,9 @@
|
||||
android:requestLegacyExternalStorage="true"
|
||||
android:supportsRtl="true"
|
||||
android:theme="@style/AppTheme">
|
||||
<service
|
||||
android:name=".server.LogcatService"
|
||||
android:enabled="true"
|
||||
android:exported="true"></service>
|
||||
|
||||
<activity android:name=".activity.TopActivity" />
|
||||
<activity android:name=".activity.HomeActivity">
|
||||
<activity
|
||||
android:name=".activity.SplashActivity"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
|
||||
@@ -103,27 +178,65 @@
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".activity.MainActivity"
|
||||
android:excludeFromRecents="true"
|
||||
android:launchMode="singleTop">
|
||||
android:name=".activity.EyeProtectionActivity"
|
||||
android:exported="true"
|
||||
android:icon="@drawable/com_system_huyan"
|
||||
android:label="护眼助手"
|
||||
android:launchMode="singleInstance"
|
||||
android:screenOrientation="userLandscape"
|
||||
android:theme="@style/AppTheme">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
|
||||
<!-- <intent-filter> -->
|
||||
<!-- <action android:name="android.intent.action.MAIN" /> -->
|
||||
|
||||
|
||||
<!-- <category android:name="android.intent.category.LAUNCHER" /> -->
|
||||
<!-- </intent-filter> -->
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".activity.DiscardActivity"
|
||||
android:name=".activity.CleanupActivity"
|
||||
android:exported="true"
|
||||
android:icon="@drawable/com_system_clean"
|
||||
android:label="一键加速"
|
||||
android:launchMode="singleInstance"
|
||||
android:theme="@style/activity_styles">
|
||||
<!-- <intent-filter>-->
|
||||
<!-- <action android:name="android.intent.action.MAIN" />-->
|
||||
|
||||
<!-- <category android:name="android.intent.category.LAUNCHER" />-->
|
||||
<!-- </intent-filter>-->
|
||||
</activity>
|
||||
|
||||
<activity
|
||||
android:name=".activity.main.MainActivity"
|
||||
android:excludeFromRecents="true"
|
||||
android:launchMode="singleTop" /> <!-- <service android:name=".server.MyDownloadService" /> -->
|
||||
<service android:name=".server.GuardService" />
|
||||
android:launchMode="singleTop" />
|
||||
<activity android:name=".activity.TopActivity" />
|
||||
<activity
|
||||
android:name=".activity.update.UpdateActivity"
|
||||
android:exported="true"
|
||||
android:icon="@drawable/com_aoleyun_update"
|
||||
android:label="检查更新"
|
||||
android:launchMode="singleInstance">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".activity.update.AppUpdateActivity"
|
||||
android:theme="@style/DialogCloseOnTouchOutside" />
|
||||
<activity
|
||||
android:name=".activity.requestlog.RequestLogActivity"
|
||||
android:launchMode="singleTask" />
|
||||
<activity
|
||||
android:name=".activity.AudioActivity"
|
||||
android:launchMode="singleTask"
|
||||
android:screenOrientation="behind"
|
||||
android:theme="@style/DialogCloseOnTouchOutside" />
|
||||
|
||||
|
||||
<service
|
||||
android:name=".server.StepService"
|
||||
android:exported="true" />
|
||||
<service
|
||||
android:name=".server.MainService"
|
||||
android:name=".service.main.MainService"
|
||||
android:enabled="true"
|
||||
android:exported="true">
|
||||
<intent-filter android:priority="1000">
|
||||
@@ -131,22 +244,68 @@
|
||||
<action android:name="android.intent.action.SCREEN_ON" />
|
||||
<action android:name="android.intent.action.SCREEN_OFF" />
|
||||
|
||||
<action android:name="NIGHT_DISPLAY_ENABLED" />
|
||||
<action android:name="NIGHT_DISPLAY_DISABLED" />
|
||||
<action android:name="READ_MODEL_ENABLED" />
|
||||
<action android:name="READ_MODEL_DISABLED" />
|
||||
|
||||
<data android:scheme="package" />
|
||||
</intent-filter>
|
||||
</service> <!-- <service -->
|
||||
<!-- android:name=".server.InitJpushServer" -->
|
||||
<!-- android:enabled="true" -->
|
||||
<!-- android:exported="true"> -->
|
||||
<!-- </service> -->
|
||||
</service>
|
||||
<service
|
||||
android:name=".service.RemoteService"
|
||||
android:enabled="true"
|
||||
android:exported="true"
|
||||
android:process=":remote" />
|
||||
<service
|
||||
android:name=".service.LogcatService"
|
||||
android:enabled="true"
|
||||
android:exported="true" />
|
||||
<service
|
||||
android:name=".service.GuardService"
|
||||
android:exported="true">
|
||||
<intent-filter android:priority="1000">
|
||||
<action android:name="android.intent.action.USER_PRESENT" />
|
||||
<action android:name="android.intent.action.SCREEN_OFF" />
|
||||
<action android:name="android.intent.action.SCREEN_ON" />
|
||||
<action android:name="android.intent.action.USER_UNLOCKED" />
|
||||
<action android:name="android.intent.action.ACTION_SHUTDOWN" />
|
||||
<action android:name="android.intent.action.REBOOT" />
|
||||
<action android:name="android.intent.action.FACTORY_RESET" />
|
||||
<action android:name="android.intent.action.MASTER_CLEAR" />
|
||||
<action android:name="android.intent.action.MASTER_CLEAR_NOTIFICATION" />
|
||||
<action android:name="android.intent.action.FORCE_FACTORY_RESET" />
|
||||
|
||||
<data android:scheme="package" />
|
||||
</intent-filter>
|
||||
</service>
|
||||
<service
|
||||
android:name=".service.StepService"
|
||||
android:exported="true">
|
||||
<intent-filter android:priority="1000">
|
||||
<action android:name="android.intent.action.SCREEN_OFF" />
|
||||
<action android:name="android.intent.action.SCREEN_ON" />
|
||||
<action android:name="android.intent.action.BOOT_COMPLETED" />
|
||||
<action android:name="android.intent.action.USER_PRESENT" />
|
||||
<action android:name="android.intent.action.ACTION_SHUTDOWN" />
|
||||
<action android:name="android.intent.action.REBOOT" />
|
||||
<action android:name="android.intent.action.FACTORY_RESET" />
|
||||
<action android:name="android.intent.action.MASTER_CLEAR" />
|
||||
|
||||
<data android:scheme="package" />
|
||||
</intent-filter>
|
||||
</service>
|
||||
|
||||
<receiver
|
||||
android:name=".receiver.NewAppReceiver"
|
||||
android:enabled="true"
|
||||
android:exported="true"
|
||||
android:permission="com.example.broadcast.permission">
|
||||
android:permission="android.permission.INSTALL_PACKAGES">
|
||||
<intent-filter android:priority="1000">
|
||||
<action android:name="android.intent.action.PACKAGE_ADDED" />
|
||||
<action android:name="android.intent.action.PACKAGE_REPLACED" />
|
||||
<action android:name="android.intent.action.PACKAGE_REMOVED" />
|
||||
<action android:name="android.intent.action.PACKAGE_CHANGED" />
|
||||
|
||||
<data android:scheme="package" />
|
||||
</intent-filter>
|
||||
@@ -183,52 +342,13 @@
|
||||
<!-- <action android:name="android.intent.action.MEDIA_REMOVED" /> -->
|
||||
<!-- <action android:name="android.intent.action.MEDIA_BAD_REMOVAL" /> -->
|
||||
<!-- 自定义广播 -->
|
||||
<action android:name="com.jiaoguanyi.appstore.intent.action.BOOT_COMPLETED" />
|
||||
<action android:name="aoleyun.intent.action.BOOT_COMPLETED" />
|
||||
</intent-filter>
|
||||
</receiver> <!-- <receiver android:name=".log.LogReceiver" -->
|
||||
<!-- android:permission="android.permission.DUMP" > -->
|
||||
<!-- <intent-filter> -->
|
||||
<!-- <action android:name="android.intent.action.BOOT_COMPLETED" /> -->
|
||||
<!-- <action android:name="com.debug.loggerui.ADB_CMD" /> -->
|
||||
<!-- <action android:name="com.mediatek.mdlogger.AUTOSTART_COMPLETE" /> -->
|
||||
<!-- <action android:name="com.mediatek.log2server.EXCEPTION_HAPPEND" /> -->
|
||||
<!-- <action android:name="com.debug.loggerui.bypass" /> -->
|
||||
<!-- <category android:name="android.intent.category.DEFAULT" /> -->
|
||||
<!-- </intent-filter> -->
|
||||
<!-- </receiver> -->
|
||||
<receiver
|
||||
android:name=".receiver.MyJPushReceiver"
|
||||
android:enabled="true">
|
||||
<intent-filter>
|
||||
</receiver>
|
||||
|
||||
<!-- Required 用户注册SDK的intent -->
|
||||
<action android:name="cn.jpush.android.intent.REGISTRATION" />
|
||||
<!-- Required 用户接收SDK消息的intent -->
|
||||
<action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" />
|
||||
<!-- Required 用户接收SDK通知栏信息的intent -->
|
||||
<action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" />
|
||||
<!-- Required 用户打开自定义通知栏的intent -->
|
||||
<action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" />
|
||||
<!-- 接收网络变化 连接/断开 since 1.6.3 -->
|
||||
<action android:name="cn.jpush.android.intent.CONNECTION" />
|
||||
|
||||
<category android:name="${JPUSH_PKGNAME}" />
|
||||
</intent-filter>
|
||||
</receiver> <!-- Required. For publish channel feature -->
|
||||
<!-- JPUSH_CHANNEL 是为了方便开发者统计APK分发渠道。 -->
|
||||
<!-- 例如: -->
|
||||
<!-- 发到 Google Play 的APK可以设置为 google-play; -->
|
||||
<!-- 发到其他市场的 APK 可以设置为 xxx-market。 -->
|
||||
<!-- 目前这个渠道统计功能的报表还未开放。 -->
|
||||
<!-- Required. For publish channel feature -->
|
||||
<!-- JPUSH_CHANNEL 是为了方便开发者统计APK分发渠道。 -->
|
||||
<!-- 例如: -->
|
||||
<!-- 发到 Google Play 的APK可以设置为 google-play; -->
|
||||
<!-- 发到其他市场的 APK 可以设置为 xxx-market。 -->
|
||||
<!-- 目前这个渠道统计功能的报表还未开放。 -->
|
||||
<provider
|
||||
android:name="androidx.core.content.FileProvider"
|
||||
android:authorities="com.jiaoguanyi.appstore.fileprovider"
|
||||
android:authorities="${applicationId}.fileprovider"
|
||||
android:exported="false"
|
||||
android:grantUriPermissions="true">
|
||||
|
||||
@@ -236,146 +356,72 @@
|
||||
<meta-data
|
||||
android:name="android.support.FILE_PROVIDER_PATHS"
|
||||
android:resource="@xml/file_paths" />
|
||||
</provider> <!-- ##############################极光推送############################## -->
|
||||
<!-- Rich push 核心功能 since 2.0.6 -->
|
||||
<activity
|
||||
android:name="cn.jpush.android.ui.PopWinActivity"
|
||||
android:exported="false"
|
||||
android:theme="@style/MyDialogStyle"
|
||||
tools:replace="android:exported" /> <!-- Required SDK核心功能 -->
|
||||
<activity
|
||||
android:name="cn.jpush.android.ui.PushActivity"
|
||||
android:configChanges="orientation|keyboardHidden"
|
||||
android:exported="false"
|
||||
android:theme="@android:style/Theme.NoTitleBar"
|
||||
tools:replace="android:exported">
|
||||
<intent-filter>
|
||||
<action android:name="cn.jpush.android.ui.PushActivity" />
|
||||
</provider>
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="com.jiaoguanyi.appstore" />
|
||||
</intent-filter>
|
||||
</activity> <!-- Required SDK 核心功能 -->
|
||||
<!-- 可配置android:process参数将PushService放在其他进程中 -->
|
||||
<!-- 百度地图 -->
|
||||
<!-- 声明service组件 -->
|
||||
<service
|
||||
android:name="cn.jpush.android.service.PushService"
|
||||
android:exported="false"
|
||||
android:process=":pushcore">
|
||||
<intent-filter>
|
||||
<action android:name="cn.jpush.android.intent.REGISTER" />
|
||||
<action android:name="cn.jpush.android.intent.REPORT" />
|
||||
<action android:name="cn.jpush.android.intent.PushService" />
|
||||
<action android:name="cn.jpush.android.intent.PUSH_TIME" />
|
||||
</intent-filter>
|
||||
</service> <!-- since 3.0.9 Required SDK 核心功能 -->
|
||||
<provider
|
||||
android:name="cn.jpush.android.service.DataProvider"
|
||||
android:authorities="com.jiaoguanyi.appstore.DataProvider"
|
||||
android:exported="false"
|
||||
android:process=":pushcore"
|
||||
tools:replace="android:authorities" /> <!-- since 1.8.0 option 可选项。用于同一设备中不同应用的JPush服务相互拉起的功能。 -->
|
||||
<!-- 若不启用该功能可删除该组件,将不拉起其他应用也不能被其他应用拉起 -->
|
||||
android:name="com.baidu.location.f"
|
||||
android:enabled="true"
|
||||
android:process=":location" />
|
||||
|
||||
<!--鹰眼追踪service-->
|
||||
<service
|
||||
android:name="cn.jpush.android.service.DaemonService"
|
||||
android:name="com.baidu.trace.LBSTraceService"
|
||||
android:enabled="true"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="cn.jpush.android.intent.DaemonService" />
|
||||
android:process=":trace" />
|
||||
|
||||
<category android:name="com.jiaoguanyi.appstore" />
|
||||
</intent-filter>
|
||||
</service> <!-- since 3.1.0 Required SDK 核心功能 -->
|
||||
<provider
|
||||
android:name="cn.jpush.android.service.DownloadProvider"
|
||||
android:authorities="com.jiaoguanyi.appstore.DownloadProvider"
|
||||
android:exported="true"
|
||||
tools:replace="android:authorities" /> <!-- Required SDK核心功能 -->
|
||||
<receiver
|
||||
android:name="cn.jpush.android.service.PushReceiver"
|
||||
android:enabled="true"
|
||||
android:exported="false">
|
||||
<intent-filter android:priority="1000">
|
||||
<action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" />
|
||||
<!-- Required 显示通知栏 -->
|
||||
<category android:name="com.jiaoguanyi.appstore" />
|
||||
</intent-filter>
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.USER_PRESENT" />
|
||||
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
|
||||
</intent-filter>
|
||||
<!-- Optional -->
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.PACKAGE_ADDED" />
|
||||
<action android:name="android.intent.action.PACKAGE_REMOVED" />
|
||||
<!-- 应用的其它配置 -->
|
||||
<uses-library
|
||||
android:name="org.apache.http.legacy"
|
||||
android:required="false" />
|
||||
|
||||
<data android:scheme="package" />
|
||||
</intent-filter>
|
||||
</receiver> <!-- Required SDK核心功能 -->
|
||||
<!-- 消息接收监听器 (用户可自主扩展) -->
|
||||
<receiver
|
||||
android:name="cn.jpush.android.service.AlarmReceiver"
|
||||
android:exported="false" /> <!-- since 3.3.0 Required SDK核心功能 -->
|
||||
<activity
|
||||
android:name="cn.jpush.android.service.JNotifyActivity"
|
||||
android:exported="true"
|
||||
android:taskAffinity="jpush.custom"
|
||||
android:theme="@android:style/Theme.Translucent.NoTitleBar">
|
||||
<intent-filter>
|
||||
<action android:name="cn.jpush.android.intent.JNotifyActivity" />
|
||||
|
||||
<category android:name="com.jiaoguanyi.appstore" />
|
||||
</intent-filter>
|
||||
</activity> <!-- Since JCore2.0.0 Required SDK核心功能 -->
|
||||
<!-- 这个Service要继承JCommonService -->
|
||||
<service
|
||||
android:name=".jpush.PushService"
|
||||
android:process=":pushcore">
|
||||
<intent-filter>
|
||||
<action android:name="cn.jiguang.user.service.action" />
|
||||
</intent-filter>
|
||||
</service> <!-- User defined. For test only 用户自定义的广播接收器 -->
|
||||
<receiver
|
||||
android:name=".jpush.MyReceiver"
|
||||
android:enabled="true"
|
||||
android:name=".push.alipush.AliyunMessageReceiver"
|
||||
android:exported="false">
|
||||
<intent-filter>
|
||||
<action android:name="cn.jpush.android.intent.REGISTRATION" />
|
||||
<!-- Required 用户注册SDK的intent -->
|
||||
<action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" />
|
||||
<!-- Required 用户接收SDK消息的intent -->
|
||||
<action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" />
|
||||
<!-- Required 用户接收SDK通知栏信息的intent -->
|
||||
<action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" />
|
||||
<!-- Required 用户打开自定义通知栏的intent -->
|
||||
<action android:name="cn.jpush.android.intent.CONNECTION" />
|
||||
<!-- 接收网络变化 连接/断开 since 1.6.3 -->
|
||||
<category android:name="com.jiaoguanyi.appstore" />
|
||||
<action android:name="com.alibaba.push2.action.NOTIFICATION_OPENED" />
|
||||
</intent-filter>
|
||||
</receiver> <!-- User defined. For test only 用户自定义接收消息器,3.0.7开始支持,目前新tag/alias接口设置结果会在该广播接收器对应的方法中回调 -->
|
||||
<receiver android:name=".jpush.MyJPushMessageReceiver">
|
||||
<intent-filter>
|
||||
<action android:name="cn.jpush.android.intent.RECEIVE_MESSAGE" />
|
||||
|
||||
<category android:name="com.jiaoguanyi.appstore" />
|
||||
<action android:name="com.alibaba.push2.action.NOTIFICATION_REMOVED" />
|
||||
</intent-filter>
|
||||
<intent-filter>
|
||||
<action android:name="com.alibaba.sdk.android.push.RECEIVE" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
|
||||
<meta-data
|
||||
android:name="JPUSH_CHANNEL"
|
||||
android:value="developer-default" /> <!-- Required. AppKey copied from Portal -->
|
||||
<meta-data
|
||||
android:name="JPUSH_APPKEY"
|
||||
android:value="${JPUSH_APPKEY}" /> <!-- 高德地图 -->
|
||||
<!-- 设置key -->
|
||||
<meta-data
|
||||
android:name="com.amap.api.v2.apikey"
|
||||
android:value="${AMAP_KEY}" /> <!-- 定位需要的服务 适配Android Q需要加上android:foregroundServiceType="location" -->
|
||||
<service
|
||||
android:name="com.amap.api.location.APSService"
|
||||
android:foregroundServiceType="location" />
|
||||
android:name=".push.alipush.AliMessageIntentService"
|
||||
android:exported="false">
|
||||
<intent-filter>
|
||||
<action android:name="com.alibaba.push2.action.NOTIFICATION_OPENED" />
|
||||
</intent-filter>
|
||||
<intent-filter>
|
||||
<action android:name="com.alibaba.push2.action.NOTIFICATION_REMOVED" />
|
||||
</intent-filter>
|
||||
<intent-filter>
|
||||
<action android:name="com.alibaba.sdk.android.push.RECEIVE" />
|
||||
</intent-filter>
|
||||
</service>
|
||||
|
||||
<meta-data
|
||||
android:name="CHANNEL_VALUE"
|
||||
android:value="${channel_value}" />
|
||||
android:name="com.aoleyun.sn.base.CustomGlideModule"
|
||||
android:value="AppGlideModule" />
|
||||
|
||||
<meta-data
|
||||
android:name="com.baidu.lbsapi.API_KEY"
|
||||
android:value="CjFhFE1UP5G14tMBz1kWs7ca92bgHuLr" />
|
||||
|
||||
<!-- 请填写你自己的- appKey -->
|
||||
<meta-data
|
||||
android:name="com.alibaba.app.appkey"
|
||||
android:value="333598267" />
|
||||
|
||||
<!-- 请填写你自己的appSecret -->
|
||||
<meta-data
|
||||
android:name="com.alibaba.app.appsecret"
|
||||
android:value="300dfca550f248598bc8b86c6cb9e76e" />
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
@@ -1,5 +1,5 @@
|
||||
// KeepAliveConnection.aidl
|
||||
package com.mjsheng.myappstore;
|
||||
package com.aoleyun.sn;
|
||||
|
||||
// Declare any non-default types here with import statements
|
||||
|
||||
17
app/src/main/aidl/com/aoleyun/sn/SystemInfoInterface.aidl
Normal file
17
app/src/main/aidl/com/aoleyun/sn/SystemInfoInterface.aidl
Normal file
@@ -0,0 +1,17 @@
|
||||
// SystemInfoInterface.aidl
|
||||
package com.aoleyun.sn;
|
||||
|
||||
// Declare any non-default types here with import statements
|
||||
|
||||
interface SystemInfoInterface {
|
||||
/**
|
||||
* Demonstrates some basic types that you can use as parameters
|
||||
* and return values in AIDL.
|
||||
*/
|
||||
void basicTypes(int anInt, long aLong, boolean aBoolean, float aFloat,
|
||||
double aDouble, String aString);
|
||||
|
||||
String getSerial();
|
||||
boolean isDeviceLocked();
|
||||
boolean isBrowserInput();
|
||||
}
|
||||
@@ -12,7 +12,7 @@
|
||||
<netCheck value="true"/>
|
||||
<!--除非无法使用注解,否则不建议使用广播来接受任务状态,true:使用广播接收任务状态,false:不适用广播接收状态 -->
|
||||
<!-- http://aria.laoyuyu.me/aria_doc/api/use_broadcast.html -->
|
||||
<useBroadcast value="true"/>
|
||||
<useBroadcast value="false"/>
|
||||
<!--断网的时候是否重试,true:断网也重试;false:断网不重试,直接走失败的回调-->
|
||||
<notNetRetry value="true"/>
|
||||
</app>
|
||||
@@ -32,7 +32,7 @@
|
||||
3、只对新的多线程下载任务有效
|
||||
4、只对多线程的任务有效
|
||||
-->
|
||||
<useBlock value="true"/>
|
||||
<useBlock value="false"/>
|
||||
|
||||
<!--设置下载线程数,下载线程数不能小于1
|
||||
注意:
|
||||
|
||||
160
app/src/main/java/com/aoleyun/sn/activity/AudioActivity.java
Normal file
160
app/src/main/java/com/aoleyun/sn/activity/AudioActivity.java
Normal file
@@ -0,0 +1,160 @@
|
||||
package com.aoleyun.sn.activity;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.media.AudioManager;
|
||||
import android.media.MediaPlayer;
|
||||
import android.os.PowerManager;
|
||||
import android.os.Vibrator;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
|
||||
import com.aoleyun.sn.BuildConfig;
|
||||
import com.aoleyun.sn.R;
|
||||
import com.aoleyun.sn.base.BaseDataBindingActivity;
|
||||
import com.aoleyun.sn.databinding.ActivityAudioBinding;
|
||||
import com.aoleyun.sn.utils.WakeUpUtils;
|
||||
|
||||
public class AudioActivity extends BaseDataBindingActivity {
|
||||
private static final String TAG = "AudioActivity";
|
||||
|
||||
private ActivityAudioBinding mBinding;
|
||||
|
||||
private PowerManager pm;
|
||||
private PowerManager.WakeLock wakeLock;
|
||||
private AudioManager audioManager;
|
||||
private Vibrator vibrator;
|
||||
|
||||
@Override
|
||||
protected void initDataBinding() {
|
||||
mBinding = DataBindingUtil.setContentView(this, R.layout.activity_audio);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initView() {
|
||||
mBinding.tvStop.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
releasePlayer();
|
||||
finish();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initData() {
|
||||
pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
|
||||
wakeLock = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.SCREEN_DIM_WAKE_LOCK, "WakeAndLock");
|
||||
wakeLock.acquire(60 * 1000L);
|
||||
vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
|
||||
if (vibrator.hasVibrator()) {
|
||||
long[] pattern = {1000, 5000, 1000, 5000};
|
||||
vibrator.vibrate(pattern, 0);
|
||||
} else {
|
||||
Log.e(TAG, "initView: no vibrator");
|
||||
}
|
||||
WakeUpUtils.wakeUpAndUnlockScreen(this);
|
||||
setMaxVolume();
|
||||
defaultCallMediaPlayer();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onNewIntent(Intent intent) {
|
||||
super.onNewIntent(intent);
|
||||
Log.e(TAG, "onNewIntent: " + intent.getAction());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
vibrator.cancel();
|
||||
releasePlayer();
|
||||
mediaPlayer = null;
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
private void releasePlayer() {
|
||||
try {
|
||||
if (mediaPlayer != null) {
|
||||
if (mediaPlayer.isPlaying()) {
|
||||
mediaPlayer.stop();
|
||||
}
|
||||
mediaPlayer.release();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, "releasePlayer: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 播放系统默认来电铃声
|
||||
*
|
||||
* @return MediaPlayer对象
|
||||
* @throws Exception
|
||||
*/
|
||||
MediaPlayer mediaPlayer;
|
||||
|
||||
public void defaultCallMediaPlayer() {
|
||||
if (mediaPlayer != null) {
|
||||
if (mediaPlayer.isPlaying()) {
|
||||
mediaPlayer.stop();
|
||||
}
|
||||
mediaPlayer.release();
|
||||
}
|
||||
mediaPlayer = MediaPlayer.create(this, R.raw.test);
|
||||
try {
|
||||
// mediaPlayer.prepare();
|
||||
mediaPlayer.setLooping(false);
|
||||
int duration = mediaPlayer.getDuration() / 1000;
|
||||
Log.e(TAG, "defaultCallMediaPlayer: " + "duration: " + duration);
|
||||
int loop = 0;
|
||||
if (duration <= 1) {
|
||||
loop = 30;
|
||||
} else {
|
||||
loop = (30 / duration);
|
||||
}
|
||||
final int[] soundCount = {0};
|
||||
int finalLoop = loop;
|
||||
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
|
||||
@Override
|
||||
public void onCompletion(MediaPlayer mediaPlayer) {
|
||||
if (soundCount[0] <= finalLoop) {
|
||||
setMaxVolume();
|
||||
mediaPlayer.start();
|
||||
soundCount[0] += 1;
|
||||
Log.e(TAG, "onCompletion: " + "loop: " + finalLoop);
|
||||
Log.e(TAG, "onCompletion: " + "soundCount: " + soundCount[0]);
|
||||
} else {
|
||||
if (mediaPlayer.isPlaying()) {
|
||||
mediaPlayer.stop();
|
||||
}
|
||||
mediaPlayer.release();
|
||||
Log.e(TAG, "onCompletion: " + "loop: " + finalLoop);
|
||||
Log.e(TAG, "onCompletion: " + "soundCount: " + soundCount[0]);
|
||||
}
|
||||
}
|
||||
});
|
||||
mediaPlayer.setLooping(false);
|
||||
mediaPlayer.start();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
Log.e(TAG, "defaultCallMediaPlayer: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
private void setMaxVolume() {
|
||||
if (BuildConfig.DEBUG) {
|
||||
return;
|
||||
}
|
||||
AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
|
||||
int ringMax = audioManager.getStreamMaxVolume(AudioManager.STREAM_RING);
|
||||
int musicMax = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
|
||||
int voiceMax = audioManager.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL);
|
||||
audioManager.setStreamVolume(AudioManager.STREAM_RING, ringMax, 0);
|
||||
audioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL, voiceMax, 0);
|
||||
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, musicMax, 0); //音乐音量
|
||||
audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
|
||||
audioManager.setSpeakerphoneOn(true);
|
||||
}
|
||||
}
|
||||
117
app/src/main/java/com/aoleyun/sn/activity/CleanupActivity.java
Normal file
117
app/src/main/java/com/aoleyun/sn/activity/CleanupActivity.java
Normal file
@@ -0,0 +1,117 @@
|
||||
package com.aoleyun.sn.activity;
|
||||
|
||||
import android.app.ActivityManager;
|
||||
import android.content.Context;
|
||||
import android.os.Handler;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
|
||||
import com.aoleyun.sn.BuildConfig;
|
||||
import com.aoleyun.sn.R;
|
||||
import com.aoleyun.sn.base.BaseDataBindingActivity;
|
||||
import com.aoleyun.sn.base.mvp.BaseMvpActivity;
|
||||
import com.aoleyun.sn.databinding.ActivityCleanupBinding;
|
||||
import com.aoleyun.sn.utils.ApkUtils;
|
||||
import com.aoleyun.sn.utils.AppUtil;
|
||||
import com.hjq.toast.Toaster;
|
||||
import com.king.view.circleprogressview.CircleProgressView;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.List;
|
||||
|
||||
public class CleanupActivity extends BaseDataBindingActivity {
|
||||
private static final String TAG = "CleanupActivity";
|
||||
|
||||
private ActivityCleanupBinding mBinding;
|
||||
|
||||
/**
|
||||
* 设置布局
|
||||
*/
|
||||
|
||||
@Override
|
||||
public boolean setNightMode() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDataBinding() {
|
||||
mBinding = DataBindingUtil.setContentView(this,R.layout.activity_cleanup);
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化视图
|
||||
*/
|
||||
@Override
|
||||
public void initView() {
|
||||
mBinding.tvClean.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
killBackgroundApp();
|
||||
}
|
||||
});
|
||||
refreshMemory();
|
||||
}
|
||||
|
||||
private void killBackgroundApp() {
|
||||
List<String> pkgList = ApkUtils.queryFilterAppList(this);
|
||||
for (String pkg : pkgList) {
|
||||
if (pkg.equalsIgnoreCase(BuildConfig.APPLICATION_ID)
|
||||
|| "com.tencent.mm".equals(pkg)
|
||||
|| "com.uiui.sn".equals(pkg)
|
||||
) {
|
||||
continue;
|
||||
}
|
||||
killBackgroundProcesses(pkg);
|
||||
}
|
||||
Toaster.show(String.format(getString(R.string.clear_app_size), pkgList.size()));
|
||||
refreshMemory();
|
||||
Handler.getMain().postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
finish();
|
||||
}
|
||||
}, 1500);
|
||||
}
|
||||
|
||||
private void killBackgroundProcesses(String packageName) {
|
||||
ActivityManager activityManager;
|
||||
try {
|
||||
activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
|
||||
activityManager.killBackgroundProcesses(packageName);
|
||||
Method forceStopPackage = activityManager.getClass()
|
||||
.getDeclaredMethod("forceStopPackage", String.class);
|
||||
// Log.e(TAG, "killBackgroundProcesses: " + packageName);
|
||||
forceStopPackage.setAccessible(true);
|
||||
forceStopPackage.invoke(activityManager, packageName);
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, "killBackgroundProcesses: " + e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
private void refreshMemory() {
|
||||
long avail = AppUtil.getAvailMemory(this);
|
||||
long total = AppUtil.getTotalMemory(this);
|
||||
int x = (int) (((total - avail) / (double) total) * 100);
|
||||
// if (x > 80) {
|
||||
// cpv.setProgressColor(mShaderColorsRed);
|
||||
// } else {
|
||||
// cpv.setProgressColor(mShaderColors);
|
||||
// }
|
||||
mBinding.cpv.showAnimation(0, x, 1000);
|
||||
float x2 = (((total - avail) / (float) total));
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化数据
|
||||
*/
|
||||
@Override
|
||||
public void initData() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,98 @@
|
||||
package com.aoleyun.sn.activity;
|
||||
|
||||
import android.provider.Settings;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.constraintlayout.widget.ConstraintLayout;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
|
||||
import com.aoleyun.sn.R;
|
||||
import com.aoleyun.sn.base.BaseDataBindingActivity;
|
||||
import com.aoleyun.sn.base.mvp.BaseMvpActivity;
|
||||
import com.aoleyun.sn.databinding.ActivityEyeProtectionBinding;
|
||||
import com.aoleyun.sn.view.ToggleButton;
|
||||
import com.hjq.toast.Toaster;
|
||||
|
||||
public class EyeProtectionActivity extends BaseDataBindingActivity {
|
||||
|
||||
private ActivityEyeProtectionBinding mBinding;
|
||||
|
||||
|
||||
@Override
|
||||
public boolean setNightMode() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDataBinding() {
|
||||
mBinding = DataBindingUtil.setContentView(this, R.layout.activity_eye_protection);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initView() {
|
||||
mBinding.toggleButton1.setOnToggleChanged(new ToggleButton.OnToggleChanged() {
|
||||
@Override
|
||||
public void onToggle(boolean on) {
|
||||
Settings.Secure.putInt(getContentResolver(), Settings.Secure.NIGHT_DISPLAY_ACTIVATED, on ? 1 : 0);
|
||||
}
|
||||
});
|
||||
mBinding.toggleButton2.setOnToggleChanged(new ToggleButton.OnToggleChanged() {
|
||||
@Override
|
||||
public void onToggle(boolean on) {
|
||||
Settings.Secure.putInt(getContentResolver(), Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED, on ? 1 : 0);
|
||||
Settings.Secure.putInt(getContentResolver(), Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER, on ? 0 : 1);
|
||||
}
|
||||
});
|
||||
mBinding.toggleButton3.setDisable(true);
|
||||
mBinding.toggleButton3.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
Toaster.show("此功能暂未开放");
|
||||
}
|
||||
});
|
||||
mBinding.toggleButton4.setDisable(true);
|
||||
mBinding.toggleButton4.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
Toaster.show("此功能暂未开放");
|
||||
}
|
||||
});
|
||||
mBinding.toggleButton5.setDisable(true);
|
||||
mBinding.toggleButton5.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
Toaster.show("此功能暂未开放");
|
||||
}
|
||||
});
|
||||
|
||||
mBinding.clExit.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
finish();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initData() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
int nightDisplay = Settings.Secure.getInt(getContentResolver(), Settings.Secure.NIGHT_DISPLAY_ACTIVATED, 0);
|
||||
if (nightDisplay == 1) {
|
||||
mBinding.toggleButton1.setToggleOn();
|
||||
} else {
|
||||
mBinding.toggleButton1.setToggleOff();
|
||||
}
|
||||
|
||||
int accessibilityDisplay = Settings.Secure.getInt(getContentResolver(), Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED, 0);
|
||||
if (accessibilityDisplay == 1) {
|
||||
mBinding.toggleButton2.setToggleOn();
|
||||
} else {
|
||||
mBinding.toggleButton2.setToggleOff();
|
||||
}
|
||||
}
|
||||
}
|
||||
271
app/src/main/java/com/aoleyun/sn/activity/SplashActivity.java
Normal file
271
app/src/main/java/com/aoleyun/sn/activity/SplashActivity.java
Normal file
@@ -0,0 +1,271 @@
|
||||
package com.aoleyun.sn.activity;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.StatusBarManager;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.graphics.Bitmap;
|
||||
import android.media.AudioManager;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.Environment;
|
||||
import android.os.Handler;
|
||||
import android.provider.Settings;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.webkit.WebView;
|
||||
import android.webkit.WebViewClient;
|
||||
import android.widget.Button;
|
||||
|
||||
import androidx.annotation.RequiresApi;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.core.content.ContextCompat;
|
||||
|
||||
import com.aoleyun.sn.BuildConfig;
|
||||
import com.aoleyun.sn.R;
|
||||
import com.aoleyun.sn.activity.main.MainActivity;
|
||||
import com.aoleyun.sn.comm.CommonConfig;
|
||||
import com.aoleyun.sn.comm.JGYActions;
|
||||
import com.aoleyun.sn.comm.PackageNames;
|
||||
import com.aoleyun.sn.network.NetInterfaceManager;
|
||||
import com.aoleyun.sn.service.LogcatService;
|
||||
import com.aoleyun.sn.utils.ApkUtils;
|
||||
import com.aoleyun.sn.utils.FlowInfo;
|
||||
import com.aoleyun.sn.utils.GetFlowUtil;
|
||||
import com.aoleyun.sn.utils.JgyUtils;
|
||||
import com.aoleyun.sn.utils.NetworkUtils;
|
||||
import com.aoleyun.sn.utils.SPUtils;
|
||||
import com.aoleyun.sn.utils.ServiceAliveUtils;
|
||||
import com.aoleyun.sn.utils.Utils;
|
||||
import com.blankj.utilcode.util.PathUtils;
|
||||
import com.google.gson.Gson;
|
||||
import com.tencent.mmkv.MMKV;
|
||||
import com.zackratos.ultimatebarx.ultimatebarx.java.UltimateBarX;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.Set;
|
||||
|
||||
|
||||
public class SplashActivity extends AppCompatActivity {
|
||||
private static final String TAG = "SplashActivity";
|
||||
|
||||
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
|
||||
|
||||
private Button bt_log;
|
||||
private Button bt_stop;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setBar();
|
||||
setContentView(R.layout.activity_home);
|
||||
initView();
|
||||
debugTest();
|
||||
new Handler().postDelayed(() -> {
|
||||
startActivity(new Intent(SplashActivity.this, MainActivity.class));
|
||||
finish();
|
||||
// sendBroadcastStatus("0");
|
||||
// startActivity(new Intent(SplashActivity.this, CheckNetActivity.class));
|
||||
}, 2000);
|
||||
}
|
||||
|
||||
public void sendBroadcastStatus(String status) {
|
||||
Intent intent = new Intent("receiver");
|
||||
intent.setPackage("com.aoleyunos.dop7");
|
||||
intent.putExtra("login_status", status);
|
||||
sendBroadcast(intent);
|
||||
}
|
||||
|
||||
private void setBar() {
|
||||
UltimateBarX.statusBar(this)
|
||||
.transparent()
|
||||
.colorRes(R.color.colorPrimaryDark)
|
||||
.light(true)
|
||||
.apply();
|
||||
UltimateBarX.navigationBar(this)
|
||||
.transparent()
|
||||
.colorRes(R.color.colorPrimaryDark)
|
||||
.light(true)
|
||||
.apply();
|
||||
}
|
||||
|
||||
private void initView() {
|
||||
if (BuildConfig.DEBUG) {
|
||||
// JgyUtils.getInstance().showApp("com.gaomuxuexi34");
|
||||
JgyUtils.getModel();
|
||||
Utils.getAndroiodScreenProperty(SplashActivity.this);
|
||||
Log.e(TAG, "getOperators: " + NetworkUtils.getOperators(this));
|
||||
Log.e(TAG, "PublicIP: " + mMMKV.decodeString(NetInterfaceManager.PublicIP, ""));
|
||||
NetInterfaceManager.GetWhois();
|
||||
Log.e(TAG, "initView: " + NetworkUtils.getPhoneNumber(this));
|
||||
FlowInfo flowInfo1 = GetFlowUtil.getAppFlowInfo(BuildConfig.APPLICATION_ID, this);
|
||||
Log.e(TAG, "initView: " + GetFlowUtil.byteToMB(flowInfo1.getUpKb()));
|
||||
Log.e(TAG, "initView: " + GetFlowUtil.byteToMB(flowInfo1.getDownKb()));
|
||||
FlowInfo flowInfo2 = GetFlowUtil.getAppFlowInfo("com.aoleyun.appstore", this);
|
||||
Log.e(TAG, "initView: " + GetFlowUtil.byteToMB(flowInfo2.getUpKb()));
|
||||
Log.e(TAG, "initView: " + GetFlowUtil.byteToMB(flowInfo2.getDownKb()));
|
||||
Log.e(TAG, "initView: " + Utils.getCurrentChargingCurrent());
|
||||
Log.e(TAG, "initView: " + Utils.getCurrentChargingVoltage());
|
||||
ApkUtils.showAllApp(this);
|
||||
// JgyUtils.getInstance().cleanBackgroundMemory();
|
||||
// NetInterfaceManager.getInstance().uploadLogFile();
|
||||
bt_log = findViewById(R.id.bt_log);
|
||||
bt_log.setVisibility(View.VISIBLE);
|
||||
bt_log.setOnClickListener(view -> {
|
||||
if (!ServiceAliveUtils.isServiceAlive(SplashActivity.this, LogcatService.class.getName())) {
|
||||
startService(new Intent(SplashActivity.this, LogcatService.class));
|
||||
}
|
||||
Intent intent = new Intent(LogcatService.LOGCAT_START_ACTION);
|
||||
sendBroadcast(intent);
|
||||
});
|
||||
bt_stop = findViewById(R.id.bt_stop);
|
||||
bt_stop.setVisibility(View.VISIBLE);
|
||||
bt_stop.setOnClickListener(view -> {
|
||||
if (!ServiceAliveUtils.isServiceAlive(SplashActivity.this, LogcatService.class.getName())) {
|
||||
startService(new Intent(SplashActivity.this, LogcatService.class));
|
||||
}
|
||||
Intent intent = new Intent(LogcatService.LOGCAT_STOP_ACTION);
|
||||
sendBroadcast(intent);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private void debugTest() {
|
||||
// if (!BuildConfig.DEBUG) return;
|
||||
// File file = new File("/system/media/bootanimation2.zip");
|
||||
// if (file.exists()){
|
||||
// Log.e(TAG, "debugTest: "+"file.exists" );
|
||||
// }else {
|
||||
// Log.e(TAG, "debugTest: "+"file not exists" );
|
||||
// }
|
||||
// if (file.delete()){
|
||||
// Log.e(TAG, "debugTest: "+"file.delete" );
|
||||
// }else {
|
||||
// Log.e(TAG, "debugTest: "+"file delete failed" );
|
||||
// }
|
||||
|
||||
// Utils.getHardware(this);
|
||||
// setWebView();
|
||||
// hideStatusBar();
|
||||
// boolean qch_force_app = Settings.System.putString(getContentResolver(), "qch_launcher_icon_app", "");
|
||||
Log.i(TAG, "DebugTest: qch_launcher_icon_app:" + Settings.System.getString(getContentResolver(), "qch_launcher_icon_app"));
|
||||
Log.i(TAG, "DebugTest: aole_hide_NavigationBar: " + Settings.System.getString(getContentResolver(), CommonConfig.AOLE_ACTION_HIDE_NAVIGATION_BAR));
|
||||
Set<String> aole_all_app_white_list = mMMKV.decodeStringSet(CommonConfig.AOLE_ALL_APP_WHITE_LIST_KEY);
|
||||
Log.i(TAG, "debugTest: aole_all_app_white_list:" + aole_all_app_white_list);
|
||||
// String aole_app_forbid = Settings.System.getString(getContentResolver(), CommonConfig.AOLE_ACTION_APP_FORBID);
|
||||
// if (!TextUtils.isEmpty(aole_app_forbid)) {
|
||||
// Settings.System.putString(getContentResolver(), CommonConfig.AOLE_ACTION_APP_FORBID, aole_app_forbid + ",com.aoleyun.browser");
|
||||
// }
|
||||
// Log.e(TAG, "debugTest: aole_app_forbid:" + aole_app_forbid);
|
||||
Log.i(TAG, "debugTest: ip = " + JgyUtils.getInstance().getIPAddress());
|
||||
Log.i(TAG, "debugTest: getPackage = " + Utils.getPackage());
|
||||
Log.i(TAG, "debugTest: getMacAddress = " + Utils.getAndroid10MAC(this));
|
||||
// Log.i(TAG, "debugTest: iptables = " + CmdUtil.execute("iptables -L -n" ).toString());
|
||||
|
||||
Log.i(TAG, "debugTest: " + Utils.getAndroid10MAC(this));
|
||||
Log.e(TAG, "getCustomVersion: " + Utils.getCustomVersion());
|
||||
Log.e(TAG, "getRomVersion: " + Utils.getRomVersion());
|
||||
Log.i(TAG, "debugTest: " + BuildConfig.VERSION_NAME);
|
||||
Log.i(TAG, "debugTest: " + Utils.getAPPVersionName(PackageNames.APPSTORE, this));
|
||||
Log.i(TAG, "debugTest: " + Utils.getAndroid7MAC());
|
||||
Log.i(TAG, "debugTest: launcher3 " + JgyUtils.getInstance().getStartClassName("com.android.launcher3"));
|
||||
// try {
|
||||
// new CacheUtils().cleanApplicationUserData(HomeActivity.this, "com.android.launcher3");
|
||||
// } catch (Exception e) {
|
||||
// e.printStackTrace();
|
||||
// Log.e(TAG, "DebugTest: " + e.getMessage());
|
||||
// }
|
||||
// ActivityManager mAm = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
|
||||
// mAm.killBackgroundProcesses("com.android.documentsui");
|
||||
Log.e(TAG, "debugTest: SPUtils all " + new Gson().toJson(SPUtils.getAll(this)));
|
||||
|
||||
// Utils.getPublicIP(this);
|
||||
Utils.obtainWifiInfo(this);
|
||||
Log.e("getLocalIP", "set: " + Utils.getIPAddress(this));
|
||||
// WiFiUtils.getInstance().connectWifiPws("七彩宏云","colorfulyun.com");
|
||||
// WiFiUtils.getInstance().connectWifiPws("fht","colorfulyun.com");
|
||||
// WiFiUtils.getInstance().connectWifiPws("tt","colorfulyun.com");
|
||||
// JgyUtils.getInstance().shutdown();
|
||||
Log.e(TAG, "debugTest: " + PathUtils.getExternalDownloadsPath());
|
||||
Log.e(TAG, "debugTest: " + ContextCompat.getExternalFilesDirs(this, Environment.DIRECTORY_DOWNLOADS)[0]);
|
||||
|
||||
//静音
|
||||
AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
|
||||
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.P) {
|
||||
// int ringMax = audioManager.getStreamMinVolume(AudioManager.STREAM_RING);
|
||||
// int musicMax = audioManager.getStreamMinVolumeInt(AudioManager.STREAM_MUSIC);
|
||||
// int voiceMax = audioManager.getStreamMinVolumeInt(AudioManager.STREAM_VOICE_CALL);
|
||||
// audioManager.setStreamVolume(AudioManager.STREAM_RING, ringMax, 0);
|
||||
// audioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL, voiceMax, 0);
|
||||
// audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, musicMax, 0); //音乐音量
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("NewApi")
|
||||
private void hideStatusBar() {
|
||||
StatusBarManager mStatusBarManager = (StatusBarManager) getApplicationContext().getSystemService(Context.STATUS_BAR_SERVICE);
|
||||
mStatusBarManager.disable(StatusBarManager.DISABLE_HOME);//隐藏home键
|
||||
mStatusBarManager.disable(StatusBarManager.DISABLE_BACK);//隐藏返回键
|
||||
mStatusBarManager.disable(StatusBarManager.DISABLE_RECENT | StatusBarManager.DISABLE_HOME);
|
||||
mStatusBarManager.disable(StatusBarManager.DISABLE_BACK | StatusBarManager.DISABLE_RECENT | StatusBarManager.DISABLE_HOME);
|
||||
mStatusBarManager.disable(StatusBarManager.DISABLE_RECENT);//隐藏recent键
|
||||
mStatusBarManager.disable(StatusBarManager.DISABLE_NONE);//显示隐藏的虚拟按键
|
||||
}
|
||||
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.O)
|
||||
private void bootanimotion() {
|
||||
File file = new File(Environment.getExternalStorageDirectory() + File.separator + "bootanimation.zip");
|
||||
String path0 = "/data/local/qchmedia/bootanimation.zip";
|
||||
if (file.exists()) {
|
||||
File file1 = new File(path0);
|
||||
if (!file1.exists()) {
|
||||
file.mkdirs();
|
||||
try {
|
||||
file.createNewFile();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
Log.e("bootanimation", e.getMessage());
|
||||
}
|
||||
}
|
||||
Log.e("bootanimation", "SD卡路径存在");
|
||||
try {
|
||||
Path path = Paths.get(file.getAbsolutePath());
|
||||
Files.copy(path, new FileOutputStream(path0));
|
||||
} catch (Exception e) {
|
||||
Log.e("bootanimation", e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static final String url = "www.baidu.com";
|
||||
|
||||
private void setWebView() {
|
||||
WebView webView = new WebView(this);
|
||||
webView.loadUrl(url);
|
||||
webView.getSettings().setJavaScriptEnabled(true);
|
||||
webView.setWebViewClient(new WebViewClient() {
|
||||
//页面加载开始
|
||||
@Override
|
||||
public void onPageStarted(WebView view, String url, Bitmap favicon) {
|
||||
super.onPageStarted(view, url, favicon);
|
||||
}
|
||||
|
||||
//页面加载完成
|
||||
@Override
|
||||
public void onPageFinished(WebView view, String url) {
|
||||
super.onPageFinished(view, url);
|
||||
String realUrl = url;
|
||||
//这个realUrl即为重定向之后的地址
|
||||
Log.e(TAG, "onPageFinished: " + realUrl);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -1,11 +1,11 @@
|
||||
package com.mjsheng.myappstore.activity;
|
||||
package com.aoleyun.sn.activity;
|
||||
|
||||
import android.content.Intent;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import android.os.Bundle;
|
||||
import android.view.KeyEvent;
|
||||
|
||||
import com.mjsheng.myappstore.R;
|
||||
import com.aoleyun.sn.R;
|
||||
|
||||
public class TopActivity extends AppCompatActivity {
|
||||
|
||||
560
app/src/main/java/com/aoleyun/sn/activity/main/MainActivity.java
Normal file
560
app/src/main/java/com/aoleyun/sn/activity/main/MainActivity.java
Normal file
@@ -0,0 +1,560 @@
|
||||
package com.aoleyun.sn.activity.main;
|
||||
|
||||
import android.app.AlertDialog;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.content.ServiceConnection;
|
||||
import android.graphics.Bitmap;
|
||||
import android.os.Build;
|
||||
import android.os.IBinder;
|
||||
import android.os.SystemClock;
|
||||
import android.provider.Settings;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.view.Gravity;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.View;
|
||||
import android.view.WindowManager;
|
||||
|
||||
import androidx.lifecycle.Observer;
|
||||
|
||||
import com.aoleyun.sn.BuildConfig;
|
||||
import com.aoleyun.sn.R;
|
||||
import com.aoleyun.sn.activity.requestlog.RequestLogActivity;
|
||||
import com.aoleyun.sn.activity.update.UpdateActivity;
|
||||
import com.aoleyun.sn.base.mvvm.BaseMvvmActivity;
|
||||
import com.aoleyun.sn.bean.AppSettings;
|
||||
import com.aoleyun.sn.bean.StudentsInfo;
|
||||
import com.aoleyun.sn.comm.CommonConfig;
|
||||
import com.aoleyun.sn.comm.JGYActions;
|
||||
import com.aoleyun.sn.comm.PackageNames;
|
||||
import com.aoleyun.sn.databinding.ActivityMainBinding;
|
||||
import com.aoleyun.sn.dialog.UpdateDialog;
|
||||
import com.aoleyun.sn.service.main.MainService;
|
||||
import com.aoleyun.sn.utils.ApkUtils;
|
||||
import com.aoleyun.sn.utils.GlideLoadUtils;
|
||||
import com.aoleyun.sn.utils.JgyUtils;
|
||||
import com.aoleyun.sn.utils.SPUtils;
|
||||
import com.aoleyun.sn.utils.SysSettingUtils;
|
||||
import com.aoleyun.sn.utils.Utils;
|
||||
import com.blankj.utilcode.util.NetworkUtils;
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.hjq.toast.Toaster;
|
||||
import com.tencent.mmkv.MMKV;
|
||||
|
||||
public class MainActivity extends BaseMvvmActivity<MainViewModel, ActivityMainBinding> implements NetworkUtils.OnNetworkStatusChangedListener {
|
||||
private static final String TAG = "MainActivity";
|
||||
|
||||
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
|
||||
|
||||
public static final String UPDATE_LOCKED_STATUS = "UPDATE_LOCKED_STATUS";
|
||||
public static final String REFRESHACTION = BuildConfig.APPLICATION_ID + ".REFRESH";
|
||||
|
||||
public class BtnClick {
|
||||
public void exit(View view) {
|
||||
lazyExit();
|
||||
}
|
||||
|
||||
public void log(View view) {
|
||||
continuousClick(COUNTS, DURATION);
|
||||
}
|
||||
|
||||
public void logcat(View view) {
|
||||
if (ApkUtils.isAvailable(MainActivity.this, PackageNames.AI_LOGGER_PACKAGE)) {
|
||||
if (!ApkUtils.openPackage(MainActivity.this, PackageNames.AI_LOGGER_PACKAGE, PackageNames.AI_LOGGER_MAIN_CLASS)) {
|
||||
Toaster.showShort("打开失败");
|
||||
}
|
||||
} else {
|
||||
Toaster.showShort("应用未安装");
|
||||
}
|
||||
}
|
||||
|
||||
public void update(View view) {
|
||||
startActivity(new Intent(MainActivity.this, UpdateActivity.class));
|
||||
}
|
||||
|
||||
public void openOta(View view) {
|
||||
JgyUtils.getInstance().openRomOta();
|
||||
}
|
||||
}
|
||||
|
||||
final static int COUNTS = 3;// 点击次数
|
||||
final static long DURATION = 1000;// 规定有效时间
|
||||
long[] mHits = new long[COUNTS];
|
||||
|
||||
private void continuousClick(int count, long time) {
|
||||
//每次点击时,数组向前移动一位
|
||||
System.arraycopy(mHits, 1, mHits, 0, mHits.length - 1);
|
||||
//为数组最后一位赋值
|
||||
mHits[mHits.length - 1] = SystemClock.uptimeMillis();
|
||||
if (mHits[0] >= (SystemClock.uptimeMillis() - DURATION)) {
|
||||
mHits = new long[COUNTS];//重新初始化数组
|
||||
startActivity(new Intent(MainActivity.this, RequestLogActivity.class));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onDisconnected() {
|
||||
Log.e("OnNetworkStatusChanged", "onDisconnected: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConnected(NetworkUtils.NetworkType networkType) {
|
||||
Log.e("OnNetworkStatusChanged", "onConnected: ");
|
||||
setMac();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLayoutId() {
|
||||
return R.layout.activity_main;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean setNightMode() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDataBinding() {
|
||||
mViewModel.setCtx(this);
|
||||
mViewModel.setLifecycle(getLifecycleSubject());
|
||||
mViewModel.setVDBinding(mViewDataBinding);
|
||||
mViewDataBinding.setClick(new BtnClick());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initView() {
|
||||
if (BuildConfig.DEBUG) {
|
||||
// Uri uri = Uri.parse("https://www.baidu.com");
|
||||
// Intent intent = new Intent(Intent.ACTION_VIEW, uri);
|
||||
// startActivity(intent);
|
||||
// Log.e(TAG, "initView: Build.getSerial = " + Build.getSerial());
|
||||
// startActivity(new Intent(Settings.ACTION_SECURITY_SETTINGS));
|
||||
JgyUtils.getInstance().getAllRunningAppProcessInfo();
|
||||
JgyUtils.getInstance().getAllRunningServices();
|
||||
}
|
||||
|
||||
String defaultDesktop = mMMKV.decodeString(CommonConfig.DEFAULT_DESKTOP_PACKAGE_NAME, "");
|
||||
Log.e(TAG, "initView: defaultDesktop = " + defaultDesktop);
|
||||
String defaultLauncher = mMMKV.decodeString(CommonConfig.DEFAULT_LAUNCHER_PACKAGE_NAME, "");
|
||||
Log.e(TAG, "initView: defaultLauncher = " + defaultLauncher);
|
||||
|
||||
if (JgyUtils.getInstance().checkAppPlatform() == JgyUtils.YXPD1Platform) {
|
||||
Settings.System.putString(getContentResolver(), CommonConfig.ACTIVATIONBEAN_CODE_KEY, Utils.getSerial(this));
|
||||
}
|
||||
|
||||
Log.e(TAG, "initView: Build.MODEL = " + Build.MODEL);
|
||||
if ("YX-T01".equalsIgnoreCase(Build.MODEL)) {
|
||||
mViewDataBinding.clBind.setVisibility(View.GONE);
|
||||
mViewDataBinding.clQrcode.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
mViewDataBinding.clBind.setVisibility(View.VISIBLE);
|
||||
mViewDataBinding.clQrcode.setVisibility(View.GONE);
|
||||
}
|
||||
getDevicesInfo();
|
||||
|
||||
JgyUtils.startServices(MainActivity.this);
|
||||
|
||||
// if (BuildConfig.DEBUG) {
|
||||
// Settings.Global.putInt(getContentResolver(), Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1);
|
||||
// Settings.Global.putInt(getContentResolver(), Settings.Global.ADB_ENABLED, 1);
|
||||
// }
|
||||
registerReceiver();
|
||||
}
|
||||
|
||||
private void getDevicesInfo() {
|
||||
mViewDataBinding.tvModel.setText(Build.MODEL);
|
||||
String sn = Utils.getSerial(this);
|
||||
Log.e(TAG, "getDevicesInfo: " + sn);
|
||||
Log.e(TAG, "getDevicesInfo: " + Utils.getMac());
|
||||
if (TextUtils.isEmpty(sn)) {
|
||||
mViewDataBinding.tvSerial.setText(getString(R.string.no_data));
|
||||
} else {
|
||||
mViewDataBinding.tvSerial.setText(sn);
|
||||
}
|
||||
getIMEI();
|
||||
setMac();
|
||||
|
||||
mViewDataBinding.tvVersion.setText(BuildConfig.VERSION_NAME);
|
||||
//获取自定义版本号
|
||||
Log.e(TAG, "getDevicesInfo: CustomVersion: " + Utils.getCustomVersion());
|
||||
Log.e(TAG, "getDevicesInfo: RomVersion: " + Utils.getRomVersion());
|
||||
mViewDataBinding.tvSystemVersion.setText(Utils.getCustomVersion());
|
||||
}
|
||||
|
||||
private void getIMEI() {
|
||||
// if (!Utils.NOSN.equalsIgnoreCase(Utils.getSerial(this))) {
|
||||
// mViewDataBinding.tvImei.setText(Utils.getIMEI(this, 1));
|
||||
// } else {
|
||||
// if (!TextUtils.isEmpty(Utils.getIMEI(this, 1))) {
|
||||
mViewDataBinding.tvImei.setText(Utils.getIMEI(this));
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
private void setMac() {
|
||||
String macaddr = Utils.getAndroid10MAC(this);
|
||||
if (TextUtils.isEmpty(macaddr)) {
|
||||
mViewDataBinding.tvMac.setText("获取失败");
|
||||
} else {
|
||||
mViewDataBinding.tvMac.setText(macaddr);
|
||||
}
|
||||
}
|
||||
|
||||
private void checkSnError(String sn) {
|
||||
//sn长度最长30位
|
||||
if (sn.length() > 30) {
|
||||
showSNErrorDialog("设备SN号码格式错误!");
|
||||
} else {
|
||||
Log.e(TAG, "checkSNError: " + sn);
|
||||
}
|
||||
//检查平台和sn是否对应
|
||||
if (JgyUtils.getInstance().checkSNPlatform(sn) != JgyUtils.getInstance().checkAppPlatform()) {
|
||||
// showSNErrorDialog("SN数据与平台不符,请联系管理员!");
|
||||
}
|
||||
}
|
||||
|
||||
private void showSNErrorDialog(String content) {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.dialog);
|
||||
builder.setMessage(content);
|
||||
builder.setTitle("注意:");
|
||||
builder.setIcon(R.mipmap.ic_launcher);
|
||||
builder.setCancelable(true);
|
||||
//设置正面按钮
|
||||
builder.setPositiveButton("确定", (dialog, which) -> dialog.dismiss());
|
||||
AlertDialog dialog = builder.create(); //创建AlertDialog对象
|
||||
if (!this.isFinishing() && !dialog.isShowing()) {
|
||||
dialog.show();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initData() {
|
||||
Log.e("getMacAddress", Utils.getAndroid10MAC(this));
|
||||
Intent intent = new Intent(MainActivity.this, MainService.class);
|
||||
bindService(intent, serviceConnect, BIND_AUTO_CREATE);
|
||||
startService(intent);
|
||||
|
||||
setObserve();
|
||||
|
||||
mViewModel.init();
|
||||
|
||||
mViewModel.getLockedState();
|
||||
mViewModel.getQrCode();
|
||||
mViewModel.setBindInfoPanel();
|
||||
mViewModel.getAppSettings();
|
||||
mViewModel.getPushTags();
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void setObserve() {
|
||||
mViewModel.mLockedData.observe(this, new Observer<Boolean>() {
|
||||
@Override
|
||||
public void onChanged(Boolean aBoolean) {
|
||||
Log.e(TAG, "setLockedState: " + aBoolean);
|
||||
if (aBoolean) {
|
||||
mViewModel.getStudesInfo();
|
||||
mViewDataBinding.ivLockStatus.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
mViewDataBinding.ivLockStatus.setVisibility(View.GONE);
|
||||
setNumberText("", View.GONE);
|
||||
setNameText("", View.GONE);
|
||||
setClassText("", View.GONE);
|
||||
setBatchText("", View.GONE);
|
||||
SysSettingUtils.setEnableSetting(MainActivity.this);
|
||||
}
|
||||
mViewModel.getEBagCode();
|
||||
}
|
||||
});
|
||||
mViewModel.mStudentsInfoData.observe(this, new Observer<StudentsInfo>() {
|
||||
@Override
|
||||
public void onChanged(StudentsInfo studentsInfo) {
|
||||
if (studentsInfo == null) {
|
||||
mViewDataBinding.tvActivationTime.setText("未激活");
|
||||
return;
|
||||
}
|
||||
long activation_time = studentsInfo.getActivation_time();
|
||||
// mViewDataBinding.tvActivationTime.setText("激活时间:" + TimeUtils.getActivationTime(activation_time));
|
||||
|
||||
int trade_type = studentsInfo.getTrade_type();
|
||||
String sno = studentsInfo.getSno();
|
||||
String realname = studentsInfo.getRealname();
|
||||
String classes = studentsInfo.getClasses();
|
||||
String batch = studentsInfo.getBatch();
|
||||
String head_img = studentsInfo.getHead_img();
|
||||
int bind_statu = studentsInfo.getBind_status();
|
||||
if (bind_statu == 1) {
|
||||
String phone = studentsInfo.getBind_mobile();
|
||||
mViewDataBinding.tvBindStatus.setText("绑定号码:" + phone);
|
||||
} else {
|
||||
mViewDataBinding.tvBindStatus.setText("未绑定");
|
||||
}
|
||||
|
||||
if (TextUtils.isEmpty(sno)) {
|
||||
setNumberText("未设置", View.GONE);
|
||||
} else {
|
||||
setNumberText(sno, View.VISIBLE);
|
||||
}
|
||||
if (TextUtils.isEmpty(realname)) {
|
||||
setNameText("未设置", View.GONE);
|
||||
} else {
|
||||
setNameText(realname, View.VISIBLE);
|
||||
}
|
||||
if (TextUtils.isEmpty(classes)) {
|
||||
setClassText("未设置", View.GONE);
|
||||
} else {
|
||||
setClassText(classes, View.VISIBLE);
|
||||
}
|
||||
if (TextUtils.isEmpty(batch)) {
|
||||
setBatchText("未设置", View.GONE);
|
||||
} else {
|
||||
setBatchText(batch, View.VISIBLE);
|
||||
}
|
||||
if (TextUtils.isEmpty(head_img)) {
|
||||
setIv_head("");
|
||||
} else {
|
||||
setIv_head(head_img);
|
||||
}
|
||||
SPUtils.put(MainActivity.this, CommonConfig.ADMIN_ID, studentsInfo.getAdmin_id());
|
||||
}
|
||||
});
|
||||
mViewModel.mEBagCodeData.observe(this, new Observer<Boolean>() {
|
||||
@Override
|
||||
public void onChanged(Boolean aBoolean) {
|
||||
if (aBoolean) {
|
||||
// mViewModel.getExclusiveAdminApp();
|
||||
Log.e(TAG, "getEBagCodeFinish: " + "已激活");
|
||||
} else {
|
||||
Log.e(TAG, "getEBagCodeFinish: " + "未激活");
|
||||
}
|
||||
}
|
||||
});
|
||||
mViewModel.mUpdateInfoData.observe(this, new Observer<JsonObject>() {
|
||||
@Override
|
||||
public void onChanged(JsonObject jsonObject) {
|
||||
showUpdateDialog(jsonObject);
|
||||
}
|
||||
});
|
||||
|
||||
mViewModel.mQrCodeData.observe(this, new androidx.lifecycle.Observer<Bitmap>() {
|
||||
@Override
|
||||
public void onChanged(Bitmap bitmap) {
|
||||
mViewDataBinding.ivQrcode.setImageBitmap(bitmap);
|
||||
mViewDataBinding.ivQrcode2.setImageBitmap(bitmap);
|
||||
}
|
||||
});
|
||||
|
||||
mViewModel.mShowPanel.observe(this, new Observer<Boolean>() {
|
||||
@Override
|
||||
public void onChanged(Boolean aBoolean) {
|
||||
if (aBoolean) {
|
||||
mViewDataBinding.clBindinfo.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
mViewDataBinding.clBindinfo.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
});
|
||||
mViewModel.mAppSettingsData.observe(this, new Observer<AppSettings>() {
|
||||
@Override
|
||||
public void onChanged(AppSettings appSettings) {
|
||||
mViewDataBinding.setAppSettings(appSettings);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
MainService.MainBinder mMainBinder;
|
||||
private ServiceConnect serviceConnect = new ServiceConnect();
|
||||
|
||||
private class ServiceConnect implements ServiceConnection {
|
||||
@Override
|
||||
public void onServiceConnected(ComponentName name, IBinder service) {
|
||||
Log.e(TAG, "onServiceConnected: ");
|
||||
mMainBinder = (MainService.MainBinder) service;
|
||||
mMainBinder.getService().mPresenter.getLockedState();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onServiceDisconnected(ComponentName name) {
|
||||
Log.e(TAG, "onServiceDisconnected: ");
|
||||
}
|
||||
}
|
||||
|
||||
public void setBatchText(String text, int visibility) {
|
||||
mViewDataBinding.tvBatch.setText(text);
|
||||
// tv_batch.setVisibility(visibility);
|
||||
}
|
||||
|
||||
public void setClassText(String text, int visibility) {
|
||||
mViewDataBinding.tvClass.setText(text);
|
||||
mViewDataBinding.clClass.setVisibility(visibility);
|
||||
}
|
||||
|
||||
public void setNumberText(String text, int visibility) {
|
||||
mViewDataBinding.tvNumber.setText(text);
|
||||
mViewDataBinding.clNumber.setVisibility(visibility);
|
||||
}
|
||||
|
||||
public void setNameText(String text, int visibility) {
|
||||
mViewDataBinding.tvName.setText(text);
|
||||
// layout_name.setVisibility(visibility);
|
||||
}
|
||||
|
||||
public void setIv_head(String url) {
|
||||
if (TextUtils.isEmpty(url)) {
|
||||
GlideLoadUtils.getInstance().glideLoad(this, getDrawable(R.drawable.default_avatar), mViewDataBinding.ivHead);
|
||||
} else {
|
||||
GlideLoadUtils.getInstance().glideLoad(this, url, mViewDataBinding.ivHead, R.drawable.default_avatar);
|
||||
}
|
||||
}
|
||||
|
||||
private void showUpdateDialog(JsonObject jsonObject) {
|
||||
UpdateDialog dialog = new UpdateDialog(this);
|
||||
dialog.setMessage(String.format(getString(R.string.upgrade_app), jsonObject.get("version_name").getAsString()))
|
||||
.setTitle("版本更新")
|
||||
.setPositive("确定")
|
||||
.setSingle(true)
|
||||
.setOnClickBottomListener(new UpdateDialog.OnClickBottomListener() {
|
||||
@Override
|
||||
public void onPositiveClick() {
|
||||
JgyUtils.getInstance().installAPK(jsonObject);
|
||||
dialog.dismiss();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNegtiveClick() {
|
||||
dialog.dismiss();
|
||||
}
|
||||
});
|
||||
dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
|
||||
dialog.show();
|
||||
dialog.getWindow().setGravity(Gravity.CENTER);
|
||||
dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
|
||||
dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
|
||||
dialog.setCancelable(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onStop() {
|
||||
super.onStop();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPause() {
|
||||
super.onPause();
|
||||
NetworkUtils.unregisterNetworkStatusChangedListener(this);
|
||||
if (mUpdateReceiver != null) {
|
||||
unregisterReceiver(mUpdateReceiver);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
NetworkUtils.registerNetworkStatusChangedListener(this);
|
||||
registerUpdateReceiver();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
unregister();
|
||||
JgyUtils.startServices(MainActivity.this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onKeyDown(int keyCode, KeyEvent event) {
|
||||
if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
|
||||
lazyExit();
|
||||
return true;
|
||||
}
|
||||
return super.onKeyDown(keyCode, event);
|
||||
}
|
||||
|
||||
private long mPreClickTime;
|
||||
|
||||
private void lazyExit() {
|
||||
if (System.currentTimeMillis() - mPreClickTime > 3000) {
|
||||
Toaster.show("再按一次,退出");
|
||||
mPreClickTime = System.currentTimeMillis();
|
||||
} else {
|
||||
finish();
|
||||
}
|
||||
}
|
||||
|
||||
private void registerReceiver() {
|
||||
registerPanelReceiver();
|
||||
}
|
||||
|
||||
|
||||
private void unregister() {
|
||||
if (mPanelReceiver != null) {
|
||||
unregisterReceiver(mPanelReceiver);
|
||||
}
|
||||
}
|
||||
|
||||
private void registerPanelReceiver() {
|
||||
if (mPanelReceiver == null) {
|
||||
mPanelReceiver = new PanelReceiver();
|
||||
}
|
||||
IntentFilter filter = new IntentFilter();
|
||||
filter.addAction(PANEL_SHOW);
|
||||
filter.addAction(PANEL_HIDE);
|
||||
registerReceiver(mPanelReceiver, filter);
|
||||
}
|
||||
|
||||
public static final String PANEL_SHOW = "panel_show_key";
|
||||
public static final String PANEL_HIDE = "panel_hide_key";
|
||||
|
||||
private PanelReceiver mPanelReceiver;
|
||||
|
||||
private class PanelReceiver extends BroadcastReceiver {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
String action = intent.getAction();
|
||||
switch (action) {
|
||||
case PANEL_SHOW:
|
||||
mViewDataBinding.clBindinfo.setVisibility(View.VISIBLE);
|
||||
break;
|
||||
case PANEL_HIDE:
|
||||
default:
|
||||
mViewDataBinding.clBindinfo.setVisibility(View.GONE);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private UpdateReceiver mUpdateReceiver;
|
||||
|
||||
private void registerUpdateReceiver() {
|
||||
if (mUpdateReceiver == null) {
|
||||
mUpdateReceiver = new UpdateReceiver();
|
||||
}
|
||||
IntentFilter filter = new IntentFilter();
|
||||
filter.addAction(UPDATE_LOCKED_STATUS);
|
||||
registerReceiver(mUpdateReceiver, filter);
|
||||
}
|
||||
|
||||
private class UpdateReceiver extends BroadcastReceiver {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
if (UPDATE_LOCKED_STATUS.equals(intent.getAction())) {
|
||||
int locked = Settings.System.getInt(getContentResolver(), JGYActions.ACTION_QCH_UNLOCK_IPAD, JGYActions.FRAME_CODE_LOCKED);
|
||||
if (locked != JGYActions.FRAME_CODE_LOCKED) {
|
||||
setNumberText("", View.GONE);
|
||||
setNameText("", View.GONE);
|
||||
setClassText("", View.GONE);
|
||||
setBatchText("", View.GONE);
|
||||
Glide.with(mViewDataBinding.ivHead).load(getDrawable(R.drawable.default_avatar)).error(R.drawable.default_avatar).into(mViewDataBinding.ivHead);
|
||||
SysSettingUtils.setEnableSetting(MainActivity.this);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,356 @@
|
||||
package com.aoleyun.sn.activity.main;
|
||||
|
||||
import android.content.pm.PackageInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.graphics.Bitmap;
|
||||
import android.os.Build;
|
||||
import android.provider.Settings;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import com.aoleyun.sn.BuildConfig;
|
||||
import com.aoleyun.sn.base.mvvm.BaseViewModel;
|
||||
import com.aoleyun.sn.bean.AdminAppInfo;
|
||||
import com.aoleyun.sn.bean.AppSettings;
|
||||
import com.aoleyun.sn.bean.AppUpdateInfo;
|
||||
import com.aoleyun.sn.bean.BaseResponse;
|
||||
import com.aoleyun.sn.bean.StudentsInfo;
|
||||
import com.aoleyun.sn.comm.CommonConfig;
|
||||
import com.aoleyun.sn.comm.JGYActions;
|
||||
import com.aoleyun.sn.databinding.ActivityMainBinding;
|
||||
import com.aoleyun.sn.gson.GsonUtils;
|
||||
import com.aoleyun.sn.network.NetInterfaceManager;
|
||||
import com.aoleyun.sn.utils.AES.CXAESUtil;
|
||||
import com.aoleyun.sn.utils.JgyUtils;
|
||||
import com.aoleyun.sn.utils.Utils;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonParser;
|
||||
import com.trello.rxlifecycle4.RxLifecycle;
|
||||
import com.trello.rxlifecycle4.android.ActivityEvent;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
|
||||
import io.reactivex.rxjava3.annotations.NonNull;
|
||||
import io.reactivex.rxjava3.core.Observer;
|
||||
import io.reactivex.rxjava3.disposables.Disposable;
|
||||
import io.reactivex.rxjava3.schedulers.Schedulers;
|
||||
|
||||
public class MainViewModel extends BaseViewModel<ActivityMainBinding, ActivityEvent> {
|
||||
private static final String TAG = "MainViewModel";
|
||||
|
||||
@Override
|
||||
public ActivityMainBinding getVDBinding() {
|
||||
return binding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
|
||||
}
|
||||
|
||||
public void init() {
|
||||
checkUpdateInfo();
|
||||
checkAoleyunUpdate();
|
||||
checkTestUpdate();
|
||||
getDefaultDesktop();
|
||||
getDefaultApp();
|
||||
}
|
||||
|
||||
public MutableLiveData<Boolean> mLockedData = new MutableLiveData<>();
|
||||
|
||||
public void getLockedState() {
|
||||
NetInterfaceManager.getInstance()
|
||||
.getLockedState(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
|
||||
@Override
|
||||
public void onComplete() {
|
||||
Log.e("getLockedState", "onComplete: ");
|
||||
int locked = Settings.System.getInt(getCtx().getContentResolver(), JGYActions.ACTION_QCH_UNLOCK_IPAD, JGYActions.FRAME_CODE_LOCKED);
|
||||
Log.e("getLockedState", "locked: " + locked);
|
||||
mLockedData.setValue(locked == JGYActions.FRAME_CODE_LOCKED);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public MutableLiveData<StudentsInfo> mStudentsInfoData = new MutableLiveData<>();
|
||||
|
||||
/**
|
||||
* 通过sn获取用户信息
|
||||
*/
|
||||
public void getStudesInfo() {
|
||||
NetInterfaceManager.getInstance().getStudesInfo(true, getLifecycle(), new NetInterfaceManager.StudesInfoListener() {
|
||||
@Override
|
||||
public void setStudentsInfo(StudentsInfo studentsInfo) {
|
||||
mStudentsInfoData.setValue(studentsInfo);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onComplete() {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public MutableLiveData<Boolean> mEBagCodeData = new MutableLiveData<>();
|
||||
|
||||
public void getEBagCode() {
|
||||
NetInterfaceManager.getInstance().getEBagCode(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
|
||||
@Override
|
||||
public void onComplete() {
|
||||
mEBagCodeData.setValue(Settings.Global.getInt(getCtx().getContentResolver(), CommonConfig.UIUI_ACTIVATION_KEY, 0) == 1);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
public void getExclusiveAdminApp() {
|
||||
NetInterfaceManager.getInstance().getExclusiveAdminAppObservable()
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.compose(RxLifecycle.bindUntilEvent(getLifecycle(), ActivityEvent.DESTROY))
|
||||
.subscribe(new Observer<BaseResponse<List<AdminAppInfo>>>() {
|
||||
@Override
|
||||
public void onSubscribe(@NonNull Disposable d) {
|
||||
Log.e("getExclusiveAdminApp", "onSubscribe: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(@NonNull BaseResponse<List<AdminAppInfo>> listBaseResponse) {
|
||||
Log.e("getExclusiveAdminApp", "onNext: " + listBaseResponse);
|
||||
if (listBaseResponse.code == 200) {
|
||||
List<AdminAppInfo> adminAppInfos = listBaseResponse.data;
|
||||
JgyUtils.getInstance().installAdminApp(adminAppInfos);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(@NonNull Throwable e) {
|
||||
Log.e("getExclusiveAdminApp", "onError: " + e.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onComplete() {
|
||||
Log.e("getExclusiveAdminApp", "onComplete: ");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public MutableLiveData<JsonObject> mUpdateInfoData = new MutableLiveData<>();
|
||||
|
||||
public void checkUpdateInfo() {
|
||||
NetInterfaceManager.getInstance()
|
||||
.getUpdateApi()
|
||||
.getUpdate(BuildConfig.APPLICATION_ID,
|
||||
JgyUtils.getInstance().checkAppPlatform())
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.compose(RxLifecycle.bindUntilEvent(getLifecycle(), ActivityEvent.DESTROY))
|
||||
.subscribe(new Observer<BaseResponse<AppUpdateInfo>>() {
|
||||
@Override
|
||||
public void onSubscribe(@NonNull Disposable d) {
|
||||
Log.e("checkUpdateInfo", "onSubscribe: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(@NonNull BaseResponse<AppUpdateInfo> response) {
|
||||
Log.e("checkUpdateInfo", "onNext: " + response);
|
||||
if (response.code == 200) {
|
||||
JsonObject jsonObject = JsonParser.parseString(new Gson().toJson(response.data)).getAsJsonObject();
|
||||
long versionCode = jsonObject.get("version_code").getAsLong();
|
||||
PackageManager pm = getCtx().getPackageManager();
|
||||
PackageInfo info = null;
|
||||
try {
|
||||
info = pm.getPackageInfo(BuildConfig.APPLICATION_ID, 0);
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
if (null == info || info.versionCode < versionCode) {
|
||||
mUpdateInfoData.setValue(jsonObject);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(@NonNull Throwable e) {
|
||||
Log.e("checkUpdateInfo", "onError: " + e.getMessage());
|
||||
onComplete();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onComplete() {
|
||||
Log.e("checkUpdateInfo", "onComplete: ");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void checkAoleyunUpdate() {
|
||||
NetInterfaceManager.getInstance()
|
||||
.checkAoleyunUpdate(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
|
||||
@Override
|
||||
public void onComplete() {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void checkTestUpdate() {
|
||||
if (!JgyUtils.getInstance().tagEmpty()) {
|
||||
NetInterfaceManager.getInstance()
|
||||
.checkTestUpdate(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
|
||||
@Override
|
||||
public void onComplete() {
|
||||
|
||||
}
|
||||
});
|
||||
} else {
|
||||
Log.e(TAG, "checkTestUpdate: tag is Empty");
|
||||
}
|
||||
}
|
||||
|
||||
public void getDefaultDesktop() {
|
||||
Log.e(TAG, "getDefaultDesktop: ");
|
||||
if (JgyUtils.isOfficialVersion() || !JgyUtils.getInstance().getDeviceIsLocked()) {
|
||||
Log.e(TAG, "getDefaultDesktop: " + "Device unLocked");
|
||||
|
||||
} else {
|
||||
int aihuaUnlock = Settings.System.getInt(getCtx().getContentResolver(), CommonConfig.AIHUA_UNLOCK, 0);
|
||||
if (JgyUtils.getInstance().isAihuaFramework() && aihuaUnlock == 1) {
|
||||
Log.e(TAG, "getDefaultDesktop: " + "Device aihua");
|
||||
|
||||
} else {
|
||||
NetInterfaceManager.getInstance()
|
||||
.getDefaultDesktop( getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
|
||||
@Override
|
||||
public void onComplete() {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void getDefaultApp() {
|
||||
NetInterfaceManager.getInstance()
|
||||
.getDefaultApp(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
|
||||
@Override
|
||||
public void onComplete() {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
public MutableLiveData<Bitmap> mQrCodeData = new MutableLiveData<>();
|
||||
|
||||
public void getQrCode() {
|
||||
String encryptString = CXAESUtil.encrypt(CommonConfig.AES_KEY, Utils.getSerial(getCtx()));
|
||||
Log.e("getQRCode", "setImageAndText: " + encryptString);
|
||||
Bitmap bitmap = Utils.createQRImage(encryptString, 400, 400);
|
||||
mQrCodeData.setValue(bitmap);
|
||||
}
|
||||
|
||||
public void getPublicIp() {
|
||||
NetInterfaceManager.getInstance().getPublicIp(getLifecycle(), new NetInterfaceManager.PublicIpCallbak() {
|
||||
@Override
|
||||
public void getPublicIp(String ip) {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public MutableLiveData<Boolean> mShowPanel = new MutableLiveData<>();
|
||||
|
||||
public void setBindInfoPanel() {
|
||||
NetInterfaceManager.getInstance().getSystemSettingObservable()
|
||||
.compose(RxLifecycle.bindUntilEvent(getLifecycle(), ActivityEvent.DESTROY))
|
||||
.subscribe(new Observer<BaseResponse>() {
|
||||
@Override
|
||||
public void onSubscribe(@NonNull Disposable d) {
|
||||
Log.e("setBindInfoPanel", "onSubscribe: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(@NonNull BaseResponse baseResponse) {
|
||||
Log.e("setBindInfoPanel", "onNext: " + baseResponse);
|
||||
if (baseResponse.code == 200) {
|
||||
JsonObject jsonObject = GsonUtils.getJsonObject(GsonUtils.toJSONString(baseResponse.data));
|
||||
JsonElement jsonElement = jsonObject.get("is_control_show");
|
||||
if (jsonElement != null && !jsonElement.isJsonNull()) {
|
||||
int is_control_show = jsonElement.getAsInt();
|
||||
mShowPanel.setValue(is_control_show == 1);
|
||||
}
|
||||
String data = GsonUtils.toJSONString(baseResponse.data);
|
||||
Log.e("setSystemSetting", "onNext: " + data);
|
||||
//结果保存到本地
|
||||
JgyUtils.getInstance().SettingSysData(data);
|
||||
|
||||
} else {
|
||||
if (JgyUtils.G11TAG.equals(JgyUtils.getInstance().getAppPlatform())
|
||||
|| "HT01".equals(Build.MODEL)) {
|
||||
mShowPanel.setValue(true);
|
||||
} else if ("G10-M".equals(Build.MODEL)
|
||||
||"Ebox201W".equals(Build.MODEL)) {
|
||||
mShowPanel.setValue(false);
|
||||
}
|
||||
|
||||
JgyUtils.getInstance().SettingSysData("");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(@NonNull Throwable e) {
|
||||
Log.e("setBindInfoPanel", "onError: " + e.getMessage());
|
||||
onComplete();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onComplete() {
|
||||
Log.e("setBindInfoPanel", "onComplete: ");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public MutableLiveData<AppSettings> mAppSettingsData = new MutableLiveData<>();
|
||||
|
||||
public void getAppSettings() {
|
||||
NetInterfaceManager.getInstance().getAppSettingObservable()
|
||||
.compose(RxLifecycle.bindUntilEvent(getLifecycle(), ActivityEvent.DESTROY))
|
||||
.subscribe(new Observer<BaseResponse<AppSettings>>() {
|
||||
@Override
|
||||
public void onSubscribe(@NonNull Disposable d) {
|
||||
Log.e("getAppSettings", "onSubscribe: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(@NonNull BaseResponse<AppSettings> appSettingsBaseResponse) {
|
||||
Log.e("getAppSettings", "onNext: " + appSettingsBaseResponse);
|
||||
if (appSettingsBaseResponse.code == 200) {
|
||||
mAppSettingsData.setValue(appSettingsBaseResponse.data);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(@NonNull Throwable e) {
|
||||
Log.e("getAppSettings", "onError: " + e.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onComplete() {
|
||||
Log.e("getAppSettings", "onComplete: ");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void getPushTags(){
|
||||
NetInterfaceManager.getInstance().setPushTags(getLifecycle(), new NetInterfaceManager.PushTagCallback() {
|
||||
@Override
|
||||
public void setPushTag(String tag) {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
package com.aoleyun.sn.activity.requestlog;
|
||||
|
||||
import android.view.View;
|
||||
|
||||
import androidx.lifecycle.Observer;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import com.aoleyun.sn.R;
|
||||
import com.aoleyun.sn.base.mvvm.BaseMvvmActivity;
|
||||
import com.aoleyun.sn.databinding.ActivityRequestLogBinding;
|
||||
import com.aoleyun.sn.rlog.LogBean;
|
||||
import com.aoleyun.sn.rlog.LogDBManager;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class RequestLogActivity extends BaseMvvmActivity<RequestLogViewModel, ActivityRequestLogBinding> {
|
||||
private static final String TAG = "RequestLogActivity";
|
||||
|
||||
private RequestLogAdapter mAdapter;
|
||||
|
||||
@Override
|
||||
public int getLayoutId() {
|
||||
return R.layout.activity_request_log;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean setNightMode() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDataBinding() {
|
||||
mViewModel.setCtx(this);
|
||||
mViewModel.setLifecycle(getLifecycleSubject());
|
||||
mViewModel.setVDBinding(mViewDataBinding);
|
||||
mViewDataBinding.setClick(new BtnClick());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initView() {
|
||||
mViewDataBinding.recyclerview.setLayoutManager(new LinearLayoutManager(this));
|
||||
mAdapter = new RequestLogAdapter();
|
||||
mViewDataBinding.recyclerview.setAdapter(mAdapter);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initData() {
|
||||
mViewModel.getLogBeanListData().observe(this, new Observer<List<LogBean>>() {
|
||||
@Override
|
||||
public void onChanged(List<LogBean> logBeans) {
|
||||
mAdapter.setLogBeans(logBeans);
|
||||
}
|
||||
});
|
||||
mViewModel.getDBList();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
public class BtnClick {
|
||||
public void exit(View view) {
|
||||
finish();
|
||||
}
|
||||
|
||||
public void refresh(View view) {
|
||||
mViewModel.getDBList();
|
||||
}
|
||||
|
||||
public void delete(View view) {
|
||||
LogDBManager.getInstance().saveToFile();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
package com.aoleyun.sn.activity.requestlog;
|
||||
|
||||
import android.content.Context;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.aoleyun.sn.R;
|
||||
import com.aoleyun.sn.rlog.LogBean;
|
||||
import com.aoleyun.sn.utils.TimeUtils;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class RequestLogAdapter extends RecyclerView.Adapter<RequestLogAdapter.Holder> {
|
||||
private List<LogBean> mLogBeans;
|
||||
private Context context;
|
||||
|
||||
public void setLogBeans(List<LogBean> logBeanList) {
|
||||
this.mLogBeans = logBeanList;
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Holder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||
context = parent.getContext();
|
||||
View view = LayoutInflater.from(context).inflate(R.layout.item_requestlog, parent, false);
|
||||
return new Holder(view);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull Holder holder, int position) {
|
||||
LogBean logBean = mLogBeans.get(position);
|
||||
if (logBean == null) return;
|
||||
holder.tv_code.setText(logBean.getCode().toString());
|
||||
holder.tv_timestamp.setText(TimeUtils.transferLongToDate(logBean.getTimestamp()));
|
||||
holder.tv_event.setText(logBean.getEvent());
|
||||
holder.tv_operate.setText(logBean.getOperate());
|
||||
holder.tv_content.setText(logBean.getContent());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return mLogBeans == null ? 0 : mLogBeans.size();
|
||||
}
|
||||
|
||||
static class Holder extends RecyclerView.ViewHolder {
|
||||
TextView tv_code;
|
||||
TextView tv_timestamp;
|
||||
TextView tv_event;
|
||||
TextView tv_operate;
|
||||
TextView tv_content;
|
||||
|
||||
public Holder(@NonNull View itemView) {
|
||||
super(itemView);
|
||||
tv_code = itemView.findViewById(R.id.tv_code);
|
||||
tv_timestamp = itemView.findViewById(R.id.tv_timestamp);
|
||||
tv_event = itemView.findViewById(R.id.tv_event);
|
||||
tv_operate = itemView.findViewById(R.id.tv_operate);
|
||||
tv_content = itemView.findViewById(R.id.tv_content);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.aoleyun.sn.activity.requestlog;
|
||||
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import com.aoleyun.sn.base.mvvm.BaseViewModel;
|
||||
import com.aoleyun.sn.databinding.ActivityRequestLogBinding;
|
||||
import com.aoleyun.sn.rlog.LogBean;
|
||||
import com.aoleyun.sn.rlog.LogDBManager;
|
||||
import com.trello.rxlifecycle4.android.ActivityEvent;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class RequestLogViewModel extends BaseViewModel<ActivityRequestLogBinding, ActivityEvent> {
|
||||
|
||||
@Override
|
||||
public ActivityRequestLogBinding getVDBinding() {
|
||||
return binding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
|
||||
}
|
||||
|
||||
private MutableLiveData<List<LogBean>> mLogBeanListData =new MutableLiveData<>();
|
||||
|
||||
public MutableLiveData<List<LogBean>> getLogBeanListData() {
|
||||
return mLogBeanListData;
|
||||
}
|
||||
|
||||
public void getDBList(){
|
||||
mLogBeanListData.setValue(LogDBManager.getInstance().getLogList());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,115 @@
|
||||
package com.aoleyun.sn.activity.update;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.view.View;
|
||||
|
||||
import com.aoleyun.sn.BuildConfig;
|
||||
import com.aoleyun.sn.R;
|
||||
import com.aoleyun.sn.base.mvvm.BaseMvvmActivity;
|
||||
import com.aoleyun.sn.bean.AppUpdateInfo;
|
||||
import com.aoleyun.sn.databinding.ActivityAppUpdateBinding;
|
||||
import com.aoleyun.sn.gson.GsonUtils;
|
||||
import com.aoleyun.sn.service.main.MainService;
|
||||
import com.aoleyun.sn.utils.Utils;
|
||||
import com.arialyy.aria.core.Aria;
|
||||
import com.arialyy.aria.core.download.DownloadEntity;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.hjq.toast.Toaster;
|
||||
|
||||
import static com.arialyy.aria.core.inf.IEntity.STATE_RUNNING;
|
||||
|
||||
public class AppUpdateActivity extends BaseMvvmActivity<AppUpdateViewModel, ActivityAppUpdateBinding> {
|
||||
|
||||
private AppUpdateInfo mAppInfoData;
|
||||
|
||||
|
||||
@Override
|
||||
protected int getLayoutId() {
|
||||
return R.layout.activity_app_update;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDataBinding() {
|
||||
mViewModel.setCtx(this);
|
||||
mViewModel.setLifecycle(getLifecycleSubject());
|
||||
mViewModel.setVDBinding(mViewDataBinding);
|
||||
mViewDataBinding.setClick(new BtnClick());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initView() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initData() {
|
||||
Intent intent = getIntent();
|
||||
mAppInfoData = (AppUpdateInfo) intent.getSerializableExtra("appUpdateInfo");
|
||||
if (mAppInfoData != null) {
|
||||
mViewDataBinding.setAppInfo(mAppInfoData);
|
||||
mViewDataBinding.setMsg("检测到新版本,是否更新");
|
||||
String pkg = mAppInfoData.getPackages();
|
||||
switch (pkg) {
|
||||
case "com.aoleyun.os":
|
||||
mViewDataBinding.ivAppIcon.setImageDrawable(getDrawable(R.drawable.com_aoleyun_os));
|
||||
break;
|
||||
case "com.aoleyun.appstore":
|
||||
mViewDataBinding.ivAppIcon.setImageDrawable(getDrawable(R.drawable.com_aoleyun_appstore));
|
||||
break;
|
||||
case "com.aoleyun.browser":
|
||||
mViewDataBinding.ivAppIcon.setImageDrawable(getDrawable(R.drawable.com_aoleyun_browser));
|
||||
break;
|
||||
case "com.aoleyun.ailog":
|
||||
mViewDataBinding.ivAppIcon.setImageDrawable(getDrawable(R.drawable.com_aoleyun_ailog));
|
||||
break;
|
||||
default:
|
||||
case BuildConfig.APPLICATION_ID:
|
||||
mViewDataBinding.ivAppIcon.setImageDrawable(getDrawable(R.mipmap.ic_launcher));
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
finish();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public class BtnClick {
|
||||
public void empty(View view) {
|
||||
|
||||
}
|
||||
|
||||
public void exit(View view) {
|
||||
finish();
|
||||
}
|
||||
|
||||
public void upgrade(View view) {
|
||||
startService(new Intent(AppUpdateActivity.this, MainService.class));
|
||||
|
||||
if (mAppInfoData != null) {
|
||||
DownloadEntity entity = Aria.download(this).getFirstDownloadEntity(mAppInfoData.getUrl());
|
||||
if (null != entity) {
|
||||
if (entity.isComplete()) {
|
||||
JsonObject jsonObject = GsonUtils.getJsonObject(new Gson().toJson(mAppInfoData));
|
||||
Utils.ariaDownload(AppUpdateActivity.this, mAppInfoData.getUrl(), jsonObject);
|
||||
} else {
|
||||
if (entity.getState() == STATE_RUNNING) {
|
||||
Toaster.show("文件正在下载中");
|
||||
finish();
|
||||
} else {
|
||||
Aria.download(this).resumeAllTask();
|
||||
Toaster.show("正在下载");
|
||||
finish();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
JsonObject jsonObject = GsonUtils.getJsonObject(new Gson().toJson(mAppInfoData));
|
||||
Utils.ariaDownload(AppUpdateActivity.this, mAppInfoData.getUrl(), jsonObject);
|
||||
Toaster.show("正在下载更新");
|
||||
finish();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.aoleyun.sn.activity.update;
|
||||
|
||||
import com.trello.rxlifecycle4.android.ActivityEvent;
|
||||
import com.aoleyun.sn.base.mvvm.BaseViewModel;
|
||||
import com.aoleyun.sn.databinding.ActivityAppUpdateBinding;
|
||||
|
||||
public class AppUpdateViewModel extends BaseViewModel<ActivityAppUpdateBinding, ActivityEvent> {
|
||||
|
||||
@Override
|
||||
public ActivityAppUpdateBinding getVDBinding() {
|
||||
return binding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,117 @@
|
||||
package com.aoleyun.sn.activity.update;
|
||||
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.lifecycle.Observer;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
||||
import com.aoleyun.sn.R;
|
||||
import com.aoleyun.sn.adapter.AppUpdateAdapter;
|
||||
import com.aoleyun.sn.base.mvvm.BaseMvvmActivity;
|
||||
import com.aoleyun.sn.bean.AppUpdateInfo;
|
||||
import com.aoleyun.sn.databinding.ActivityUpdateBinding;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class UpdateActivity extends BaseMvvmActivity<UpdateViewModel, ActivityUpdateBinding> {
|
||||
private static final String TAG = "UpdateActivity";
|
||||
|
||||
private AppUpdateAdapter mAppUpdateAdapter;
|
||||
|
||||
@Override
|
||||
public int getLayoutId() {
|
||||
return R.layout.activity_update;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean setNightMode() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initDataBinding() {
|
||||
mViewModel.setCtx(this);
|
||||
mViewModel.setLifecycle(getLifecycleSubject());
|
||||
mViewModel.setVDBinding(mViewDataBinding);
|
||||
mViewDataBinding.setClick(new BtnClick());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initView() {
|
||||
mAppUpdateAdapter = new AppUpdateAdapter();
|
||||
mViewDataBinding.recyclerView.setLayoutManager(new LinearLayoutManager(UpdateActivity.this));
|
||||
mViewDataBinding.recyclerView.setAdapter(mAppUpdateAdapter);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initData() {
|
||||
mViewModel.getAppUpdateInfoListData().observe(this, new Observer<List<AppUpdateInfo>>() {
|
||||
@Override
|
||||
public void onChanged(List<AppUpdateInfo> appUpdateInfos) {
|
||||
if (appUpdateInfos == null || appUpdateInfos.size() == 0) {
|
||||
mViewDataBinding.clNodata.setVisibility(View.VISIBLE);
|
||||
mViewDataBinding.recyclerView.setVisibility(View.GONE);
|
||||
} else {
|
||||
mViewDataBinding.clNodata.setVisibility(View.GONE);
|
||||
mViewDataBinding.recyclerView.setVisibility(View.VISIBLE);
|
||||
mAppUpdateAdapter.setAppInfoList(appUpdateInfos);
|
||||
}
|
||||
}
|
||||
});
|
||||
mViewModel.checkAllAppUpdate();
|
||||
registmNewAppReceiver();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
if (mNewAppReceiver != null) {
|
||||
unregisterReceiver(mNewAppReceiver);
|
||||
}
|
||||
}
|
||||
|
||||
private void registmNewAppReceiver() {
|
||||
mNewAppReceiver = new NewAppReceiver();
|
||||
IntentFilter filter = new IntentFilter();
|
||||
filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
|
||||
filter.addAction(Intent.ACTION_PACKAGE_ADDED);
|
||||
filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
|
||||
filter.addAction(Intent.ACTION_PACKAGE_REPLACED);
|
||||
filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
|
||||
filter.addDataScheme("package");
|
||||
registerReceiver(mNewAppReceiver, filter);
|
||||
}
|
||||
|
||||
private NewAppReceiver mNewAppReceiver;
|
||||
|
||||
class NewAppReceiver extends BroadcastReceiver {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
String action = intent.getAction();
|
||||
Log.e(TAG, "onReceive: " + action);
|
||||
if (Intent.ACTION_PACKAGE_ADDED.equals(action)
|
||||
|| Intent.ACTION_PACKAGE_REMOVED.equals(action)
|
||||
|| Intent.ACTION_PACKAGE_REPLACED.equals(action)
|
||||
|| Intent.ACTION_PACKAGE_CHANGED.equals(action)
|
||||
) {
|
||||
mAppUpdateAdapter.notifyDataSetChanged();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public class BtnClick {
|
||||
public void exit(View view) {
|
||||
finish();
|
||||
}
|
||||
|
||||
public void empty(View view) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package com.aoleyun.sn.activity.update;
|
||||
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import com.aoleyun.sn.base.mvvm.BaseViewModel;
|
||||
import com.aoleyun.sn.bean.AppUpdateInfo;
|
||||
import com.aoleyun.sn.databinding.ActivityUpdateBinding;
|
||||
import com.aoleyun.sn.network.NetInterfaceManager;
|
||||
import com.trello.rxlifecycle4.android.ActivityEvent;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class UpdateViewModel extends BaseViewModel<ActivityUpdateBinding, ActivityEvent> {
|
||||
|
||||
@Override
|
||||
public ActivityUpdateBinding getVDBinding() {
|
||||
return binding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
|
||||
}
|
||||
|
||||
private MutableLiveData<List<AppUpdateInfo>> mAppUpdateInfoListData = new MutableLiveData<>();
|
||||
|
||||
public MutableLiveData<List<AppUpdateInfo>> getAppUpdateInfoListData() {
|
||||
return mAppUpdateInfoListData;
|
||||
}
|
||||
|
||||
public void checkAllAppUpdate() {
|
||||
NetInterfaceManager.getInstance().checkAoleyunUpdate(getLifecycle(), new NetInterfaceManager.UpdateCallback() {
|
||||
@Override
|
||||
public void onUpdate(List<AppUpdateInfo> appUpdateInfos) {
|
||||
mAppUpdateInfoListData.setValue(appUpdateInfos);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
/*****************************************************************************
|
||||
* WeakHandler.java
|
||||
*****************************************************************************
|
||||
* Copyright © 2012 VLC authors and VideoLAN
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
|
||||
*****************************************************************************/
|
||||
|
||||
package com.aoleyun.sn.activity.utils;
|
||||
|
||||
import android.os.Handler;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
|
||||
public abstract class WeakHandler<T> extends Handler {
|
||||
private WeakReference<T> mOwner;
|
||||
|
||||
public WeakHandler(T owner) {
|
||||
mOwner = new WeakReference<T>(owner);
|
||||
}
|
||||
|
||||
public T getOwner() {
|
||||
return mOwner.get();
|
||||
}
|
||||
}
|
||||
183
app/src/main/java/com/aoleyun/sn/adapter/AppUpdateAdapter.java
Normal file
183
app/src/main/java/com/aoleyun/sn/adapter/AppUpdateAdapter.java
Normal file
@@ -0,0 +1,183 @@
|
||||
package com.aoleyun.sn.adapter;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Build;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Button;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.aoleyun.sn.BuildConfig;
|
||||
import com.aoleyun.sn.R;
|
||||
import com.aoleyun.sn.bean.AppUpdateInfo;
|
||||
import com.aoleyun.sn.comm.PackageNames;
|
||||
import com.aoleyun.sn.gson.GsonUtils;
|
||||
import com.aoleyun.sn.utils.ApkUtils;
|
||||
import com.aoleyun.sn.utils.Utils;
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.hjq.toast.Toaster;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class AppUpdateAdapter extends RecyclerView.Adapter<AppUpdateAdapter.Holder> {
|
||||
private static final String TAG = "AppUpdateAdapter";
|
||||
|
||||
private Context mContext;
|
||||
private List<AppUpdateInfo> mAppInfoList;
|
||||
private PackageManager mPackageManager;
|
||||
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Holder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||
mContext = parent.getContext();
|
||||
mPackageManager = mContext.getPackageManager();
|
||||
return new Holder(LayoutInflater.from(mContext).inflate(R.layout.item_app_update, parent, false));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull Holder holder, int position) {
|
||||
AppUpdateInfo appInfo = mAppInfoList.get(position);
|
||||
String pkg = appInfo.getPackages();
|
||||
Drawable drawable;
|
||||
switch (pkg) {
|
||||
case BuildConfig.APPLICATION_ID:
|
||||
drawable = mContext.getDrawable(R.mipmap.ic_launcher);
|
||||
break;
|
||||
case PackageNames.APPSTORE:
|
||||
drawable = mContext.getDrawable(R.drawable.com_aoleyun_appstore);
|
||||
break;
|
||||
case PackageNames.DESKTOP:
|
||||
case PackageNames.AIUDUDESKTOP:
|
||||
drawable = mContext.getDrawable(R.drawable.com_aoleyun_os);
|
||||
break;
|
||||
case PackageNames.NOTIFICATIONS:
|
||||
drawable = mContext.getDrawable(R.drawable.com_aoleyun_info);
|
||||
break;
|
||||
case PackageNames.BROWSER:
|
||||
drawable = mContext.getDrawable(R.drawable.com_aoleyun_browser);
|
||||
break;
|
||||
case PackageNames.AILOG:
|
||||
drawable = mContext.getDrawable(R.drawable.com_aoleyun_ailog);
|
||||
break;
|
||||
default:
|
||||
drawable = mContext.getDrawable(R.drawable.exit_icon);
|
||||
}
|
||||
Glide.with(mContext).load(drawable).into(holder.imageView);
|
||||
if (!TextUtils.isEmpty(appInfo.getApp_name())) {
|
||||
holder.tv_app_name.setText(appInfo.getApp_name());
|
||||
}
|
||||
if (!TextUtils.isEmpty(appInfo.getVersion_name())) {
|
||||
holder.tv_app_version.setText("更新版本:" + appInfo.getVersion_name());
|
||||
}
|
||||
holder.tv_local_version.setText("安装版本:" + installedVersion(pkg));
|
||||
if (ApkUtils.isAvailable(mContext, appInfo.getPackages())) {
|
||||
if (isUpdate(appInfo)) {
|
||||
holder.bt_update.setEnabled(true);
|
||||
holder.bt_update.setText("更新");
|
||||
holder.bt_update.setBackground(mContext.getDrawable(R.drawable.bt_activation_selector));
|
||||
} else {
|
||||
holder.bt_update.setEnabled(false);
|
||||
holder.bt_update.setText("暂无");
|
||||
holder.bt_update.setBackground(mContext.getDrawable(R.drawable.bt_disable));
|
||||
}
|
||||
} else {
|
||||
holder.bt_update.setEnabled(true);
|
||||
holder.bt_update.setText("下载");
|
||||
holder.bt_update.setBackground(mContext.getDrawable(R.drawable.bt_activation_selector));
|
||||
}
|
||||
holder.bt_update.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
notifyDataSetChanged();
|
||||
if (isUpdate(appInfo)) {
|
||||
Toaster.show("开始下载:" + appInfo.getApp_name());
|
||||
JsonObject jsonObject = GsonUtils.getJsonObject(new Gson().toJson(appInfo));
|
||||
Utils.ariaDownload(mContext, appInfo.getUrl(), jsonObject);
|
||||
} else {
|
||||
Toaster.show(appInfo.getApp_name() + " 已是最新版本");
|
||||
Log.e(TAG, "onClick: 没有找到更新");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private boolean isUpdate(AppUpdateInfo appInfo) {
|
||||
String pkg = appInfo.getPackages();
|
||||
PackageInfo packageInfo = null;
|
||||
try {
|
||||
packageInfo = mPackageManager.getPackageInfo(pkg, 0);
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
if (packageInfo == null) {
|
||||
//未安装
|
||||
Log.e(TAG, "getAllAppUpdateInfos: " + pkg);
|
||||
return true;
|
||||
} else {
|
||||
long appVersionCode;
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
|
||||
appVersionCode = packageInfo.getLongVersionCode();
|
||||
} else {
|
||||
appVersionCode = packageInfo.versionCode;
|
||||
}
|
||||
long versionCode = appInfo.getVersion_code();
|
||||
//版本升级
|
||||
return appVersionCode < versionCode;
|
||||
}
|
||||
}
|
||||
|
||||
private String installedVersion(String pkg) {
|
||||
PackageInfo packageInfo = null;
|
||||
try {
|
||||
packageInfo = mPackageManager.getPackageInfo(pkg, 0);
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
if (packageInfo == null) {
|
||||
return "未安装";
|
||||
} else {
|
||||
return packageInfo.versionName;
|
||||
}
|
||||
}
|
||||
|
||||
public void setAppInfoList(List<AppUpdateInfo> appInfoList) {
|
||||
this.mAppInfoList = appInfoList;
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return mAppInfoList == null ? 0 : mAppInfoList.size();
|
||||
}
|
||||
|
||||
class Holder extends RecyclerView.ViewHolder {
|
||||
|
||||
ImageView imageView;
|
||||
TextView tv_app_name;
|
||||
TextView tv_app_version;
|
||||
TextView tv_local_version;
|
||||
Button bt_update;
|
||||
|
||||
public Holder(@NonNull View itemView) {
|
||||
super(itemView);
|
||||
imageView = itemView.findViewById(R.id.imageView);
|
||||
tv_app_name = itemView.findViewById(R.id.tv_app_name);
|
||||
tv_app_version = itemView.findViewById(R.id.tv_app_version);
|
||||
tv_local_version = itemView.findViewById(R.id.tv_local_version);
|
||||
bt_update = itemView.findViewById(R.id.bt_update);
|
||||
}
|
||||
}
|
||||
}
|
||||
338
app/src/main/java/com/aoleyun/sn/base/BaseApplication.java
Normal file
338
app/src/main/java/com/aoleyun/sn/base/BaseApplication.java
Normal file
@@ -0,0 +1,338 @@
|
||||
package com.aoleyun.sn.base;
|
||||
|
||||
import android.os.Build;
|
||||
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.PushInitConfig;
|
||||
import com.alibaba.sdk.android.push.noonesdk.PushServiceFactory;
|
||||
import com.aoleyun.sn.BuildConfig;
|
||||
import com.aoleyun.sn.manager.AllwinnerCubeMdmManager;
|
||||
import com.aoleyun.sn.manager.ConnectManager;
|
||||
import com.aoleyun.sn.manager.FileManager;
|
||||
import com.aoleyun.sn.manager.MapManager;
|
||||
import com.aoleyun.sn.network.NetInterfaceManager;
|
||||
import com.aoleyun.sn.push.PushManager;
|
||||
import com.aoleyun.sn.rlog.LogDBManager;
|
||||
import com.aoleyun.sn.utils.JgyUtils;
|
||||
import com.aoleyun.sn.utils.SystemUtils;
|
||||
import com.aoleyun.sn.utils.Utils;
|
||||
import com.aoleyun.sn.utils.WiFiUtils;
|
||||
import com.aoleyun.sn.utils.XAPKUtils;
|
||||
import com.arialyy.aria.core.Aria;
|
||||
import com.hjq.toast.Toaster;
|
||||
import com.tencent.bugly.crashreport.CrashReport;
|
||||
import com.tencent.mmkv.MMKV;
|
||||
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import io.reactivex.rxjava3.core.Observable;
|
||||
import io.reactivex.rxjava3.core.ObservableEmitter;
|
||||
import io.reactivex.rxjava3.core.ObservableOnSubscribe;
|
||||
import io.reactivex.rxjava3.core.Observer;
|
||||
import io.reactivex.rxjava3.disposables.Disposable;
|
||||
|
||||
public class BaseApplication extends MultiDexApplication {
|
||||
private static final String TAG = "BaseApplication";
|
||||
|
||||
@Override
|
||||
public void onCreate() {
|
||||
super.onCreate();
|
||||
init();
|
||||
//非主进程不初始化
|
||||
if (SystemUtils.isMainProcessName(this, Process.myPid())) {
|
||||
MapManager.init(this);
|
||||
MapManager.getInstance().initMap();
|
||||
}
|
||||
}
|
||||
|
||||
private void init() {
|
||||
if (!BuildConfig.DEBUG) {
|
||||
catchException();
|
||||
}
|
||||
|
||||
String rootDir = MMKV.initialize(this);
|
||||
Log.e(TAG, "mmkv root: " + rootDir);
|
||||
// 初始化 Toast 框架
|
||||
Toaster.init(this);
|
||||
JgyUtils.init(this);
|
||||
|
||||
CrashReport.initCrashReport(getApplicationContext(), "b16b3c7f1a", false);
|
||||
CrashReport.setDeviceId(this, Utils.getSerial(this));
|
||||
CrashReport.setDeviceModel(this, Utils.getSerial(this));
|
||||
CrashReport.setAppChannel(this, Build.MODEL);
|
||||
|
||||
xcrash.XCrash.init(this);
|
||||
|
||||
PushManager.init(this);
|
||||
initRegisterObservable();
|
||||
initAliasObservable();
|
||||
initTagObservable();
|
||||
aliyunPushInit();
|
||||
NetInterfaceManager.init(this);
|
||||
if (JgyUtils.isAllWinnerDevice()) {
|
||||
AllwinnerCubeMdmManager.init(this);
|
||||
}
|
||||
WiFiUtils.init(this);
|
||||
XAPKUtils.init(this);
|
||||
LogDBManager.init(this);
|
||||
FileManager.init(this);
|
||||
ConnectManager.init(this);
|
||||
|
||||
JgyUtils.getInstance().hookWebView();
|
||||
Aria.init(this);
|
||||
Aria.get(this).getDownloadConfig().setMaxTaskNum(1);
|
||||
Aria.get(this).getDownloadConfig().setConvertSpeed(true);
|
||||
|
||||
}
|
||||
|
||||
private void catchException() {
|
||||
Thread.setDefaultUncaughtExceptionHandler(
|
||||
new Thread.UncaughtExceptionHandler() {
|
||||
@Override
|
||||
public void uncaughtException(Thread t, Throwable e) {
|
||||
Log.e("捕获异常子线程:", Thread.currentThread().getName() +
|
||||
"在:" + e.getStackTrace()[0].getClassName());
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
);
|
||||
//下面是新增方法!
|
||||
new Handler(Looper.getMainLooper()).post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
while (true) {
|
||||
try {
|
||||
Looper.loop(); //会先执行这个方法,然后在执行下面的异常捕获方法!
|
||||
} catch (Exception e) {
|
||||
Log.e("捕获异常主线程:", Thread.currentThread().getName() + "在:" + e.getStackTrace()[0].getClassName());
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
interface OnRegisterResult {
|
||||
void onResult(String code);
|
||||
}
|
||||
|
||||
private static OnRegisterResult mOnRegisterResult;
|
||||
|
||||
private void initRegisterObservable() {
|
||||
Log.e(TAG, "initTagObservable: ");
|
||||
Observable.create(new ObservableOnSubscribe<String>() {
|
||||
@Override
|
||||
public void subscribe(ObservableEmitter<String> emitter) {
|
||||
mOnRegisterResult = new OnRegisterResult() {
|
||||
@Override
|
||||
public void onResult(String code) {
|
||||
Log.e("initRegisterObservable", "onResult: " + code);
|
||||
emitter.onNext(code);
|
||||
}
|
||||
};
|
||||
}
|
||||
}).throttleLast(60, TimeUnit.SECONDS)
|
||||
.subscribe(new Observer<String>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String code) {
|
||||
Log.e("initRegisterObservable", "onNext: " + code);
|
||||
switch (code) {
|
||||
case "PUSH_20110":
|
||||
break;
|
||||
default:
|
||||
Log.e("initRegisterObservable", "onNext: 重新注册aliyunPush");
|
||||
aliyunPushInit();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(Throwable e) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onComplete() {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
private void aliyunPushInit() {
|
||||
// 特殊场景 需要定时拉起channel
|
||||
PushInitConfig config = new PushInitConfig.Builder()
|
||||
.application(this)
|
||||
.loopStartChannel(true)
|
||||
.loopInterval(60 * 10 * 1000)
|
||||
.build();
|
||||
PushServiceFactory.init(config);
|
||||
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());
|
||||
setAlias();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailed(String errorCode, String errorMessage) {
|
||||
Log.e("AliyunPush", "init cloudchannel failed -- errorcode:" + errorCode + " -- errorMessage:" + errorMessage);
|
||||
mOnRegisterResult.onResult(errorCode);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
interface OnAliasResult {
|
||||
void onResult(String code);
|
||||
}
|
||||
|
||||
private static OnAliasResult mOnAliasResult;
|
||||
|
||||
private void initAliasObservable() {
|
||||
Log.e(TAG, "initAliasObservable: ");
|
||||
Observable.create(new ObservableOnSubscribe<String>() {
|
||||
@Override
|
||||
public void subscribe(ObservableEmitter<String> emitter) throws Exception {
|
||||
mOnAliasResult = new OnAliasResult() {
|
||||
@Override
|
||||
public void onResult(String code) {
|
||||
Log.e("initAliasObservable", "onResult: " + code);
|
||||
emitter.onNext(code);
|
||||
}
|
||||
};
|
||||
}
|
||||
}).throttleLast(60, TimeUnit.SECONDS)
|
||||
.subscribe(new Observer<String>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String code) {
|
||||
Log.e("initAliasObservable", "onNext: " + code);
|
||||
switch (code) {
|
||||
case "PUSH_20101":
|
||||
aliyunPushInit();
|
||||
break;
|
||||
default:
|
||||
setAlias();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(Throwable e) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onComplete() {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void setAlias() {
|
||||
final CloudPushService pushService = PushServiceFactory.getCloudPushService();
|
||||
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);
|
||||
mOnAliasResult.onResult(errorCode);
|
||||
}
|
||||
});
|
||||
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");
|
||||
mOnAliasResult.onResult(errorCode);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public static void onTagOperatorResult(String code) {
|
||||
onTagResult.onResult(code);
|
||||
}
|
||||
|
||||
private static OnTagResult onTagResult;
|
||||
|
||||
interface OnTagResult {
|
||||
void onResult(String code);
|
||||
}
|
||||
|
||||
private void initTagObservable() {
|
||||
Log.e(TAG, "initTagObservable: ");
|
||||
Observable.create(new ObservableOnSubscribe<String>() {
|
||||
@Override
|
||||
public void subscribe(ObservableEmitter<String> emitter) {
|
||||
onTagResult = new OnTagResult() {
|
||||
@Override
|
||||
public void onResult(String code) {
|
||||
Log.e("initTagObservable", "onResult: " + code);
|
||||
emitter.onNext(code);
|
||||
}
|
||||
};
|
||||
}
|
||||
}).throttleLast(60, TimeUnit.SECONDS)
|
||||
.subscribe(new Observer<String>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(String code) {
|
||||
Log.e("initTagObservable", "onNext: " + code);
|
||||
switch (code) {
|
||||
case "PUSH_20101":
|
||||
aliyunPushInit();
|
||||
break;
|
||||
default:
|
||||
NetInterfaceManager.getInstance().setPushTags();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(Throwable e) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onComplete() {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
package com.aoleyun.sn.base;
|
||||
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.annotation.CallSuper;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.aoleyun.sn.R;
|
||||
import com.aoleyun.sn.base.rx.BaseRxActivity;
|
||||
import com.zackratos.ultimatebarx.ultimatebarx.java.UltimateBarX;
|
||||
|
||||
public abstract class BaseDataBindingActivity extends BaseRxActivity {
|
||||
|
||||
public BaseDataBindingActivity() {
|
||||
super();
|
||||
}
|
||||
|
||||
@Override
|
||||
@CallSuper
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
// StatusBarUtil.init(this);
|
||||
UltimateBarX.statusBar(this)
|
||||
.transparent()
|
||||
.colorRes(R.color.colorPrimaryDark)
|
||||
.light(setNightMode())
|
||||
.fitWindow(setfitWindow())
|
||||
.apply();
|
||||
UltimateBarX.navigationBar(this)
|
||||
.transparent()
|
||||
.colorRes(R.color.colorPrimaryDark)
|
||||
.light(setNightMode())
|
||||
.fitWindow(setfitWindow())
|
||||
.apply();
|
||||
initDataBinding();
|
||||
initView();
|
||||
initData();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return 是否是黑色状态栏
|
||||
*/
|
||||
// protected abstract boolean setNightMode();
|
||||
public boolean setNightMode() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return 是否是入侵
|
||||
*/
|
||||
// protected abstract boolean setNightMode();
|
||||
public boolean setfitWindow() {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
protected abstract void initDataBinding();
|
||||
|
||||
/**
|
||||
* 初始化视图
|
||||
*/
|
||||
protected abstract void initView();
|
||||
|
||||
/**
|
||||
* 初始化数据
|
||||
*/
|
||||
protected abstract void initData();
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
package com.aoleyun.sn.base;
|
||||
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.annotation.CallSuper;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.aoleyun.sn.R;
|
||||
import com.aoleyun.sn.base.rx.BaseRxActivity;
|
||||
import com.zackratos.ultimatebarx.ultimatebarx.java.UltimateBarX;
|
||||
|
||||
public abstract class BaseTransparentActivity extends BaseRxActivity {
|
||||
|
||||
public BaseTransparentActivity() {
|
||||
super();
|
||||
}
|
||||
|
||||
@Override
|
||||
@CallSuper
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
// StatusBarUtil.init(this);
|
||||
UltimateBarX.statusBar(this)
|
||||
.transparent()
|
||||
.colorRes(R.color.colorPrimaryDark)
|
||||
.light(setNightMode())
|
||||
.fitWindow(setfitWindow())
|
||||
.apply();
|
||||
UltimateBarX.navigationBar(this)
|
||||
.transparent()
|
||||
.colorRes(R.color.colorPrimaryDark)
|
||||
.light(setNightMode())
|
||||
.fitWindow(setfitWindow())
|
||||
.apply();
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置布局
|
||||
*/
|
||||
protected abstract int getLayoutId();
|
||||
|
||||
/**
|
||||
* @return 是否是黑色状态栏
|
||||
*/
|
||||
// protected abstract boolean setNightMode();
|
||||
public boolean setNightMode() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return 是否是入侵
|
||||
*/
|
||||
// protected abstract boolean setNightMode();
|
||||
public boolean setfitWindow() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
30
app/src/main/java/com/aoleyun/sn/base/CustomGlideModule.java
Normal file
30
app/src/main/java/com/aoleyun/sn/base/CustomGlideModule.java
Normal file
@@ -0,0 +1,30 @@
|
||||
package com.aoleyun.sn.base;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.bumptech.glide.GlideBuilder;
|
||||
import com.bumptech.glide.annotation.GlideModule;
|
||||
import com.bumptech.glide.load.engine.bitmap_recycle.LruBitmapPool;
|
||||
import com.bumptech.glide.load.engine.cache.InternalCacheDiskCacheFactory;
|
||||
import com.bumptech.glide.load.engine.cache.LruResourceCache;
|
||||
import com.bumptech.glide.module.AppGlideModule;
|
||||
|
||||
@GlideModule
|
||||
public class CustomGlideModule extends AppGlideModule {
|
||||
@Override
|
||||
public void applyOptions(@NonNull Context context, @NonNull GlideBuilder builder) {
|
||||
super.applyOptions(context, builder);
|
||||
//内存缓存
|
||||
int memoryCacheSizeBytes = 1024 * 1024 * 100; // 20mb
|
||||
builder.setMemoryCache(new LruResourceCache(memoryCacheSizeBytes));
|
||||
//Bitmap 池
|
||||
int bitmapPoolSizeBytes = 1024 * 1024 * 100; // 30mb
|
||||
builder.setBitmapPool(new LruBitmapPool(bitmapPoolSizeBytes));
|
||||
//磁盘缓存
|
||||
int diskCacheSizeBytes = 1024 * 1024 * 100; // 100MB
|
||||
builder.setDiskCache(new InternalCacheDiskCacheFactory(context, diskCacheSizeBytes));
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.aoleyun.sn.base.mvp;
|
||||
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.annotation.CallSuper;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.aoleyun.sn.base.BaseTransparentActivity;
|
||||
|
||||
public abstract class BaseMvpActivity extends BaseTransparentActivity {
|
||||
|
||||
public BaseMvpActivity() {
|
||||
super();
|
||||
}
|
||||
|
||||
@Override
|
||||
@CallSuper
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(getLayoutId());
|
||||
initView();
|
||||
initData();
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化视图
|
||||
*/
|
||||
protected abstract void initView();
|
||||
|
||||
/**
|
||||
* 初始化数据
|
||||
*/
|
||||
protected abstract void initData();
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mjsheng.myappstore.base;
|
||||
package com.aoleyun.sn.base.mvp;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
@@ -7,4 +7,4 @@ public interface BasePresenter<V extends BaseView> {
|
||||
void attachView(@NonNull V view);
|
||||
|
||||
void detachView();
|
||||
}
|
||||
}
|
||||
4
app/src/main/java/com/aoleyun/sn/base/mvp/BaseView.java
Normal file
4
app/src/main/java/com/aoleyun/sn/base/mvp/BaseView.java
Normal file
@@ -0,0 +1,4 @@
|
||||
package com.aoleyun.sn.base.mvp;
|
||||
|
||||
public interface BaseView {
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
package com.aoleyun.sn.base.mvvm;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
import androidx.databinding.ViewDataBinding;
|
||||
import androidx.lifecycle.ViewModel;
|
||||
import androidx.lifecycle.ViewModelProvider;
|
||||
|
||||
import com.aoleyun.sn.base.BaseTransparentActivity;
|
||||
|
||||
import java.lang.reflect.Modifier;
|
||||
import java.lang.reflect.ParameterizedType;
|
||||
|
||||
public abstract class BaseMvvmActivity<VM extends ViewModel, VDB extends ViewDataBinding> extends BaseTransparentActivity {
|
||||
private static final String TAG = "BaseMvvmActivity";
|
||||
|
||||
protected VM mViewModel;
|
||||
protected VDB mViewDataBinding;
|
||||
protected Class<VM> vmClass;
|
||||
|
||||
@Override
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
//ViewDataBinding
|
||||
mViewDataBinding = DataBindingUtil.setContentView(this, getLayoutId());
|
||||
mViewDataBinding.setLifecycleOwner(this);
|
||||
//ViewModel
|
||||
vmClass = (Class<VM>) ((ParameterizedType) this.getClass().getGenericSuperclass()).getActualTypeArguments()[0];
|
||||
boolean isAbstract = Modifier.isAbstract(vmClass.getModifiers());
|
||||
Log.e(TAG, "isLocalClass:" + vmClass.getSimpleName().equals(ViewModel.class.getSimpleName()) + " isAbstract:" + isAbstract);
|
||||
if (!isAbstract) {//不是一个抽象类
|
||||
mViewModel = new ViewModelProvider(this).get(vmClass);
|
||||
}
|
||||
initDataBinding();
|
||||
initView();
|
||||
initData();
|
||||
}
|
||||
|
||||
protected abstract void initDataBinding();
|
||||
|
||||
/**
|
||||
* 初始化视图
|
||||
*/
|
||||
protected abstract void initView();
|
||||
|
||||
/**
|
||||
* 初始化数据
|
||||
*/
|
||||
protected abstract void initData();
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
package com.aoleyun.sn.base.mvvm;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.databinding.ViewDataBinding;
|
||||
import androidx.lifecycle.ViewModel;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
|
||||
import io.reactivex.rxjava3.subjects.BehaviorSubject;
|
||||
|
||||
/**
|
||||
* 所有viewmodel的基类
|
||||
*/
|
||||
public abstract class BaseViewModel<VDB extends ViewDataBinding, T> extends ViewModel implements ViewDataBindingCallback {
|
||||
|
||||
/**
|
||||
* 当前viewmodel对应的页面binding
|
||||
*/
|
||||
protected VDB binding;
|
||||
|
||||
@Override
|
||||
public void setVDBinding(ViewDataBinding vdBinding) {
|
||||
|
||||
binding = (VDB) vdBinding;
|
||||
}
|
||||
|
||||
@Override
|
||||
public VDB getVDBinding() {
|
||||
if (binding == null) {
|
||||
throw new NullPointerException("BaseViewModel >> getVDBinding >> null!!!");
|
||||
}
|
||||
return binding;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 上下文
|
||||
*/
|
||||
private WeakReference<Context> ctx;
|
||||
|
||||
@Override
|
||||
public void setCtx(Context context) {
|
||||
if (ctx == null) {
|
||||
ctx = new WeakReference<>(context);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Context getCtx() {
|
||||
if (ctx == null) {
|
||||
throw new NullPointerException("BaseViewModel >> getCtx >> null!!!");
|
||||
}
|
||||
return ctx.get();
|
||||
}
|
||||
|
||||
|
||||
public abstract void onDestroy();
|
||||
|
||||
private BehaviorSubject<T> mBehaviorSubject;
|
||||
|
||||
@Override
|
||||
public void setLifecycle(BehaviorSubject subject) {
|
||||
this.mBehaviorSubject = (BehaviorSubject<T>) subject;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BehaviorSubject<T> getLifecycle() {
|
||||
return mBehaviorSubject;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.aoleyun.sn.base.mvvm;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.databinding.ViewDataBinding;
|
||||
|
||||
import io.reactivex.rxjava3.subjects.BehaviorSubject;
|
||||
|
||||
public interface ViewDataBindingCallback<VDB extends ViewDataBinding, T> {
|
||||
|
||||
void setVDBinding(VDB binding);
|
||||
|
||||
VDB getVDBinding() throws NullPointerException;
|
||||
|
||||
void setCtx(Context context);
|
||||
|
||||
Context getCtx() throws NullPointerException;
|
||||
|
||||
void setLifecycle(BehaviorSubject<T> subject);
|
||||
|
||||
BehaviorSubject<T> getLifecycle();
|
||||
}
|
||||
94
app/src/main/java/com/aoleyun/sn/base/rx/BaseRxActivity.java
Normal file
94
app/src/main/java/com/aoleyun/sn/base/rx/BaseRxActivity.java
Normal file
@@ -0,0 +1,94 @@
|
||||
package com.aoleyun.sn.base.rx;
|
||||
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.annotation.CallSuper;
|
||||
import androidx.annotation.CheckResult;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
import com.trello.rxlifecycle4.LifecycleProvider;
|
||||
import com.trello.rxlifecycle4.LifecycleTransformer;
|
||||
import com.trello.rxlifecycle4.RxLifecycle;
|
||||
import com.trello.rxlifecycle4.android.ActivityEvent;
|
||||
import com.trello.rxlifecycle4.android.RxLifecycleAndroid;
|
||||
|
||||
import io.reactivex.rxjava3.core.Observable;
|
||||
import io.reactivex.rxjava3.subjects.BehaviorSubject;
|
||||
|
||||
/**
|
||||
* {@link com.trello.rxlifecycle4.components.RxActivity}
|
||||
* copied form RxActivity}
|
||||
*/
|
||||
public abstract class BaseRxActivity extends AppCompatActivity implements LifecycleProvider<ActivityEvent> {
|
||||
private final BehaviorSubject<ActivityEvent> lifecycleSubject = BehaviorSubject.create();
|
||||
|
||||
public BehaviorSubject<ActivityEvent> getLifecycleSubject() {
|
||||
return lifecycleSubject;
|
||||
}
|
||||
|
||||
@Override
|
||||
@NonNull
|
||||
@CheckResult
|
||||
public final Observable<ActivityEvent> lifecycle() {
|
||||
return lifecycleSubject.hide();
|
||||
}
|
||||
|
||||
@Override
|
||||
@NonNull
|
||||
@CheckResult
|
||||
public final <T> LifecycleTransformer<T> bindUntilEvent(@NonNull ActivityEvent event) {
|
||||
return RxLifecycle.bindUntilEvent(lifecycleSubject, event);
|
||||
}
|
||||
|
||||
@Override
|
||||
@NonNull
|
||||
@CheckResult
|
||||
public final <T> LifecycleTransformer<T> bindToLifecycle() {
|
||||
return RxLifecycleAndroid.bindActivity(lifecycleSubject);
|
||||
}
|
||||
|
||||
@Override
|
||||
@CallSuper
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
lifecycleSubject.onNext(ActivityEvent.CREATE);
|
||||
}
|
||||
|
||||
@Override
|
||||
@CallSuper
|
||||
protected void onStart() {
|
||||
super.onStart();
|
||||
lifecycleSubject.onNext(ActivityEvent.START);
|
||||
}
|
||||
|
||||
@Override
|
||||
@CallSuper
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
lifecycleSubject.onNext(ActivityEvent.RESUME);
|
||||
}
|
||||
|
||||
@Override
|
||||
@CallSuper
|
||||
protected void onPause() {
|
||||
lifecycleSubject.onNext(ActivityEvent.PAUSE);
|
||||
super.onPause();
|
||||
}
|
||||
|
||||
@Override
|
||||
@CallSuper
|
||||
protected void onStop() {
|
||||
lifecycleSubject.onNext(ActivityEvent.STOP);
|
||||
super.onStop();
|
||||
}
|
||||
|
||||
@Override
|
||||
@CallSuper
|
||||
protected void onDestroy() {
|
||||
lifecycleSubject.onNext(ActivityEvent.DESTROY);
|
||||
super.onDestroy();
|
||||
}
|
||||
}
|
||||
|
||||
197
app/src/main/java/com/aoleyun/sn/bean/AdminAppInfo.java
Normal file
197
app/src/main/java/com/aoleyun/sn/bean/AdminAppInfo.java
Normal file
@@ -0,0 +1,197 @@
|
||||
package com.aoleyun.sn.bean;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class AdminAppInfo implements Serializable {
|
||||
private static final long serialVersionUID = -4152412763486673833L;
|
||||
|
||||
int id;
|
||||
String app_name;
|
||||
String app_img;
|
||||
String app_developer;
|
||||
long app_size;
|
||||
String app_package;
|
||||
String app_version_name;
|
||||
long app_version_code;
|
||||
String app_md5;
|
||||
float app_score;
|
||||
String app_preview1;
|
||||
String app_preview2;
|
||||
String app_preview3;
|
||||
String app_url;
|
||||
String app_remarks;
|
||||
String app_desc;
|
||||
int is_promote;
|
||||
int weight;
|
||||
String discount;
|
||||
String use_type;
|
||||
int is_autodown;
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getApp_name() {
|
||||
return app_name;
|
||||
}
|
||||
|
||||
public void setApp_name(String app_name) {
|
||||
this.app_name = app_name;
|
||||
}
|
||||
|
||||
public String getApp_img() {
|
||||
return app_img;
|
||||
}
|
||||
|
||||
public void setApp_img(String app_img) {
|
||||
this.app_img = app_img;
|
||||
}
|
||||
|
||||
public String getApp_developer() {
|
||||
return app_developer;
|
||||
}
|
||||
|
||||
public void setApp_developer(String app_developer) {
|
||||
this.app_developer = app_developer;
|
||||
}
|
||||
|
||||
public long getApp_size() {
|
||||
return app_size;
|
||||
}
|
||||
|
||||
public void setApp_size(long app_size) {
|
||||
this.app_size = app_size;
|
||||
}
|
||||
|
||||
public String getApp_package() {
|
||||
return app_package;
|
||||
}
|
||||
|
||||
public void setApp_package(String app_package) {
|
||||
this.app_package = app_package;
|
||||
}
|
||||
|
||||
public String getApp_version_name() {
|
||||
return app_version_name;
|
||||
}
|
||||
|
||||
public void setApp_version_name(String app_version_name) {
|
||||
this.app_version_name = app_version_name;
|
||||
}
|
||||
|
||||
public long getApp_version_code() {
|
||||
return app_version_code;
|
||||
}
|
||||
|
||||
public void setApp_version_code(long app_version_code) {
|
||||
this.app_version_code = app_version_code;
|
||||
}
|
||||
|
||||
public String getApp_md5() {
|
||||
return app_md5;
|
||||
}
|
||||
|
||||
public void setApp_md5(String app_md5) {
|
||||
this.app_md5 = app_md5;
|
||||
}
|
||||
|
||||
public float getApp_score() {
|
||||
return app_score;
|
||||
}
|
||||
|
||||
public void setApp_score(float app_score) {
|
||||
this.app_score = app_score;
|
||||
}
|
||||
|
||||
public String getApp_preview1() {
|
||||
return app_preview1;
|
||||
}
|
||||
|
||||
public void setApp_preview1(String app_preview1) {
|
||||
this.app_preview1 = app_preview1;
|
||||
}
|
||||
|
||||
public String getApp_preview2() {
|
||||
return app_preview2;
|
||||
}
|
||||
|
||||
public void setApp_preview2(String app_preview2) {
|
||||
this.app_preview2 = app_preview2;
|
||||
}
|
||||
|
||||
public String getApp_preview3() {
|
||||
return app_preview3;
|
||||
}
|
||||
|
||||
public void setApp_preview3(String app_preview3) {
|
||||
this.app_preview3 = app_preview3;
|
||||
}
|
||||
|
||||
public String getApp_url() {
|
||||
return app_url;
|
||||
}
|
||||
|
||||
public void setApp_url(String app_url) {
|
||||
this.app_url = app_url;
|
||||
}
|
||||
|
||||
public String getApp_remarks() {
|
||||
return app_remarks;
|
||||
}
|
||||
|
||||
public void setApp_remarks(String app_remarks) {
|
||||
this.app_remarks = app_remarks;
|
||||
}
|
||||
|
||||
public String getApp_desc() {
|
||||
return app_desc;
|
||||
}
|
||||
|
||||
public void setApp_desc(String app_desc) {
|
||||
this.app_desc = app_desc;
|
||||
}
|
||||
|
||||
public int getIs_promote() {
|
||||
return is_promote;
|
||||
}
|
||||
|
||||
public void setIs_promote(int is_promote) {
|
||||
this.is_promote = is_promote;
|
||||
}
|
||||
|
||||
public int getWeight() {
|
||||
return weight;
|
||||
}
|
||||
|
||||
public void setWeight(int weight) {
|
||||
this.weight = weight;
|
||||
}
|
||||
|
||||
public String getDiscount() {
|
||||
return discount;
|
||||
}
|
||||
|
||||
public void setDiscount(String discount) {
|
||||
this.discount = discount;
|
||||
}
|
||||
|
||||
public String getUse_type() {
|
||||
return use_type;
|
||||
}
|
||||
|
||||
public void setUse_type(String use_type) {
|
||||
this.use_type = use_type;
|
||||
}
|
||||
|
||||
public int getIs_autodown() {
|
||||
return is_autodown;
|
||||
}
|
||||
|
||||
public void setIs_autodown(int is_autodown) {
|
||||
this.is_autodown = is_autodown;
|
||||
}
|
||||
}
|
||||
174
app/src/main/java/com/aoleyun/sn/bean/ApkInfoPush.java
Normal file
174
app/src/main/java/com/aoleyun/sn/bean/ApkInfoPush.java
Normal file
@@ -0,0 +1,174 @@
|
||||
package com.aoleyun.sn.bean;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class ApkInfoPush implements Serializable {
|
||||
private static final long serialVersionUID = 1566912665439013710L;
|
||||
|
||||
int app_id;
|
||||
String app_name;
|
||||
@SerializedName(value = "package_name", alternate = {"app_package", "package"})
|
||||
String package_name;
|
||||
String app_version_name;
|
||||
long app_version_code;
|
||||
long app_size;
|
||||
String app_url;
|
||||
String app_img;
|
||||
String app_md5;
|
||||
|
||||
int app_attribution;
|
||||
int app_forceinstall;
|
||||
int is_auto;
|
||||
int is_network;
|
||||
int is_slide;
|
||||
int is_upgrade;
|
||||
int is_appstore;
|
||||
int is_notification;
|
||||
int is_dynamic_perm;
|
||||
|
||||
public int getApp_id() {
|
||||
return app_id;
|
||||
}
|
||||
|
||||
public void setApp_id(int app_id) {
|
||||
this.app_id = app_id;
|
||||
}
|
||||
|
||||
public String getApp_name() {
|
||||
return app_name;
|
||||
}
|
||||
|
||||
public void setApp_name(String app_name) {
|
||||
this.app_name = app_name;
|
||||
}
|
||||
|
||||
public String getPackage_name() {
|
||||
return package_name;
|
||||
}
|
||||
|
||||
public void setPackage_name(String package_name) {
|
||||
this.package_name = package_name;
|
||||
}
|
||||
|
||||
public String getApp_version_name() {
|
||||
return app_version_name;
|
||||
}
|
||||
|
||||
public void setApp_version_name(String app_version_name) {
|
||||
this.app_version_name = app_version_name;
|
||||
}
|
||||
|
||||
public long getApp_version_code() {
|
||||
return app_version_code;
|
||||
}
|
||||
|
||||
public void setApp_version_code(long app_version_code) {
|
||||
this.app_version_code = app_version_code;
|
||||
}
|
||||
|
||||
public long getApp_size() {
|
||||
return app_size;
|
||||
}
|
||||
|
||||
public void setApp_size(long app_size) {
|
||||
this.app_size = app_size;
|
||||
}
|
||||
|
||||
public String getApp_url() {
|
||||
return app_url;
|
||||
}
|
||||
|
||||
public void setApp_url(String app_url) {
|
||||
this.app_url = app_url;
|
||||
}
|
||||
|
||||
public String getApp_img() {
|
||||
return app_img;
|
||||
}
|
||||
|
||||
public void setApp_img(String app_img) {
|
||||
this.app_img = app_img;
|
||||
}
|
||||
|
||||
public String getApp_md5() {
|
||||
return app_md5;
|
||||
}
|
||||
|
||||
public void setApp_md5(String app_md5) {
|
||||
this.app_md5 = app_md5;
|
||||
}
|
||||
|
||||
public int getApp_attribution() {
|
||||
return app_attribution;
|
||||
}
|
||||
|
||||
public void setApp_attribution(int app_attribution) {
|
||||
this.app_attribution = app_attribution;
|
||||
}
|
||||
|
||||
public int getApp_forceinstall() {
|
||||
return app_forceinstall;
|
||||
}
|
||||
|
||||
public void setApp_forceinstall(int app_forceinstall) {
|
||||
this.app_forceinstall = app_forceinstall;
|
||||
}
|
||||
|
||||
public int getIs_auto() {
|
||||
return is_auto;
|
||||
}
|
||||
|
||||
public void setIs_auto(int is_auto) {
|
||||
this.is_auto = is_auto;
|
||||
}
|
||||
|
||||
public int getIs_network() {
|
||||
return is_network;
|
||||
}
|
||||
|
||||
public void setIs_network(int is_network) {
|
||||
this.is_network = is_network;
|
||||
}
|
||||
|
||||
public int getIs_slide() {
|
||||
return is_slide;
|
||||
}
|
||||
|
||||
public void setIs_slide(int is_slide) {
|
||||
this.is_slide = is_slide;
|
||||
}
|
||||
|
||||
public int getIs_upgrade() {
|
||||
return is_upgrade;
|
||||
}
|
||||
|
||||
public void setIs_upgrade(int is_upgrade) {
|
||||
this.is_upgrade = is_upgrade;
|
||||
}
|
||||
|
||||
public int getIs_appstore() {
|
||||
return is_appstore;
|
||||
}
|
||||
|
||||
public void setIs_appstore(int is_appstore) {
|
||||
this.is_appstore = is_appstore;
|
||||
}
|
||||
|
||||
public int getIs_notification() {
|
||||
return is_notification;
|
||||
}
|
||||
|
||||
public void setIs_notification(int is_notification) {
|
||||
this.is_notification = is_notification;
|
||||
}
|
||||
|
||||
public int getIs_dynamic_perm() {
|
||||
return is_dynamic_perm;
|
||||
}
|
||||
|
||||
public void setIs_dynamic_perm(int is_dynamic_perm) {
|
||||
this.is_dynamic_perm = is_dynamic_perm;
|
||||
}
|
||||
}
|
||||
27
app/src/main/java/com/aoleyun/sn/bean/AppAttr.java
Normal file
27
app/src/main/java/com/aoleyun/sn/bean/AppAttr.java
Normal file
@@ -0,0 +1,27 @@
|
||||
package com.aoleyun.sn.bean;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class AppAttr implements Serializable {
|
||||
private static final long serialVersionUID = -4530860765778383316L;
|
||||
|
||||
String app_package;
|
||||
/*应用是否允许打开 0不允许 1允许*/
|
||||
int is_open;
|
||||
|
||||
public String getApp_package() {
|
||||
return app_package;
|
||||
}
|
||||
|
||||
public void setApp_package(String app_package) {
|
||||
this.app_package = app_package;
|
||||
}
|
||||
|
||||
public int getIs_open() {
|
||||
return is_open;
|
||||
}
|
||||
|
||||
public void setIs_open(int is_open) {
|
||||
this.is_open = is_open;
|
||||
}
|
||||
}
|
||||
@@ -1,26 +1,40 @@
|
||||
package com.mjsheng.myappstore.bean;
|
||||
package com.aoleyun.sn.bean;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonParser;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* Created by Administrator on 2016/10/9.
|
||||
*/
|
||||
public class AppDateInfo implements Serializable {
|
||||
private static final long serialVersionUID = 8711338410072780246L;
|
||||
|
||||
public String id;
|
||||
public String app_name;
|
||||
public String app_package;
|
||||
public String app_version_name;
|
||||
public String app_desc;
|
||||
public String app_downloads;
|
||||
public String app_size;
|
||||
public String app_img;
|
||||
public String app_url;
|
||||
public String app_createtime;
|
||||
public String app_score;
|
||||
public String xitong_id;
|
||||
public String zixitong_id;
|
||||
public String app_tag;
|
||||
String id;
|
||||
String app_id;
|
||||
String app_name;
|
||||
String app_package;
|
||||
String app_version_name;
|
||||
long app_version_code;
|
||||
String app_desc;
|
||||
String app_downloads;
|
||||
String app_size;
|
||||
String app_img;
|
||||
String app_url;
|
||||
String app_createtime;
|
||||
String app_score;
|
||||
String xitong_id;
|
||||
String zixitong_id;
|
||||
String app_tag;
|
||||
String app_md5;
|
||||
|
||||
public String getApp_id() {
|
||||
return app_id;
|
||||
}
|
||||
|
||||
public void setApp_id(String app_id) {
|
||||
this.app_id = app_id;
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
return app_tag;
|
||||
@@ -142,23 +156,25 @@ public class AppDateInfo implements Serializable {
|
||||
this.app_createtime = app_time;
|
||||
}
|
||||
|
||||
public String getApp_md5() {
|
||||
return app_md5;
|
||||
}
|
||||
|
||||
public void setApp_md5(String app_md5) {
|
||||
this.app_md5 = app_md5;
|
||||
}
|
||||
|
||||
public long getApp_version_code() {
|
||||
return app_version_code;
|
||||
}
|
||||
|
||||
public void setApp_version_code(long app_version_code) {
|
||||
this.app_version_code = app_version_code;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public String toString() {
|
||||
return "AppDateInfo{" +
|
||||
"id='" + id + '\'' +
|
||||
", app_name='" + app_name + '\'' +
|
||||
", app_package='" + app_package + '\'' +
|
||||
", app_version_name='" + app_version_name + '\'' +
|
||||
", app_desc='" + app_desc + '\'' +
|
||||
", app_downloads='" + app_downloads + '\'' +
|
||||
", app_size='" + app_size + '\'' +
|
||||
", app_img='" + app_img + '\'' +
|
||||
", app_url='" + app_url + '\'' +
|
||||
", app_createtime='" + app_createtime + '\'' +
|
||||
", app_score='" + app_score + '\'' +
|
||||
", xitong_id='" + xitong_id + '\'' +
|
||||
", zixitong_id='" + zixitong_id + '\'' +
|
||||
", app_tag='" + app_tag + '\'' +
|
||||
'}';
|
||||
return JsonParser.parseString(new Gson().toJson(this)).getAsJsonObject().toString();
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mjsheng.myappstore.bean;
|
||||
package com.aoleyun.sn.bean;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@@ -7,6 +7,8 @@ import java.io.Serializable;
|
||||
*/
|
||||
public class AppDownloadInfo implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = -7868862477686450613L;
|
||||
|
||||
private String url; //文件URL
|
||||
private String targetPath; //保存文件地址
|
||||
private String fileName; //保存的文件名
|
||||
37
app/src/main/java/com/aoleyun/sn/bean/AppID.java
Normal file
37
app/src/main/java/com/aoleyun/sn/bean/AppID.java
Normal file
@@ -0,0 +1,37 @@
|
||||
package com.aoleyun.sn.bean;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class AppID implements Serializable {
|
||||
private static final long serialVersionUID = -2177988059115315546L;
|
||||
|
||||
String ids;
|
||||
@SerializedName("package")
|
||||
String packages;
|
||||
|
||||
public String getIds() {
|
||||
return ids;
|
||||
}
|
||||
|
||||
public void setIds(String ids) {
|
||||
this.ids = ids;
|
||||
}
|
||||
|
||||
public String getPackages() {
|
||||
return packages;
|
||||
}
|
||||
|
||||
public void setPackages(String packages) {
|
||||
this.packages = packages;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public String toString() {
|
||||
return packages + ":" + ids;
|
||||
}
|
||||
}
|
||||
@@ -1,15 +1,12 @@
|
||||
package com.mjsheng.myappstore.bean;
|
||||
package com.aoleyun.sn.bean;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 作者 mjsheng
|
||||
* 日期 2018/8/29 13:59
|
||||
* 邮箱 501802639@qq.com
|
||||
* 来自:
|
||||
*/
|
||||
public class AppInfoBean implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 4849594429309728182L;
|
||||
|
||||
public class AppInfoBean {
|
||||
private int code;
|
||||
private String msg;
|
||||
private List<AppDateInfo> data;
|
||||
17
app/src/main/java/com/aoleyun/sn/bean/AppLimit.java
Normal file
17
app/src/main/java/com/aoleyun/sn/bean/AppLimit.java
Normal file
@@ -0,0 +1,17 @@
|
||||
package com.aoleyun.sn.bean;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class AppLimit implements Serializable {
|
||||
private static final long serialVersionUID = -4550724319678357614L;
|
||||
|
||||
String result;
|
||||
|
||||
public String getResult() {
|
||||
return result;
|
||||
}
|
||||
|
||||
public void setResult(String result) {
|
||||
this.result = result;
|
||||
}
|
||||
}
|
||||
86
app/src/main/java/com/aoleyun/sn/bean/AppListInfo.java
Normal file
86
app/src/main/java/com/aoleyun/sn/bean/AppListInfo.java
Normal file
@@ -0,0 +1,86 @@
|
||||
package com.aoleyun.sn.bean;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class AppListInfo implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 9075899098432175779L;
|
||||
|
||||
private long app_version_code;
|
||||
private String app_name;
|
||||
private String app_package;
|
||||
private String app_version_name;
|
||||
private String app_url;
|
||||
private String app_id;
|
||||
private String app_md5;
|
||||
String id;
|
||||
String app_desc;
|
||||
String app_downloads;
|
||||
String app_size;
|
||||
String app_img;
|
||||
String app_createtime;
|
||||
String app_score;
|
||||
String xitong_id;
|
||||
String zixitong_id;
|
||||
String app_tag;
|
||||
|
||||
public static long getSerialVersionUID() {
|
||||
return serialVersionUID;
|
||||
}
|
||||
|
||||
public String getApp_package() {
|
||||
return app_package;
|
||||
}
|
||||
|
||||
public void setApp_package(String app_package) {
|
||||
this.app_package = app_package;
|
||||
}
|
||||
|
||||
public String getApp_version_name() {
|
||||
return app_version_name;
|
||||
}
|
||||
|
||||
public void setApp_version_name(String app_version_name) {
|
||||
this.app_version_name = app_version_name;
|
||||
}
|
||||
|
||||
public long getApp_version_code() {
|
||||
return app_version_code;
|
||||
}
|
||||
|
||||
public void setApp_version_code(long app_version_code) {
|
||||
this.app_version_code = app_version_code;
|
||||
}
|
||||
|
||||
public String getApp_url() {
|
||||
return app_url;
|
||||
}
|
||||
|
||||
public void setApp_url(String app_url) {
|
||||
this.app_url = app_url;
|
||||
}
|
||||
|
||||
public String getApp_name() {
|
||||
return app_name;
|
||||
}
|
||||
|
||||
public void setApp_name(String app_name) {
|
||||
this.app_name = app_name;
|
||||
}
|
||||
|
||||
public String getApp_id() {
|
||||
return app_id;
|
||||
}
|
||||
|
||||
public void setApp_id(String app_id) {
|
||||
this.app_id = app_id;
|
||||
}
|
||||
|
||||
public String getApp_md5() {
|
||||
return app_md5;
|
||||
}
|
||||
|
||||
public void setApp_md5(String app_md5) {
|
||||
this.app_md5 = app_md5;
|
||||
}
|
||||
}
|
||||
99
app/src/main/java/com/aoleyun/sn/bean/AppSettings.java
Normal file
99
app/src/main/java/com/aoleyun/sn/bean/AppSettings.java
Normal file
@@ -0,0 +1,99 @@
|
||||
package com.aoleyun.sn.bean;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class AppSettings implements Serializable {
|
||||
private static final long serialVersionUID = -3501100183295519224L;
|
||||
|
||||
// APP图标
|
||||
String app_icon;
|
||||
// 小程序二维码
|
||||
String mini_qrcode;
|
||||
// 日志功能开关 1 开 0 关
|
||||
int logs_control;
|
||||
// 定义批次名称 1 开启 0 关闭
|
||||
int custom_batch_control;
|
||||
//批次名称
|
||||
String custom_batch_name;
|
||||
// 定义班级开关 1 开 0 关
|
||||
int custom_class_control;
|
||||
//班级名称
|
||||
String custom_class_name;
|
||||
// 定义学号开关 1 开 0 关
|
||||
int custom_number_control;
|
||||
//学号名称
|
||||
String custom_number_name;
|
||||
|
||||
|
||||
public String getApp_icon() {
|
||||
return app_icon;
|
||||
}
|
||||
|
||||
public void setApp_icon(String app_icon) {
|
||||
this.app_icon = app_icon;
|
||||
}
|
||||
|
||||
public String getMini_qrcode() {
|
||||
return mini_qrcode;
|
||||
}
|
||||
|
||||
public void setMini_qrcode(String mini_qrcode) {
|
||||
this.mini_qrcode = mini_qrcode;
|
||||
}
|
||||
|
||||
public int getLogs_control() {
|
||||
return logs_control;
|
||||
}
|
||||
|
||||
public void setLogs_control(int logs_control) {
|
||||
this.logs_control = logs_control;
|
||||
}
|
||||
|
||||
public int getCustom_batch_control() {
|
||||
return custom_batch_control;
|
||||
}
|
||||
|
||||
public void setCustom_batch_control(int custom_batch_control) {
|
||||
this.custom_batch_control = custom_batch_control;
|
||||
}
|
||||
|
||||
public String getCustom_batch_name() {
|
||||
return custom_batch_name;
|
||||
}
|
||||
|
||||
public void setCustom_batch_name(String custom_batch_name) {
|
||||
this.custom_batch_name = custom_batch_name;
|
||||
}
|
||||
|
||||
public int getCustom_class_control() {
|
||||
return custom_class_control;
|
||||
}
|
||||
|
||||
public void setCustom_class_control(int custom_class_control) {
|
||||
this.custom_class_control = custom_class_control;
|
||||
}
|
||||
|
||||
public String getCustom_class_name() {
|
||||
return custom_class_name;
|
||||
}
|
||||
|
||||
public void setCustom_class_name(String custom_class_name) {
|
||||
this.custom_class_name = custom_class_name;
|
||||
}
|
||||
|
||||
public int getCustom_number_control() {
|
||||
return custom_number_control;
|
||||
}
|
||||
|
||||
public void setCustom_number_control(int custom_number_control) {
|
||||
this.custom_number_control = custom_number_control;
|
||||
}
|
||||
|
||||
public String getCustom_number_name() {
|
||||
return custom_number_name;
|
||||
}
|
||||
|
||||
public void setCustom_number_name(String custom_number_name) {
|
||||
this.custom_number_name = custom_number_name;
|
||||
}
|
||||
}
|
||||
90
app/src/main/java/com/aoleyun/sn/bean/AppUpdateInfo.java
Normal file
90
app/src/main/java/com/aoleyun/sn/bean/AppUpdateInfo.java
Normal file
@@ -0,0 +1,90 @@
|
||||
package com.aoleyun.sn.bean;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonParser;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class AppUpdateInfo implements Serializable {
|
||||
private static final long serialVersionUID = 8448660007210869129L;
|
||||
|
||||
int id;
|
||||
String url;
|
||||
long version_code;
|
||||
String version_name;
|
||||
String app_name;
|
||||
@SerializedName("package")
|
||||
String packages;
|
||||
String app_md5;
|
||||
int is_forcedown;
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getUrl() {
|
||||
return url;
|
||||
}
|
||||
|
||||
public void setUrl(String url) {
|
||||
this.url = url;
|
||||
}
|
||||
|
||||
public long getVersion_code() {
|
||||
return version_code;
|
||||
}
|
||||
|
||||
public void setVersion_code(long version_code) {
|
||||
this.version_code = version_code;
|
||||
}
|
||||
|
||||
public String getVersion_name() {
|
||||
return version_name;
|
||||
}
|
||||
|
||||
public void setVersion_name(String version_name) {
|
||||
this.version_name = version_name;
|
||||
}
|
||||
|
||||
public String getApp_name() {
|
||||
return app_name;
|
||||
}
|
||||
|
||||
public void setApp_name(String app_name) {
|
||||
this.app_name = app_name;
|
||||
}
|
||||
|
||||
public String getPackages() {
|
||||
return packages;
|
||||
}
|
||||
|
||||
public void setPackages(String packages) {
|
||||
this.packages = packages;
|
||||
}
|
||||
|
||||
public String getApp_md5() {
|
||||
return app_md5;
|
||||
}
|
||||
|
||||
public void setApp_md5(String app_md5) {
|
||||
this.app_md5 = app_md5;
|
||||
}
|
||||
|
||||
public int getIs_forcedown() {
|
||||
return is_forcedown;
|
||||
}
|
||||
|
||||
public void setIs_forcedown(int is_forcedown) {
|
||||
this.is_forcedown = is_forcedown;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return JsonParser.parseString(new Gson().toJson(this)).getAsJsonObject().toString();
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,11 @@
|
||||
package com.mjsheng.myappstore.bean;
|
||||
package com.aoleyun.sn.bean;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class Appground implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 4623189862812297724L;
|
||||
|
||||
private String packages;
|
||||
private String address;
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
package com.mjsheng.myappstore.bean;
|
||||
package com.aoleyun.sn.bean;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonParser;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
|
||||
@@ -14,10 +17,9 @@ public class BaseResponse<T> implements Serializable {
|
||||
public String msg;
|
||||
public T data;
|
||||
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public String toString() {
|
||||
return "{" + "code:" + code + "," + "msg:" + msg + "," + "data:" + data + "," + '}';
|
||||
return JsonParser.parseString(new Gson().toJson(this)).getAsJsonObject().toString();
|
||||
}
|
||||
}
|
||||
29
app/src/main/java/com/aoleyun/sn/bean/Batch.java
Normal file
29
app/src/main/java/com/aoleyun/sn/bean/Batch.java
Normal file
@@ -0,0 +1,29 @@
|
||||
package com.aoleyun.sn.bean;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class Batch implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = -1762804079800707443L;
|
||||
|
||||
String batch;
|
||||
Set<String> group_en_name;
|
||||
|
||||
public String getBatch() {
|
||||
return batch;
|
||||
}
|
||||
|
||||
public void setBatch(String batch) {
|
||||
this.batch = batch;
|
||||
}
|
||||
|
||||
public Set<String> getGroup_en_name() {
|
||||
return group_en_name;
|
||||
}
|
||||
|
||||
public void setGroup_en_name(Set<String> group_en_name) {
|
||||
this.group_en_name = group_en_name;
|
||||
}
|
||||
}
|
||||
125
app/src/main/java/com/aoleyun/sn/bean/BatteryInfo.java
Normal file
125
app/src/main/java/com/aoleyun/sn/bean/BatteryInfo.java
Normal file
@@ -0,0 +1,125 @@
|
||||
package com.aoleyun.sn.bean;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class BatteryInfo implements Serializable {
|
||||
private static final long serialVersionUID = 7615775335930367771L;
|
||||
|
||||
String battery_quantity;
|
||||
String battery_temperature;
|
||||
String battery_voltage;
|
||||
String charge_current;
|
||||
String charge_voltage;
|
||||
String battery_status;
|
||||
String charge_type;
|
||||
String charge_current_max;
|
||||
String charge_voltage_max;
|
||||
String battery_health;
|
||||
String quantity_max;
|
||||
String battery_desc;
|
||||
String charge_speed;
|
||||
|
||||
public String getBattery_quantity() {
|
||||
return battery_quantity;
|
||||
}
|
||||
|
||||
public void setBattery_quantity(String battery_quantity) {
|
||||
this.battery_quantity = battery_quantity;
|
||||
}
|
||||
|
||||
public String getBattery_temperature() {
|
||||
return battery_temperature;
|
||||
}
|
||||
|
||||
public void setBattery_temperature(String battery_temperature) {
|
||||
this.battery_temperature = battery_temperature;
|
||||
}
|
||||
|
||||
public String getBattery_voltage() {
|
||||
return battery_voltage;
|
||||
}
|
||||
|
||||
public void setBattery_voltage(String battery_voltage) {
|
||||
this.battery_voltage = battery_voltage;
|
||||
}
|
||||
|
||||
public String getCharge_current() {
|
||||
return charge_current;
|
||||
}
|
||||
|
||||
public void setCharge_current(String charge_current) {
|
||||
this.charge_current = charge_current;
|
||||
}
|
||||
|
||||
public String getCharge_voltage() {
|
||||
return charge_voltage;
|
||||
}
|
||||
|
||||
public void setCharge_voltage(String charge_voltage) {
|
||||
this.charge_voltage = charge_voltage;
|
||||
}
|
||||
|
||||
public String getBattery_status() {
|
||||
return battery_status;
|
||||
}
|
||||
|
||||
public void setBattery_status(String battery_status) {
|
||||
this.battery_status = battery_status;
|
||||
}
|
||||
|
||||
public String getCharge_type() {
|
||||
return charge_type;
|
||||
}
|
||||
|
||||
public void setCharge_type(String charge_type) {
|
||||
this.charge_type = charge_type;
|
||||
}
|
||||
|
||||
public String getCharge_current_max() {
|
||||
return charge_current_max;
|
||||
}
|
||||
|
||||
public void setCharge_current_max(String charge_current_max) {
|
||||
this.charge_current_max = charge_current_max;
|
||||
}
|
||||
|
||||
public String getCharge_voltage_max() {
|
||||
return charge_voltage_max;
|
||||
}
|
||||
|
||||
public void setCharge_voltage_max(String charge_voltage_max) {
|
||||
this.charge_voltage_max = charge_voltage_max;
|
||||
}
|
||||
|
||||
public String getBattery_health() {
|
||||
return battery_health;
|
||||
}
|
||||
|
||||
public void setBattery_health(String battery_health) {
|
||||
this.battery_health = battery_health;
|
||||
}
|
||||
|
||||
public String getQuantity_max() {
|
||||
return quantity_max;
|
||||
}
|
||||
|
||||
public void setQuantity_max(String quantity_max) {
|
||||
this.quantity_max = quantity_max;
|
||||
}
|
||||
|
||||
public String getBattery_desc() {
|
||||
return battery_desc;
|
||||
}
|
||||
|
||||
public void setBattery_desc(String battery_desc) {
|
||||
this.battery_desc = battery_desc;
|
||||
}
|
||||
|
||||
public String getCharge_speed() {
|
||||
return charge_speed;
|
||||
}
|
||||
|
||||
public void setCharge_speed(String charge_speed) {
|
||||
this.charge_speed = charge_speed;
|
||||
}
|
||||
}
|
||||
18
app/src/main/java/com/aoleyun/sn/bean/BlacklistBean.java
Normal file
18
app/src/main/java/com/aoleyun/sn/bean/BlacklistBean.java
Normal file
@@ -0,0 +1,18 @@
|
||||
package com.aoleyun.sn.bean;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
public class BlacklistBean implements Serializable {
|
||||
private static final long serialVersionUID = 1686627090518410825L;
|
||||
|
||||
List<String> blacklist;
|
||||
|
||||
public List<String> getBlacklist() {
|
||||
return blacklist;
|
||||
}
|
||||
|
||||
public void setBlacklist(List<String> blacklist) {
|
||||
this.blacklist = blacklist;
|
||||
}
|
||||
}
|
||||
53
app/src/main/java/com/aoleyun/sn/bean/BluetoothType.java
Normal file
53
app/src/main/java/com/aoleyun/sn/bean/BluetoothType.java
Normal file
@@ -0,0 +1,53 @@
|
||||
package com.aoleyun.sn.bean;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class BluetoothType implements Serializable {
|
||||
private static final long serialVersionUID = -1105070316766010023L;
|
||||
|
||||
int headset;
|
||||
int sound;
|
||||
int mobile;
|
||||
int computer;
|
||||
int keyboard;
|
||||
|
||||
public int getHeadset() {
|
||||
return headset;
|
||||
}
|
||||
|
||||
public void setHeadset(int headset) {
|
||||
this.headset = headset;
|
||||
}
|
||||
|
||||
public int getSound() {
|
||||
return sound;
|
||||
}
|
||||
|
||||
public void setSound(int sound) {
|
||||
this.sound = sound;
|
||||
}
|
||||
|
||||
public int getMobile() {
|
||||
return mobile;
|
||||
}
|
||||
|
||||
public void setMobile(int mobile) {
|
||||
this.mobile = mobile;
|
||||
}
|
||||
|
||||
public int getComputer() {
|
||||
return computer;
|
||||
}
|
||||
|
||||
public void setComputer(int computer) {
|
||||
this.computer = computer;
|
||||
}
|
||||
|
||||
public int getKeyboard() {
|
||||
return keyboard;
|
||||
}
|
||||
|
||||
public void setKeyboard(int keyboard) {
|
||||
this.keyboard = keyboard;
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,11 @@
|
||||
package com.mjsheng.myappstore.bean;
|
||||
package com.aoleyun.sn.bean;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class BrowserBookmarks implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 596864357553413994L;
|
||||
|
||||
private String homepage;
|
||||
private String labelpage;
|
||||
|
||||
@@ -1,11 +1,15 @@
|
||||
package com.mjsheng.myappstore.bean;
|
||||
package com.aoleyun.sn.bean;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class BrowserData implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 5199831572891077086L;
|
||||
|
||||
private String white;
|
||||
private String black;
|
||||
private String white_ip;
|
||||
private String black_ip;
|
||||
|
||||
public String getWhite() {
|
||||
return white;
|
||||
@@ -22,4 +26,20 @@ public class BrowserData implements Serializable {
|
||||
public void setBlack(String black) {
|
||||
this.black = black;
|
||||
}
|
||||
|
||||
public String getWhite_ip() {
|
||||
return white_ip;
|
||||
}
|
||||
|
||||
public void setWhite_ip(String white_ip) {
|
||||
this.white_ip = white_ip;
|
||||
}
|
||||
|
||||
public String getBlack_ip() {
|
||||
return black_ip;
|
||||
}
|
||||
|
||||
public void setBlack_ip(String black_ip) {
|
||||
this.black_ip = black_ip;
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,7 @@
|
||||
package com.mjsheng.myappstore.bean;
|
||||
package com.aoleyun.sn.bean;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonParser;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@@ -6,11 +9,13 @@ import java.io.Serializable;
|
||||
* Created by Administrator on 2016/10/10.
|
||||
*/
|
||||
public class CategoryInfo implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1373346057675939423L;
|
||||
|
||||
private String id;
|
||||
private String name;
|
||||
private String img;
|
||||
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
@@ -37,11 +42,7 @@ public class CategoryInfo implements Serializable {
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "CategoryInfo{" +
|
||||
"id='" + id + '\'' +
|
||||
", name='" + name + '\'' +
|
||||
", img='" + img + '\'' +
|
||||
'}';
|
||||
return JsonParser.parseString(new Gson().toJson(this)).getAsJsonObject().toString();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
package com.mjsheng.myappstore.bean;
|
||||
package com.aoleyun.sn.bean;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonParser;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 作者 mjsheng
|
||||
* 日期 2018/9/14 10:50
|
||||
* 邮箱 501802639@qq.com
|
||||
* 来自:
|
||||
*/
|
||||
public class CategoryPicBean implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = -4286518544348292816L;
|
||||
|
||||
public class CategoryPicBean {
|
||||
private int code;
|
||||
private String msg;
|
||||
private List<CategoryInfo> data;
|
||||
@@ -40,10 +40,6 @@ public class CategoryPicBean {
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "CategoryPicBean{" +
|
||||
"code=" + code +
|
||||
", msg='" + msg + '\'' +
|
||||
", data=" + data +
|
||||
'}';
|
||||
return JsonParser.parseString(new Gson().toJson(this)).getAsJsonObject().toString();
|
||||
}
|
||||
}
|
||||
45
app/src/main/java/com/aoleyun/sn/bean/CommonPicBean.java
Normal file
45
app/src/main/java/com/aoleyun/sn/bean/CommonPicBean.java
Normal file
@@ -0,0 +1,45 @@
|
||||
package com.aoleyun.sn.bean;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonParser;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
public class CommonPicBean implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = -6056771155399643320L;
|
||||
|
||||
private int code;
|
||||
private String msg;
|
||||
private List<CommonPicData> data;
|
||||
|
||||
public int getCode() {
|
||||
return code;
|
||||
}
|
||||
|
||||
public void setCode(int code) {
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
public String getMsg() {
|
||||
return msg;
|
||||
}
|
||||
|
||||
public void setMsg(String msg) {
|
||||
this.msg = msg;
|
||||
}
|
||||
|
||||
public List<CommonPicData> getData() {
|
||||
return data;
|
||||
}
|
||||
|
||||
public void setData(List<CommonPicData> data) {
|
||||
this.data = data;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return JsonParser.parseString(new Gson().toJson(this)).getAsJsonObject().toString();
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,14 @@
|
||||
package com.mjsheng.myappstore.bean;
|
||||
package com.aoleyun.sn.bean;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonParser;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class CommonPicData implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = -4066453793097764922L;
|
||||
|
||||
/**
|
||||
* Created by Administrator on 2016/10/9.
|
||||
*/
|
||||
public class ProjectDateInfo {
|
||||
private String id;
|
||||
private String name;
|
||||
private String img;
|
||||
@@ -70,14 +75,6 @@ public class ProjectDateInfo {
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "ProjectDateInfo{" +
|
||||
"id=" + id +
|
||||
", name='" + name + '\'' +
|
||||
", img='" + img + '\'' +
|
||||
", createtime=" + createtime +
|
||||
", status='" + status + '\'' +
|
||||
", admin_id=" + admin_id +
|
||||
", batch='" + batch + '\'' +
|
||||
'}';
|
||||
return JsonParser.parseString(new Gson().toJson(this)).getAsJsonObject().toString();
|
||||
}
|
||||
}
|
||||
17
app/src/main/java/com/aoleyun/sn/bean/CustomROMApp.java
Normal file
17
app/src/main/java/com/aoleyun/sn/bean/CustomROMApp.java
Normal file
@@ -0,0 +1,17 @@
|
||||
package com.aoleyun.sn.bean;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class CustomROMApp implements Serializable {
|
||||
private static final long serialVersionUID = 4050973622829547418L;
|
||||
|
||||
String package_name;
|
||||
|
||||
public String getPackage_name() {
|
||||
return package_name;
|
||||
}
|
||||
|
||||
public void setPackage_name(String package_name) {
|
||||
this.package_name = package_name;
|
||||
}
|
||||
}
|
||||
75
app/src/main/java/com/aoleyun/sn/bean/DefaultApp.java
Normal file
75
app/src/main/java/com/aoleyun/sn/bean/DefaultApp.java
Normal file
@@ -0,0 +1,75 @@
|
||||
package com.aoleyun.sn.bean;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author jgy02
|
||||
*/
|
||||
public class DefaultApp implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = -8180876443269736350L;
|
||||
|
||||
String default_launcher;
|
||||
String default_browser;
|
||||
String default_videoplayer;
|
||||
String default_musiclayer;
|
||||
String default_filemanager;
|
||||
String default_gallery;
|
||||
String default_IME;
|
||||
|
||||
public String getDefault_launcher() {
|
||||
return default_launcher;
|
||||
}
|
||||
|
||||
public void setDefault_launcher(String default_launcher) {
|
||||
this.default_launcher = default_launcher;
|
||||
}
|
||||
|
||||
public String getDefault_browser() {
|
||||
return default_browser;
|
||||
}
|
||||
|
||||
public void setDefault_browser(String default_browser) {
|
||||
this.default_browser = default_browser;
|
||||
}
|
||||
|
||||
public String getDefault_videoplayer() {
|
||||
return default_videoplayer;
|
||||
}
|
||||
|
||||
public void setDefault_videoplayer(String default_videoplayer) {
|
||||
this.default_videoplayer = default_videoplayer;
|
||||
}
|
||||
|
||||
public String getDefault_musiclayer() {
|
||||
return default_musiclayer;
|
||||
}
|
||||
|
||||
public void setDefault_musiclayer(String default_musiclayer) {
|
||||
this.default_musiclayer = default_musiclayer;
|
||||
}
|
||||
|
||||
public String getDefault_filemanager() {
|
||||
return default_filemanager;
|
||||
}
|
||||
|
||||
public void setDefault_filemanager(String default_filemanager) {
|
||||
this.default_filemanager = default_filemanager;
|
||||
}
|
||||
|
||||
public String getDefault_gallery() {
|
||||
return default_gallery;
|
||||
}
|
||||
|
||||
public void setDefault_gallery(String default_gallery) {
|
||||
this.default_gallery = default_gallery;
|
||||
}
|
||||
|
||||
public String getDefault_IME() {
|
||||
return default_IME;
|
||||
}
|
||||
|
||||
public void setDefault_IME(String default_IME) {
|
||||
this.default_IME = default_IME;
|
||||
}
|
||||
}
|
||||
17
app/src/main/java/com/aoleyun/sn/bean/DeveloperBean.java
Normal file
17
app/src/main/java/com/aoleyun/sn/bean/DeveloperBean.java
Normal file
@@ -0,0 +1,17 @@
|
||||
package com.aoleyun.sn.bean;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class DeveloperBean implements Serializable {
|
||||
private static final long serialVersionUID = -7758392818747033266L;
|
||||
|
||||
int is_developer;
|
||||
|
||||
public int getIs_developer() {
|
||||
return is_developer;
|
||||
}
|
||||
|
||||
public void setIs_developer(int is_developer) {
|
||||
this.is_developer = is_developer;
|
||||
}
|
||||
}
|
||||
76
app/src/main/java/com/aoleyun/sn/bean/DownloadInfo.java
Normal file
76
app/src/main/java/com/aoleyun/sn/bean/DownloadInfo.java
Normal file
@@ -0,0 +1,76 @@
|
||||
package com.aoleyun.sn.bean;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonParser;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class DownloadInfo implements Serializable {
|
||||
private static final long serialVersionUID = 1098419795758711093L;
|
||||
|
||||
String app_name;
|
||||
@SerializedName(value = "bg", alternate = {"app_package", "package", "package_name"})
|
||||
String app_package;
|
||||
String app_url;
|
||||
long app_version_code;
|
||||
String app_id;
|
||||
@SerializedName("app_md5")
|
||||
String MD5;
|
||||
|
||||
public String getApp_name() {
|
||||
return app_name;
|
||||
}
|
||||
|
||||
public void setApp_name(String app_name) {
|
||||
this.app_name = app_name;
|
||||
}
|
||||
|
||||
public String getApp_package() {
|
||||
return app_package;
|
||||
}
|
||||
|
||||
public void setApp_package(String app_package) {
|
||||
this.app_package = app_package;
|
||||
}
|
||||
|
||||
public String getApp_url() {
|
||||
return app_url;
|
||||
}
|
||||
|
||||
public void setApp_url(String app_url) {
|
||||
this.app_url = app_url;
|
||||
}
|
||||
|
||||
public long getApp_version_code() {
|
||||
return app_version_code;
|
||||
}
|
||||
|
||||
public void setApp_version_code(long app_version_code) {
|
||||
this.app_version_code = app_version_code;
|
||||
}
|
||||
|
||||
public String getApp_id() {
|
||||
return app_id;
|
||||
}
|
||||
|
||||
public void setApp_id(String app_id) {
|
||||
this.app_id = app_id;
|
||||
}
|
||||
|
||||
public String getMD5() {
|
||||
return MD5;
|
||||
}
|
||||
|
||||
public void setMD5(String MD5) {
|
||||
this.MD5 = MD5;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public String toString() {
|
||||
return JsonParser.parseString(new Gson().toJson(this)).getAsJsonObject().toString();
|
||||
}
|
||||
}
|
||||
29
app/src/main/java/com/aoleyun/sn/bean/DownloadTaskInfo.java
Normal file
29
app/src/main/java/com/aoleyun/sn/bean/DownloadTaskInfo.java
Normal file
@@ -0,0 +1,29 @@
|
||||
package com.aoleyun.sn.bean;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class DownloadTaskInfo implements Serializable {
|
||||
private static final long serialVersionUID = -5406588064200275496L;
|
||||
|
||||
String app_name;
|
||||
@SerializedName(value = "app_package", alternate = {"package", "packages"})
|
||||
String app_package;
|
||||
|
||||
public String getApp_name() {
|
||||
return app_name;
|
||||
}
|
||||
|
||||
public void setApp_name(String app_name) {
|
||||
this.app_name = app_name;
|
||||
}
|
||||
|
||||
public String getApp_package() {
|
||||
return app_package;
|
||||
}
|
||||
|
||||
public void setApp_package(String app_package) {
|
||||
this.app_package = app_package;
|
||||
}
|
||||
}
|
||||
17
app/src/main/java/com/aoleyun/sn/bean/EBagCode.java
Normal file
17
app/src/main/java/com/aoleyun/sn/bean/EBagCode.java
Normal file
@@ -0,0 +1,17 @@
|
||||
package com.aoleyun.sn.bean;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class EBagCode implements Serializable {
|
||||
private static final long serialVersionUID = -5406288064300275496L;
|
||||
|
||||
String ebagCode;
|
||||
|
||||
public String getEbagCode() {
|
||||
return ebagCode;
|
||||
}
|
||||
|
||||
public void setEbagCode(String ebagCode) {
|
||||
this.ebagCode = ebagCode;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
package com.aoleyun.sn.bean;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class ElectronicFenceInfo implements Serializable {
|
||||
private static final long serialVersionUID = 3539332214940698873L;
|
||||
|
||||
int id;
|
||||
String name;
|
||||
long longitude;
|
||||
long latitude;
|
||||
/*定位效验1是0否*/
|
||||
int is_verify_location;
|
||||
/*半径 米*/
|
||||
int distance;
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public long getLongitude() {
|
||||
return longitude;
|
||||
}
|
||||
|
||||
public void setLongitude(long longitude) {
|
||||
this.longitude = longitude;
|
||||
}
|
||||
|
||||
public long getLatitude() {
|
||||
return latitude;
|
||||
}
|
||||
|
||||
public void setLatitude(long latitude) {
|
||||
this.latitude = latitude;
|
||||
}
|
||||
|
||||
public int getIs_verify_location() {
|
||||
return is_verify_location;
|
||||
}
|
||||
|
||||
public void setIs_verify_location(int is_verify_location) {
|
||||
this.is_verify_location = is_verify_location;
|
||||
}
|
||||
|
||||
public int getDistance() {
|
||||
return distance;
|
||||
}
|
||||
|
||||
public void setDistance(int distance) {
|
||||
this.distance = distance;
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,11 @@
|
||||
package com.mjsheng.myappstore.bean;
|
||||
package com.aoleyun.sn.bean;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class Expansions implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = -4958527331079431641L;
|
||||
|
||||
private String file;
|
||||
//包内文件地址
|
||||
private String install_location;
|
||||
45
app/src/main/java/com/aoleyun/sn/bean/ForceDownloadBean.java
Normal file
45
app/src/main/java/com/aoleyun/sn/bean/ForceDownloadBean.java
Normal file
@@ -0,0 +1,45 @@
|
||||
package com.aoleyun.sn.bean;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonParser;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class ForceDownloadBean<T> implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 5434001463280365686L;
|
||||
|
||||
private int code;
|
||||
private String msg;
|
||||
|
||||
private T data;
|
||||
|
||||
public int getCode() {
|
||||
return code;
|
||||
}
|
||||
|
||||
public void setCode(int code) {
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
public String getMsg() {
|
||||
return msg;
|
||||
}
|
||||
|
||||
public void setMsg(String msg) {
|
||||
this.msg = msg;
|
||||
}
|
||||
|
||||
public T getData() {
|
||||
return data;
|
||||
}
|
||||
|
||||
public void setData(T data) {
|
||||
this.data = data;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return JsonParser.parseString(new Gson().toJson(this)).getAsJsonObject().toString();
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user