From b5308a3d68f986b0e22d72d8e5f57db093e57a1c Mon Sep 17 00:00:00 2001 From: Fanhuitong <981964879@qq.com> Date: Fri, 15 Dec 2023 09:33:52 +0800 Subject: [PATCH] =?UTF-8?q?1.2.6=20=E5=87=86=E5=A4=87=E5=88=86=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 254 +++++++++++++++++- app/keystore/Aigo1071.jks | Bin 0 -> 2699 bytes app/keystore/G10PMTK11.jks | Bin 0 -> 2352 bytes app/keystore/TeclastMTK12.jks | Bin 0 -> 2553 bytes app/keystore/UnisocS6688Userdebug.jks | Bin 0 -> 2947 bytes app/src/aiKuxin/res/values/strings.xml | 3 + app/src/aigo/res/values/strings.xml | 3 + app/src/main/AndroidManifest.xml | 48 ++-- .../uiuipad/find/activity/NoticeActivity.java | 105 ++++++++ .../find/activity/main/MainAPresenter.java | 2 + .../find/activity/main/MainActivity.java | 6 + .../find/hook/KuxinActivityController.java | 47 ++++ .../find/network/NetInterfaceManager.java | 44 +-- .../com/uiuipad/find/push/PushManager.java | 57 +++- .../uiuipad/find/service/ManagerService.java | 53 +++- .../uiuipad/find/service/SocketService.java | 24 +- .../find/service/main/MainService.java | 52 ++-- .../com/uiuipad/find/util/ControlUtils.java | 4 +- .../java/com/uiuipad/find/util/FileUtils.java | 22 +- .../java/com/uiuipad/find/util/ToastUtil.java | 2 +- .../main/res/drawable/default_botton_bg.xml | 13 + .../main/res/layout-land/activity_main.xml | 12 +- .../main/res/layout-port/activity_main.xml | 12 +- app/src/main/res/layout/activity_notice.xml | 103 +++++++ app/src/main/res/values/styles.xml | 12 + app/src/main/res/xml/file_paths.xml | 9 + app/src/main/res/xml/network.xml | 4 + app/src/phone/res/values/strings.xml | 3 + niceimageview/build.gradle | 8 + verification-view/build.gradle | 8 + 30 files changed, 813 insertions(+), 97 deletions(-) create mode 100644 app/keystore/Aigo1071.jks create mode 100644 app/keystore/G10PMTK11.jks create mode 100644 app/keystore/TeclastMTK12.jks create mode 100644 app/keystore/UnisocS6688Userdebug.jks create mode 100644 app/src/aiKuxin/res/values/strings.xml create mode 100644 app/src/aigo/res/values/strings.xml create mode 100644 app/src/main/java/com/uiuipad/find/activity/NoticeActivity.java create mode 100644 app/src/main/java/com/uiuipad/find/hook/KuxinActivityController.java create mode 100644 app/src/main/res/drawable/default_botton_bg.xml create mode 100644 app/src/main/res/layout/activity_notice.xml create mode 100644 app/src/main/res/xml/file_paths.xml create mode 100644 app/src/main/res/xml/network.xml create mode 100644 app/src/phone/res/values/strings.xml diff --git a/app/build.gradle b/app/build.gradle index 5224de8..946b539 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,11 +1,28 @@ apply plugin: 'com.android.application' -static def appName() { - return "小酷守护" +static String getBuildConfigFieldValue(def variant, def fiedName) { + def properties = variant.productFlavors[0].properties + def name = properties.get("name") + if (name != variant.flavorName) { + return "" + } + def configs = properties.get("buildConfigFields") + def address = null + for (Map.Entry item : configs) { + def key = item.key + if (key == fiedName) { + address = item.value + } + } + if (address == null) return "" + def field = address.getClass().getDeclaredField("value") + field.setAccessible(true) + return field.get(address).toString().replace("\"", "") } + static def releaseTime() { - return new Date().format("yyyyMMdd-HHmmss", TimeZone.getDefault()) + return new Date().format("yyyyMMdd_HHmmss", TimeZone.getDefault()) } android { @@ -13,11 +30,9 @@ android { buildToolsVersion "29.0.3" defaultConfig { - applicationId "com.uiuipad.find" minSdkVersion 24 targetSdkVersion 29 - versionCode 19 - versionName "1.1.8" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -46,6 +61,57 @@ android { targetCompatibility JavaVersion.VERSION_1_8 } + //多版本 + productFlavors { + kuxin { + flavorDimensions "default" + applicationId "com.uiuipad.find" + versionCode 27 + versionName "1.2.6" + buildConfigField "String", "app_name", '"小酷守护"' + manifestPlaceholders = [ + ALIPUSH_KEY : "333898263", + ALIPUSH_SECRET: "e1b374229ffe479eb34ba74432b7e454", + ] + } + + aiKuxin { + flavorDimensions "default" + applicationId "com.aole.safe" + versionCode 1 + versionName "1.0.0" + buildConfigField "String", "app_name", '"守护中心"' + manifestPlaceholders = [ + ALIPUSH_KEY : "333982424", + ALIPUSH_SECRET: "c831992e2de743dcad66f5ec420798a4", + ] + } + + aigo { + flavorDimensions "default" + applicationId "com.safeos.ae" + versionCode 1 + versionName "1.0.0" + buildConfigField "String", "app_name", '"安全守护"' + manifestPlaceholders = [ + ALIPUSH_KEY : "333982410", + ALIPUSH_SECRET: "6d8785a73d904055ac00f84d83400be4", + ] + } + + phone { + flavorDimensions "default" + applicationId "com.dangsafe.kf" + versionCode 1 + versionName "1.0.0" + buildConfigField "String", "app_name", '"时间守护"' + manifestPlaceholders = [ + ALIPUSH_KEY : "333982833", + ALIPUSH_SECRET: "67a5bf10515947459c04fc000367feca", + ] + } + } + //签名 signingConfigs { //iPlay50 mini,iPlay50 android13 共用签名 @@ -81,43 +147,173 @@ android { keyPassword "123456" v2SigningEnabled false } + + G10P { + storeFile file("keystore/G10PMTK11.jks") + storePassword "123456" + keyAlias "G10PMTK11" + keyPassword "123456" + v1SigningEnabled true + v2SigningEnabled true + } + + teclast8183 { + storeFile file("keystore/TeclastMTK12.jks") + storePassword "123456" + keyAlias "TeclastMTK12" + keyPassword "123456" + v2SigningEnabled false + } + + UnisocS6688 { + storeFile file("keystore/UnisocS6688Userdebug.jks") + storePassword "123456" + keyAlias "unisocs6688userdebug" + keyPassword "123456" + v1SigningEnabled true + v2SigningEnabled true + } + + Aigo1071 { + storeFile file("keystore/Aigo1071.jks") + storePassword "123456" + keyAlias "aigo1071" + keyPassword "123456" + v1SigningEnabled true + v2SigningEnabled true + } } buildTypes { + Aigo1071Debug.initWith(debug) + Aigo1071Debug { + versionNameSuffix "-debug" + debuggable true + signingConfig signingConfigs.Aigo1071 + buildConfigField "String", "platform", '"W8183"' + manifestPlaceholders = [ + Baidu_AK: "YCmfZSw54O992lChzS3c4roYioitT54h" + ] + } + + Aigo1071Release.initWith(release) + Aigo1071Release { + signingConfig signingConfigs.Aigo1071 + buildConfigField "String", "platform", '"W8183"' + manifestPlaceholders = [ + Baidu_AK: "YCmfZSw54O992lChzS3c4roYioitT54h" + ] + } + + UnisocS6688Debug.initWith(debug) + UnisocS6688Debug { + versionNameSuffix "-debug" + debuggable true + signingConfig signingConfigs.UnisocS6688 + buildConfigField "String", "platform", '"S6688"' + manifestPlaceholders = [ + Baidu_AK: "YCmfZSw54O992lChzS3c4roYioitT54h" + ] + } + + UnisocS6688Release.initWith(release) + UnisocS6688Release { + signingConfig signingConfigs.UnisocS6688 + buildConfigField "String", "platform", '"S6688"' + manifestPlaceholders = [ + Baidu_AK: "YCmfZSw54O992lChzS3c4roYioitT54h" + ] + } + + teclast8183Debug.initWith(debug) + teclast8183Debug { + versionNameSuffix "-debug" + debuggable true + signingConfig signingConfigs.teclast8183 + buildConfigField "String", "platform", '"A11MTK8183"' + manifestPlaceholders = [ + Baidu_AK: "YCmfZSw54O992lChzS3c4roYioitT54h" + ] + } + + teclast8183Release.initWith(release) + teclast8183Release { + signingConfig signingConfigs.teclast8183 + buildConfigField "String", "platform", '"A11MTK8183"' + manifestPlaceholders = [ + Baidu_AK: "YCmfZSw54O992lChzS3c4roYioitT54h" + ] + } + + G10PDebug.initWith(debug) + G10PDebug { + versionNameSuffix "-debug" + debuggable true + signingConfig signingConfigs.G10P + buildConfigField "String", "platform", '"G10P"' + manifestPlaceholders = [ + Baidu_AK: "YCmfZSw54O992lChzS3c4roYioitT54h" + ] + } + + G10PRelease.initWith(release) + G10PRelease { + signingConfig signingConfigs.G10P + buildConfigField "String", "platform", '"G10P"' + manifestPlaceholders = [ + Baidu_AK: "YCmfZSw54O992lChzS3c4roYioitT54h" + ] + } + U807UserDebug.initWith(release) U807UserDebug { - buildConfigField "String", "platform", '"U807"' // versionNameSuffix "-debug" // debuggable true signingConfig signingConfigs.U807UserDebug + buildConfigField "String", "platform", '"U807"' + manifestPlaceholders = [ + Baidu_AK: "yhlCxeBmZ1I7ZO50Emw4ptPtcYGOFg59" + ] } U807Debug.initWith(debug) U807Debug { - buildConfigField "String", "platform", '"U807"' versionNameSuffix "-debug" debuggable true signingConfig signingConfigs.U807 + buildConfigField "String", "platform", '"U807"' + manifestPlaceholders = [ + Baidu_AK: "yhlCxeBmZ1I7ZO50Emw4ptPtcYGOFg59" + ] } U807Release.initWith(release) U807Release { - buildConfigField "String", "platform", '"U807"' signingConfig signingConfigs.U807 + buildConfigField "String", "platform", '"U807"' + manifestPlaceholders = [ + Baidu_AK: "yhlCxeBmZ1I7ZO50Emw4ptPtcYGOFg59" + ] } iPlay50SEDebug.initWith(debug) iPlay50SEDebug { - buildConfigField "String", "platform", '"iPaly50SE"' versionNameSuffix "-debug" debuggable true signingConfig signingConfigs.iPlay50SE + buildConfigField "String", "platform", '"MTK8183"' + manifestPlaceholders = [ + Baidu_AK: "yhlCxeBmZ1I7ZO50Emw4ptPtcYGOFg59" + ] } iPlay50SERelease.initWith(release) iPlay50SERelease { - buildConfigField "String", "platform", '"iPaly50SE"' signingConfig signingConfigs.iPlay50SE + buildConfigField "String", "platform", '"MTK8183"' + manifestPlaceholders = [ + Baidu_AK: "yhlCxeBmZ1I7ZO50Emw4ptPtcYGOFg59" + ] } debug { @@ -127,10 +323,14 @@ android { zipAlignEnabled true minifyEnabled false signingConfig signingConfigs.iPlay50mini + buildConfigField "String", "platform", '"iPlay50mini"' + manifestPlaceholders = [ + Baidu_AK: "YCmfZSw54O992lChzS3c4roYioitT54h" + ] applicationVariants.all { variant -> variant.outputs.each { output -> if (outputFile != null) { - def fileName = "${appName()}-${variant.versionCode}-V${variant.versionName}-${releaseTime()}-${buildType.name}.apk" + def fileName = "${getBuildConfigFieldValue(variant, "app_name")}-${variant.versionCode}-V${variant.versionName}-${releaseTime()}-${buildType.name}.apk" output.outputFileName = fileName } } @@ -146,18 +346,46 @@ android { proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' //签名 signingConfig signingConfigs.iPlay50mini + buildConfigField "String", "platform", '"iPlay50mini"' + manifestPlaceholders = [ + Baidu_AK: "YCmfZSw54O992lChzS3c4roYioitT54h" + ] // 将release版本的包名重命名,加上版本及日期 applicationVariants.all { variant -> variant.outputs.each { output -> def outputFile = "" if (outputFile != null) { - def fileName = "${appName()}-${variant.versionCode}-V${variant.versionName}-${releaseTime()}-${buildType.name}.apk" + def fileName = "${getBuildConfigFieldValue(variant, "app_name")}-${variant.versionCode}-V${variant.versionName}-${releaseTime()}-${buildType.name}.apk" output.outputFileName = new File(outputFile, fileName) } } } } } + + sourceSets { + kuxin { + res { + srcDirs 'src/res' + } + } + aiKuxin { + res { + srcDirs 'src/aiKuxin/res' + } + } + aigo { + res { + srcDirs 'src/aigo/res' + } + } + phone { + res { + srcDirs 'src/phone/res' + } + } + } + externalNativeBuild { cmake { path file('CMakeLists.txt') diff --git a/app/keystore/Aigo1071.jks b/app/keystore/Aigo1071.jks new file mode 100644 index 0000000000000000000000000000000000000000..c32bd7a86123d9dbe23198b808b1ea52035a85ba GIT binary patch literal 2699 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 s0IE&$WB>pF literal 0 HcmV?d00001 diff --git a/app/keystore/G10PMTK11.jks b/app/keystore/G10PMTK11.jks new file mode 100644 index 0000000000000000000000000000000000000000..324fa3165901bfe56095885d02ba319749535507 GIT binary patch literal 2352 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 literal 0 HcmV?d00001 diff --git a/app/keystore/UnisocS6688Userdebug.jks b/app/keystore/UnisocS6688Userdebug.jks new file mode 100644 index 0000000000000000000000000000000000000000..07f2a13416ff32f8c6e23982b542de26ecc88c75 GIT binary patch literal 2947 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 literal 0 HcmV?d00001 diff --git a/app/src/aiKuxin/res/values/strings.xml b/app/src/aiKuxin/res/values/strings.xml new file mode 100644 index 0000000..b947cbc --- /dev/null +++ b/app/src/aiKuxin/res/values/strings.xml @@ -0,0 +1,3 @@ + + 守护中心 + diff --git a/app/src/aigo/res/values/strings.xml b/app/src/aigo/res/values/strings.xml new file mode 100644 index 0000000..7fee0a8 --- /dev/null +++ b/app/src/aigo/res/values/strings.xml @@ -0,0 +1,3 @@ + + 安全守护 + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 55e401d..944014d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -85,7 +85,11 @@ android:name=".activity.AudioActivity" android:launchMode="singleTask" android:theme="@style/activity_styles" /> - + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + android:value="${ALIPUSH_KEY}" /> + android:value="${ALIPUSH_SECRET}" /> + android:value="${Baidu_AK}" /> diff --git a/app/src/main/java/com/uiuipad/find/activity/NoticeActivity.java b/app/src/main/java/com/uiuipad/find/activity/NoticeActivity.java new file mode 100644 index 0000000..fa39ad7 --- /dev/null +++ b/app/src/main/java/com/uiuipad/find/activity/NoticeActivity.java @@ -0,0 +1,105 @@ +package com.uiuipad.find.activity; + +import android.content.Context; +import android.content.Intent; +import android.media.AudioManager; +import android.media.MediaPlayer; +import android.net.Uri; +import android.os.Bundle; +import android.os.PowerManager; +import android.os.Vibrator; +import android.view.View; +import android.widget.TextView; + +import androidx.appcompat.app.AppCompatActivity; + +import com.uiuipad.find.R; +import com.uiuipad.find.util.ApkUtils; +import com.uiuipad.find.util.WakeUpUtils; + +import java.io.IOException; + +import butterknife.BindView; +import butterknife.ButterKnife; + +public class NoticeActivity extends AppCompatActivity { + private String TAG = NoticeActivity.class.getSimpleName(); + + @BindView(R.id.positive) + TextView positive; + + private int mId; + private MediaPlayer mMediaPlayer; + private PowerManager mPowerManager; + private PowerManager.WakeLock mWakeLock; + private AudioManager mAudioManager; + + private Vibrator mVibrator; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_notice); + ButterKnife.bind(this); + + Intent intent = getIntent(); + mId = intent.getIntExtra("id", -1); + + mPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE); + mWakeLock = mPowerManager.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.SCREEN_DIM_WAKE_LOCK, "WakeAndLock"); + mVibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); + mWakeLock.acquire(60 * 1000L); + long[] pattern = {1000, 5000, 1000, 5000}; + mVibrator.vibrate(pattern, 0); + WakeUpUtils.wakeUpAndUnlockScreen(this); + + mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); + int maxVolume = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_ALARM); + mAudioManager.setStreamVolume(AudioManager.STREAM_ALARM, maxVolume, AudioManager.FLAG_PLAY_SOUND); +// mMediaPlayer.setAudioAttributes(new AudioAttributes.Builder().setContentType(AudioAttributes.USAGE_ALARM).build()); + Uri uri = Uri.parse("android.resource://com.uiui.aios/raw/new_alarm_clock"); + mMediaPlayer = new MediaPlayer(); + try { + mMediaPlayer.setDataSource(getApplicationContext(), uri); + mMediaPlayer.setAudioStreamType(AudioManager.STREAM_ALARM); + mMediaPlayer.prepare(); + } catch (IOException e) { + e.printStackTrace(); + } + mMediaPlayer.setLooping(true); + // 开始播放 +// mMediaPlayer.start(); + + positive.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + ApkUtils.openPackage(NoticeActivity.this,"com.uiuipad.zyinfo","com.uiuipad.zyinfo.activity.main.MainActivity"); + mVibrator.cancel(); + finish(); + } + }); + } + + + @Override + protected void onDestroy() { + super.onDestroy(); + if (mMediaPlayer != null) { + if (mMediaPlayer.isPlaying()) { + mMediaPlayer.stop(); + } + mMediaPlayer.release(); + mMediaPlayer = null; + } + } + + @Override + public void onBackPressed() { + super.onBackPressed(); + } + + @Override + protected void onPause() { + super.onPause(); + } +} diff --git a/app/src/main/java/com/uiuipad/find/activity/main/MainAPresenter.java b/app/src/main/java/com/uiuipad/find/activity/main/MainAPresenter.java index 889053b..952b0a9 100644 --- a/app/src/main/java/com/uiuipad/find/activity/main/MainAPresenter.java +++ b/app/src/main/java/com/uiuipad/find/activity/main/MainAPresenter.java @@ -12,6 +12,7 @@ import com.uiuipad.find.comm.CommonConfig; import com.uiuipad.find.network.NetInterfaceManager; import com.uiuipad.find.util.BitmapUtils; import com.uiuipad.find.util.CXAESUtil; +import com.uiuipad.find.util.ControlUtils; import com.uiuipad.find.util.Utils; import io.reactivex.rxjava3.annotations.NonNull; @@ -81,6 +82,7 @@ public class MainAPresenter implements MainAContact.Presenter { mView.setSnInfoNotFound(); } else if (code == 403) { mView.setSnInfoNoBind(); + ControlUtils.disableSystemControl(mContext); } } diff --git a/app/src/main/java/com/uiuipad/find/activity/main/MainActivity.java b/app/src/main/java/com/uiuipad/find/activity/main/MainActivity.java index feac99f..0c161d6 100644 --- a/app/src/main/java/com/uiuipad/find/activity/main/MainActivity.java +++ b/app/src/main/java/com/uiuipad/find/activity/main/MainActivity.java @@ -179,6 +179,12 @@ public class MainActivity extends BaseActivity implements MainAContact.MainView, mPresenter.getQrCode(); } + @Override + protected void onDestroy() { + super.onDestroy(); + mPresenter.detachView(); + } + @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == KeyEvent.ACTION_DOWN) { diff --git a/app/src/main/java/com/uiuipad/find/hook/KuxinActivityController.java b/app/src/main/java/com/uiuipad/find/hook/KuxinActivityController.java new file mode 100644 index 0000000..f07605e --- /dev/null +++ b/app/src/main/java/com/uiuipad/find/hook/KuxinActivityController.java @@ -0,0 +1,47 @@ +package com.uiuipad.find.hook; + +import android.app.IActivityController; +import android.content.Intent; +import android.util.Log; + +public class KuxinActivityController extends IActivityController.Stub { + private static final String TAG = KuxinActivityController.class.getSimpleName(); + + @Override + public boolean activityStarting(Intent intent, String pkg) { + Log.e(TAG, "activityStarting: " + pkg + ", intent= " + intent); + //retrun false;//false 则不会启动,直接返回。 + return true; + } + + @Override + public boolean activityResuming(String pkg) { + Log.e(TAG, "activityResuming: " + pkg); + return true; + } + + @Override + public int appEarlyNotResponding(String processName, int pid, String annotation) { + Log.e(TAG, "appEarlyNotResponding: " + processName); + return 0; + } + + @Override + public boolean appCrashed(String processName, int pid, String shortMsg, String longMsg, long timeMillis, String stackTrace) { + Log.e(TAG, "appCrashed: " + processName); + return false; + } + + @Override + public int appNotResponding(String processName, int pid, String processStats) { + Log.e(TAG, "appNotResponding: " + processName); + return 0; + } + + @Override + public int systemNotResponding(String msg) { + Log.e(TAG, "systemNotResponding: " + msg); + return 1; + } +} + diff --git a/app/src/main/java/com/uiuipad/find/network/NetInterfaceManager.java b/app/src/main/java/com/uiuipad/find/network/NetInterfaceManager.java index 6c1542d..7878672 100644 --- a/app/src/main/java/com/uiuipad/find/network/NetInterfaceManager.java +++ b/app/src/main/java/com/uiuipad/find/network/NetInterfaceManager.java @@ -198,7 +198,7 @@ public class NetInterfaceManager { } mUploadIconPkgs = mMMKV.decodeStringSet(uploadIconPkgsKey, new HashSet<>()); - Log.e("init", "NetInterfaceManager: mUploadIconPkgs = "+mUploadIconPkgs ); + Log.e("init", "NetInterfaceManager: mUploadIconPkgs = " + mUploadIconPkgs); } private String getCacheDir() { @@ -282,25 +282,25 @@ public class NetInterfaceManager { public Observable getUpdateSnInfoControl() { Map params = new HashMap<>(); - params.put("wifi_name", NetInterfaceManager.convertToRequestBody(Utils.getWifiSsid(mContext))); - params.put("wifi_signal", NetInterfaceManager.convertToRequestBody(Utils.getWifiRssi(mContext))); - params.put("battery", NetInterfaceManager.convertToRequestBody(Utils.getBattery(mContext))); - params.put("bluetooth", NetInterfaceManager.convertToRequestBody(Utils.getBluetoothList())); - params.put("memory", NetInterfaceManager.convertToRequestBody(Utils.getUsedMemoryString(mContext))); - params.put("storage", NetInterfaceManager.convertToRequestBody(Utils.getDataTotalSize(mContext))); - params.put("memory_use", NetInterfaceManager.convertToRequestBody(Utils.getUsedMemoryString(mContext))); - params.put("storage_use", NetInterfaceManager.convertToRequestBody(Utils.getUsedSize(mContext))); - params.put("sn", NetInterfaceManager.convertToRequestBody(Utils.getSerial())); - params.put("xiaoku_version", NetInterfaceManager.convertToRequestBody(BuildConfig.VERSION_NAME)); - params.put("xiaoku_version_time", NetInterfaceManager.convertToRequestBody(ApkUtils.getAppLastUpdateTime(mContext, BuildConfig.APPLICATION_ID))); - params.put("desktop_version", NetInterfaceManager.convertToRequestBody(ApkUtils.getAPPVersionName(mContext, "com.uiuipad.os"))); - params.put("desktop_version_time", NetInterfaceManager.convertToRequestBody(ApkUtils.getAppLastUpdateTime(mContext, "com.uiuipad.os"))); - params.put("browser_version", NetInterfaceManager.convertToRequestBody(ApkUtils.getAPPVersionName(mContext, "com.uiuipad.browser"))); - params.put("browser_version_time", NetInterfaceManager.convertToRequestBody(ApkUtils.getAppLastUpdateTime(mContext, "com.uiuipad.browser"))); - params.put("imei", NetInterfaceManager.convertToRequestBody(Utils.getIMEI(mContext))); - params.put("model", NetInterfaceManager.convertToRequestBody(Build.MODEL)); - params.put("system", NetInterfaceManager.convertToRequestBody(Build.VERSION.RELEASE)); - params.put("rom", NetInterfaceManager.convertToRequestBody(Utils.getCustomVersion())); + params.put("wifi_name", convertToRequestBody(Utils.getWifiSsid(mContext))); + params.put("wifi_signal", convertToRequestBody(Utils.getWifiRssi(mContext))); + params.put("battery", convertToRequestBody(Utils.getBattery(mContext))); + params.put("bluetooth", convertToRequestBody(Utils.getBluetoothList())); + params.put("memory", convertToRequestBody(Utils.getUsedMemoryString(mContext))); + params.put("storage", convertToRequestBody(Utils.getDataTotalSize(mContext))); + params.put("memory_use", convertToRequestBody(Utils.getUsedMemoryString(mContext))); + params.put("storage_use", convertToRequestBody(Utils.getUsedSize(mContext))); + params.put("sn", convertToRequestBody(Utils.getSerial())); + params.put("xiaoku_version", convertToRequestBody(BuildConfig.VERSION_NAME)); + params.put("xiaoku_version_time", convertToRequestBody(ApkUtils.getAppLastUpdateTime(mContext, BuildConfig.APPLICATION_ID))); + params.put("desktop_version", convertToRequestBody(ApkUtils.getAPPVersionName(mContext, "com.uiuipad.os"))); + params.put("desktop_version_time", convertToRequestBody(ApkUtils.getAppLastUpdateTime(mContext, "com.uiuipad.os"))); + params.put("browser_version", convertToRequestBody(ApkUtils.getAPPVersionName(mContext, "com.uiuipad.browser"))); + params.put("browser_version_time", convertToRequestBody(ApkUtils.getAppLastUpdateTime(mContext, "com.uiuipad.browser"))); + params.put("imei", convertToRequestBody(Utils.getIMEI(mContext))); + params.put("model", convertToRequestBody(Build.MODEL)); + params.put("system", convertToRequestBody(Build.VERSION.RELEASE)); + params.put("rom", convertToRequestBody(Utils.getCustomVersion())); return mRetrofit.create(UpdateSnInfoApi.class) .updateSnInfo(params) @@ -510,7 +510,7 @@ public class NetInterfaceManager { public void updateAppInstall() { String jsonString = ApkUtils.getInstallAppInfo(mContext); - NetInterfaceManager.getInstance().getUpdateAppInstallControl(jsonString) + getInstance().getUpdateAppInstallControl(jsonString) .subscribe(new Observer() { @Override public void onSubscribe(@NonNull Disposable d) { @@ -569,7 +569,7 @@ public class NetInterfaceManager { //设置一个file文件 MultipartBody.Part body = MultipartBody.Part.createFormData("file", file.getName(), fileBody); Map params = new HashMap<>(); - params.put("package", NetInterfaceManager.convertToRequestBody(packageInfo.packageName)); + params.put("package", convertToRequestBody(packageInfo.packageName)); Call call = getUploadAppImgApi().uploadAppImg(params, body); call.enqueue(new RetryCallback(call, 1, 30 * 1000) { @Override diff --git a/app/src/main/java/com/uiuipad/find/push/PushManager.java b/app/src/main/java/com/uiuipad/find/push/PushManager.java index 23eeb06..1138c98 100644 --- a/app/src/main/java/com/uiuipad/find/push/PushManager.java +++ b/app/src/main/java/com/uiuipad/find/push/PushManager.java @@ -4,8 +4,11 @@ import android.annotation.SuppressLint; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; import android.graphics.Bitmap; import android.graphics.BitmapFactory; +import android.os.Build; import android.os.Handler; import android.os.PowerManager; import android.provider.Settings; @@ -17,10 +20,12 @@ import com.baidu.location.BDAbstractLocationListener; import com.baidu.location.BDLocation; import com.baidu.location.LocationClient; import com.google.gson.Gson; +import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.reflect.TypeToken; import com.tencent.mmkv.MMKV; import com.uiuipad.find.activity.AudioActivity; +import com.uiuipad.find.activity.NoticeActivity; import com.uiuipad.find.bean.kuxin.AppInfo; import com.uiuipad.find.bean.kuxin.BaseResponse; import com.uiuipad.find.bean.kuxin.SnSetting; @@ -33,9 +38,11 @@ import com.uiuipad.find.network.RetryCallback; import com.uiuipad.find.service.ManagerService; import com.uiuipad.find.service.main.MainService; import com.uiuipad.find.util.ApkUtils; +import com.uiuipad.find.util.CacheUtils; import com.uiuipad.find.util.Camera2BackgroundUtil; import com.uiuipad.find.util.CmdUtil; import com.uiuipad.find.util.ControlUtils; +import com.uiuipad.find.util.FileUtils; import com.uiuipad.find.util.TimeUtils; import com.uiuipad.find.util.ToastUtil; import com.uiuipad.find.util.Utils; @@ -136,6 +143,8 @@ public class PushManager { private static final String FORCE_STOP_APP = "32"; /*恢复出厂*/ private static final String RESTORE_FACTORY = "33"; + /*作业提醒*/ + private static final String HOMEWORK_NOTIFY = "34"; private PushManager(Context context) { @@ -227,11 +236,13 @@ public class PushManager { case BROWSER_CONTROL: break; case APP_REINSTALL: + installApp(extras); break; case APP_UNINSTALL: + uninstallApp(extras); break; case CLEAR_APP_CACHE: - + clearAppData(extras); break; case FRONT_CAMERA: ToastUtil.debugShow("收到管控:行为查看"); @@ -248,10 +259,54 @@ public class PushManager { ToastUtil.debugShow("收到管控:恢复出厂"); ControlUtils.doMasterClear(mContext); break; + case HOMEWORK_NOTIFY: { + Intent intent = new Intent(mContext, NoticeActivity.class); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + mContext.startActivity(intent); + } + break; default: } } + private void installApp(String extras) { + JsonObject jsonObject = GsonUtils.getJsonObject(extras); + try { + String pkg = jsonObject.get("package").getAsString(); + String app_url = jsonObject.get("app_url").getAsString(); + FileUtils.ariaDownload(mContext, app_url, jsonObject); + } catch (Exception e) { + Log.e(TAG, "installApp: " + e.getMessage()); + } + } + + private void clearAppData(String extras) { + JsonObject jsonObject = GsonUtils.getJsonObject(extras); + JsonElement jsonElement = jsonObject.get("package"); + if (!jsonElement.isJsonNull()) { + String pkg = jsonElement.getAsString(); + try { + new CacheUtils().clearApplicationUserData(mContext, pkg); + } catch (Exception e) { + Log.e(TAG, "clearAppData: " + e.getMessage()); + e.printStackTrace(); + } + } else { + Log.e(TAG, "clearAppData: null json"); + } + } + + private void uninstallApp(String extras) { + JsonObject jsonObject = GsonUtils.getJsonObject(extras); + JsonElement jsonElement = jsonObject.get("package"); + if (!jsonElement.isJsonNull()) { + String pkg = jsonElement.getAsString(); + ApkUtils.uninstallApp(mContext, pkg); + } else { + Log.e(TAG, "uninstallApp: null json"); + } + } + private void setControl(Context context, String type, String extras) { JsonObject jsonObject = GsonUtils.getJsonObject(extras); switch (type) { diff --git a/app/src/main/java/com/uiuipad/find/service/ManagerService.java b/app/src/main/java/com/uiuipad/find/service/ManagerService.java index bc8eb77..c971bff 100644 --- a/app/src/main/java/com/uiuipad/find/service/ManagerService.java +++ b/app/src/main/java/com/uiuipad/find/service/ManagerService.java @@ -33,17 +33,20 @@ import com.uiuipad.find.comm.CommonConfig; import com.uiuipad.find.network.NetInterfaceManager; import com.uiuipad.find.receiver.APKinstallReceiver; import com.uiuipad.find.receiver.BootReceiver; +import com.uiuipad.find.util.AppUtil; import com.uiuipad.find.util.ControlUtils; import com.uiuipad.find.util.TimeUtils; import java.util.concurrent.TimeUnit; +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; import io.reactivex.rxjava3.annotations.NonNull; 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; +import io.reactivex.rxjava3.schedulers.Schedulers; /** * @author jgy02 @@ -152,12 +155,7 @@ public class ManagerService extends Service implements NetworkUtils.OnNetworkSta @Override public void onNext(String action) { Log.e("killObserver", "onNext: " + action); -// ControlUtils.killPackage(ManagerService.this, JGYUtils.PACKAGE_APPSTORE); -// int is_activation = Settings.Global.getInt(getContentResolver(), CommonConfig.UIUI_ACTIVATION_KEY, 0); -// Log.e(TAG, "onReceive: is_activation = " + is_activation); -// if (is_activation == 0) { -// ControlUtils.killPackage(ManagerService.this, JGYUtils.PACKAGE_OS); -// } + killApp(); } @Override @@ -171,6 +169,21 @@ public class ManagerService extends Service implements NetworkUtils.OnNetworkSta } }; + private void killApp() { + Log.e(TAG, "killApp: "); + AppUtil.killPackage(ManagerService.this, "com.jxw.mskt.video"); + AppUtil.killPackage(ManagerService.this, "com.jxw.teacher.video"); + AppUtil.killPackage(ManagerService.this, "com.jxw.newyouer.video"); + AppUtil.killPackage(ManagerService.this, "com.jxw.question"); + AppUtil.killPackage(ManagerService.this, "com.jxw.launcher"); + AppUtil.killPackage(ManagerService.this, "com.uiui.zysn"); + AppUtil.killPackage(ManagerService.this, "com.uiui.sn"); + AppUtil.killPackage(ManagerService.this, "com.uiui.appstore"); + AppUtil.killPackage(ManagerService.this, "com.uiui.zy"); + AppUtil.killPackage(ManagerService.this, "com.uiui.zyappstore"); + AppUtil.killPackage(ManagerService.this, "com.sohu.inputmethod.sogou"); + } + @Override public IBinder onBind(Intent intent) { return null; @@ -204,6 +217,34 @@ public class ManagerService extends Service implements NetworkUtils.OnNetworkSta .throttleLast(3, TimeUnit.MINUTES) // .throttleLast(3, TimeUnit.SECONDS) .subscribe(killObserver); + + Observable.interval(0, 3, TimeUnit.MINUTES) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer() { + @Override + public void onSubscribe(@NonNull Disposable d) { + Log.e("interval", "onSubscribe: "); + } + + @Override + public void onNext(@NonNull Long aLong) { + Log.e("interval", "onNext: " + aLong); + if (!ControlUtils.getScreenStatus(ManagerService.this)) { + killApp(); + } + } + + @Override + public void onError(@NonNull Throwable e) { + Log.e("interval", "onError: " + e.getMessage()); + } + + @Override + public void onComplete() { + Log.e("interval", "onComplete: "); + } + }); } @Override diff --git a/app/src/main/java/com/uiuipad/find/service/SocketService.java b/app/src/main/java/com/uiuipad/find/service/SocketService.java index 68ba2d0..b96a373 100644 --- a/app/src/main/java/com/uiuipad/find/service/SocketService.java +++ b/app/src/main/java/com/uiuipad/find/service/SocketService.java @@ -105,13 +105,14 @@ public class SocketService extends Service implements NetworkUtils.OnNetworkStat case Intent.ACTION_USER_PRESENT: case Intent.ACTION_SCREEN_ON: mHandler.post(heartBeatRunnable);//开启心跳检测 - sendMsg(1); +// sendMsg(1); break; case Intent.ACTION_SCREEN_OFF: case Intent.ACTION_SHUTDOWN: case Intent.ACTION_FACTORY_RESET: case Intent.ACTION_MASTER_CLEAR: - sendMsg(0); +// sendMsg(0); + closeConnect(); break; default: break; @@ -200,13 +201,14 @@ public class SocketService extends Service implements NetworkUtils.OnNetworkStat public void sendMsg() { JsonObject jsonObject = new JsonObject(); jsonObject.addProperty("sn", Utils.getSerial()); - PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); - if (!pm.isScreenOn()) { - jsonObject.addProperty("is_online", 0); - //熄屏状态 - } else { - jsonObject.addProperty("is_online", 1); - } + jsonObject.addProperty("type", "ping"); +// PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); +// if (!pm.isScreenOn()) { +// jsonObject.addProperty("is_online", 0); +// //熄屏状态 +// } else { +// jsonObject.addProperty("is_online", 1); +// } if (null != client) { Log.i("JWebSocketClientService", "发送的消息:" + jsonObject.toString()); client.send(jsonObject.toString()); @@ -266,7 +268,9 @@ public class SocketService extends Service implements NetworkUtils.OnNetworkStat } else { //如果client已为空,重新初始化连接 client = null; - initSocketClient(); + if (ControlUtils.getScreenStatus(SocketService.this)) { + initSocketClient(); + } } //每隔一定的时间,对长连接进行一次心跳检测 if (ControlUtils.getScreenStatus(SocketService.this)) { diff --git a/app/src/main/java/com/uiuipad/find/service/main/MainService.java b/app/src/main/java/com/uiuipad/find/service/main/MainService.java index 3e0db2b..6e97e24 100644 --- a/app/src/main/java/com/uiuipad/find/service/main/MainService.java +++ b/app/src/main/java/com/uiuipad/find/service/main/MainService.java @@ -1,5 +1,7 @@ package com.uiuipad.find.service.main; +import android.app.ActivityManagerNative; +import android.app.IActivityManager; import android.app.NotificationChannel; import android.app.NotificationManager; import android.app.PendingIntent; @@ -11,6 +13,7 @@ import android.content.IntentFilter; import android.os.Binder; import android.os.Build; import android.os.IBinder; +import android.os.RemoteException; import android.provider.Settings; import android.text.TextUtils; import android.util.Log; @@ -36,9 +39,11 @@ import com.uiuipad.find.bean.aolelearn.AoleAppInfo; import com.uiuipad.find.bean.jxw.JxwResponse; import com.uiuipad.find.comm.CommonConfig; import com.uiuipad.find.gson.GsonUtils; +import com.uiuipad.find.hook.KuxinActivityController; import com.uiuipad.find.network.NetInterfaceManager; import com.uiuipad.find.util.ApkUtils; import com.uiuipad.find.util.AppUtil; +import com.uiuipad.find.util.Utils; import org.jetbrains.annotations.NotNull; @@ -88,7 +93,9 @@ public class MainService extends Service implements MainSContact.MainView, Netwo @Override public void onConnected(NetworkUtils.NetworkType networkType) { - mPresenter.updateSnInfo(); + if (Utils.isScreenOn(MainService.this)) { + mPresenter.updateSnInfo(); + } } @Override @@ -104,7 +111,7 @@ public class MainService extends Service implements MainSContact.MainView, Netwo } } - private static KillAppListener killAppListener; +// private static KillAppListener killAppListener; public interface KillAppListener { void killApp(String action); @@ -113,12 +120,12 @@ public class MainService extends Service implements MainSContact.MainView, Netwo private final ObservableOnSubscribe killSubscribe = new ObservableOnSubscribe() { @Override public void subscribe(ObservableEmitter emitter) throws Exception { - killAppListener = new KillAppListener() { - @Override - public void killApp(String action) { - emitter.onNext(action); - } - }; +// killAppListener = new KillAppListener() { +// @Override +// public void killApp(String action) { +// emitter.onNext(action); +// } +// }; } }; @@ -136,8 +143,12 @@ public class MainService extends Service implements MainSContact.MainView, Netwo AppUtil.killPackage(MainService.this, "com.jxw.newyouer.video"); AppUtil.killPackage(MainService.this, "com.jxw.question"); AppUtil.killPackage(MainService.this, "com.jxw.launcher"); - AppUtil.killPackage(MainService.this, "com.uiui.zyappstore"); AppUtil.killPackage(MainService.this, "com.uiui.zysn"); + AppUtil.killPackage(MainService.this, "com.uiui.sn"); + AppUtil.killPackage(MainService.this, "com.uiui.appstore"); + AppUtil.killPackage(MainService.this, "com.uiui.zy"); + AppUtil.killPackage(MainService.this, "com.uiui.zyappstore"); + AppUtil.killPackage(MainService.this, "com.sohu.inputmethod.sogou"); } @Override @@ -160,10 +171,20 @@ public class MainService extends Service implements MainSContact.MainView, Netwo mPresenter.attachView(this); Aria.download(this).register(); - Observable.create(killSubscribe) - .throttleLast(3, TimeUnit.MINUTES) -// .throttleLast(3, TimeUnit.SECONDS) - .subscribe(killObserver); +// Observable.create(killSubscribe) +// .throttleLast(3, TimeUnit.MINUTES) +//// .throttleLast(3, TimeUnit.SECONDS) +// .subscribe(killObserver); + +// IActivityManager activityManager = ActivityManagerNative.getDefault(); +// try { +// activityManager.setActivityController(new KuxinActivityController(), true); +// } catch (RemoteException e) { +// Log.e(TAG, "setActivityController: " + e.getMessage()); +// e.printStackTrace(); +// } +// IServiceManager iServiceManager = ServiceManagerNative.asInterface(); +// ServiceManager serviceManager = getSystemService() registerReceivers(); NetworkUtils.registerNetworkStatusChangedListener(this); @@ -281,7 +302,7 @@ public class MainService extends Service implements MainSContact.MainView, Netwo case Intent.ACTION_SHUTDOWN: case Intent.ACTION_FACTORY_RESET: case Intent.ACTION_MASTER_CLEAR: - killAppListener.killApp(action); +// killAppListener.killApp(action); break; default: break; @@ -367,7 +388,8 @@ public class MainService extends Service implements MainSContact.MainView, Netwo @Override public void getSelfAppFinish() { NetInterfaceManager.getInstance().updateAppInstall(); - mPresenter.getSnIsActivation(); + // TODO: 2023/11/29 暂时屏蔽 +// mPresenter.getSnIsActivation(); } @Override diff --git a/app/src/main/java/com/uiuipad/find/util/ControlUtils.java b/app/src/main/java/com/uiuipad/find/util/ControlUtils.java index 5f1bbd1..8b2e71f 100644 --- a/app/src/main/java/com/uiuipad/find/util/ControlUtils.java +++ b/app/src/main/java/com/uiuipad/find/util/ControlUtils.java @@ -175,7 +175,7 @@ public class ControlUtils { public static void disableSystemControl(Context context) { setUsbState(context, 0); setBluetooth(context, 1); - setDeveloperOptions(context, 0); + setDeveloperOptions(context, 1); setCanReset(context, 1); setActionBar(context, 1); // setNavigationBar(context, 0); @@ -220,7 +220,7 @@ public class ControlUtils { Settings.Global.putInt(context.getContentResolver(), Settings.Global.ADB_ENABLED, status); } Settings.System.putInt(context.getContentResolver(), CommonConfig.AOLE_ACTION_DEVELOPER_OPTIONS, status); - if (status == 1) { + if (status == 0) { Intent intent = new Intent(); intent.setAction("qch_developeroptions_close"); intent.setPackage("com.android.settings"); diff --git a/app/src/main/java/com/uiuipad/find/util/FileUtils.java b/app/src/main/java/com/uiuipad/find/util/FileUtils.java index 3957920..60dac64 100644 --- a/app/src/main/java/com/uiuipad/find/util/FileUtils.java +++ b/app/src/main/java/com/uiuipad/find/util/FileUtils.java @@ -7,6 +7,7 @@ import android.util.Log; import androidx.core.content.ContextCompat; import com.arialyy.aria.core.Aria; +import com.google.gson.JsonElement; import com.google.gson.JsonObject; import java.io.File; @@ -15,11 +16,13 @@ import java.math.BigInteger; import java.security.MessageDigest; public class FileUtils { + private static final String TAG = FileUtils.class.getSimpleName(); public static String getDownLoadPath(Context context) { - String path = ContextCompat.getExternalFilesDirs(context, Environment.DIRECTORY_DOWNLOADS)[0].getAbsolutePath(); - return path + File.separator; -} + String path = ContextCompat.getExternalFilesDirs(context, Environment.DIRECTORY_DOWNLOADS)[0].getAbsolutePath(); + return path + File.separator; + } + public static String getFileNamefromURL(String url) { int position = url.lastIndexOf("/"); return url.substring(position + 1); @@ -62,7 +65,18 @@ public class FileUtils { public static void ariaDownload(Context context, String url, JsonObject jsonObject) { String fileName = getFileNamefromURL(url); - String urlMD5 = jsonObject.get("app_md5").getAsString(); + JsonElement jsonElement = jsonObject.get("app_md5"); + if (jsonElement == null || jsonElement.isJsonNull()) { + Log.e(TAG, "ariaDownload: have not app_md5"); + Aria.download(context) + .load(url) //读取下载地址 + .setFilePath(getDownLoadPath(context) + fileName) + .ignoreFilePathOccupy() + .setExtendField(jsonObject.toString()) + .create(); //启动下载} + return; + } + String urlMD5 = jsonElement.getAsString(); Log.e("ariaDownload", "urlMD5=" + urlMD5); File file = new File(getDownLoadPath(context) + fileName); if (file.exists() && !file.isDirectory()) { diff --git a/app/src/main/java/com/uiuipad/find/util/ToastUtil.java b/app/src/main/java/com/uiuipad/find/util/ToastUtil.java index e26072f..755e436 100644 --- a/app/src/main/java/com/uiuipad/find/util/ToastUtil.java +++ b/app/src/main/java/com/uiuipad/find/util/ToastUtil.java @@ -10,7 +10,7 @@ import com.uiuipad.find.BuildConfig; import com.uiuipad.find.R; public class ToastUtil { - private static String TAG = ToastUtil.class.getSimpleName(); + private static final String TAG = ToastUtil.class.getSimpleName(); public static void show(final String msg) { ToastUtils.make() diff --git a/app/src/main/res/drawable/default_botton_bg.xml b/app/src/main/res/drawable/default_botton_bg.xml new file mode 100644 index 0000000..0abdaac --- /dev/null +++ b/app/src/main/res/drawable/default_botton_bg.xml @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-land/activity_main.xml b/app/src/main/res/layout-land/activity_main.xml index d48deff..157f4e0 100644 --- a/app/src/main/res/layout-land/activity_main.xml +++ b/app/src/main/res/layout-land/activity_main.xml @@ -187,7 +187,8 @@ @@ -236,7 +238,8 @@ @@ -236,14 +238,16 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 9918332..06bb122 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -42,4 +42,16 @@ true + diff --git a/app/src/main/res/xml/file_paths.xml b/app/src/main/res/xml/file_paths.xml new file mode 100644 index 0000000..c6e50a7 --- /dev/null +++ b/app/src/main/res/xml/file_paths.xml @@ -0,0 +1,9 @@ + + + + + diff --git a/app/src/main/res/xml/network.xml b/app/src/main/res/xml/network.xml new file mode 100644 index 0000000..dca93c0 --- /dev/null +++ b/app/src/main/res/xml/network.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/phone/res/values/strings.xml b/app/src/phone/res/values/strings.xml new file mode 100644 index 0000000..3d4f3f8 --- /dev/null +++ b/app/src/phone/res/values/strings.xml @@ -0,0 +1,3 @@ + + 时间守护 + diff --git a/niceimageview/build.gradle b/niceimageview/build.gradle index 28f7369..9e64725 100644 --- a/niceimageview/build.gradle +++ b/niceimageview/build.gradle @@ -11,6 +11,14 @@ android { } buildTypes { + Aigo1071Debug {} + Aigo1071Release {} + UnisocS6688Debug {} + UnisocS6688Release {} + teclast8183Debug {} + teclast8183Release {} + G10PDebug {} + G10PRelease {} U807UserDebug {} U807Debug {} U807Release {} diff --git a/verification-view/build.gradle b/verification-view/build.gradle index ce2ee75..c064136 100644 --- a/verification-view/build.gradle +++ b/verification-view/build.gradle @@ -13,6 +13,14 @@ android { } buildTypes { + Aigo1071Debug {} + Aigo1071Release {} + UnisocS6688Debug {} + UnisocS6688Release {} + teclast8183Debug {} + teclast8183Release {} + G10PDebug {} + G10PRelease {} U807UserDebug {} U807Debug {} U807Release {}