|
@@ -616,6 +616,7 @@ object Global {
|
|
|
fresh: Boolean = false
|
|
fresh: Boolean = false
|
|
|
): BackupItem {
|
|
): BackupItem {
|
|
|
clearConv()
|
|
clearConv()
|
|
|
|
|
+ delay(3000)
|
|
|
// ModifierService.instance!!.toggleRcsSwitch(false)
|
|
// ModifierService.instance!!.toggleRcsSwitch(false)
|
|
|
val context = Utils.getContext()
|
|
val context = Utils.getContext()
|
|
|
val dest = File(
|
|
val dest = File(
|
|
@@ -644,21 +645,19 @@ object Global {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
val cmds = mutableListOf<String>()
|
|
val cmds = mutableListOf<String>()
|
|
|
- cmds.addAll(packages.flatMap { mutableListOf("pm suspend $it", "am force-stop $it") })
|
|
|
|
|
|
|
|
|
|
for (pkg in packages) {
|
|
for (pkg in packages) {
|
|
|
if (!shellRun("ls /data/data/$pkg")["error"]!!.contains("No such file or directory")) {
|
|
if (!shellRun("ls /data/data/$pkg")["error"]!!.contains("No such file or directory")) {
|
|
|
- cmds.add("tar zcf $dest/$pkg/data.tar.gz -C /data/data $pkg ")
|
|
|
|
|
|
|
+ cmds.add("tar zcpf $dest/$pkg/data.tar.gz -C /data/data $pkg ")
|
|
|
}
|
|
}
|
|
|
if (!shellRun("ls /data/user_de/0/$pkg")["error"]!!.contains("No such file or directory")) {
|
|
if (!shellRun("ls /data/user_de/0/$pkg")["error"]!!.contains("No such file or directory")) {
|
|
|
- cmds.add("tar zcf $dest/$pkg/data_de.tar.gz -C /data/user_de/0 $pkg ")
|
|
|
|
|
|
|
+ cmds.add("tar zcpf $dest/$pkg/data_de.tar.gz -C /data/user_de/0 $pkg ")
|
|
|
}
|
|
}
|
|
|
if (!shellRun("ls /sdcard/Android/data/$pkg")["error"]!!.contains("No such file or directory")) {
|
|
if (!shellRun("ls /sdcard/Android/data/$pkg")["error"]!!.contains("No such file or directory")) {
|
|
|
- cmds.add("tar zcf $dest/$pkg/data_ext.tar.gz -C /sdcard/Android/data $pkg ")
|
|
|
|
|
|
|
+ cmds.add("tar zcpf $dest/$pkg/data_ext.tar.gz -C /sdcard/Android/data $pkg ")
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- cmds.addAll(packages.reversed().map { "pm unsuspend $it" })
|
|
|
|
|
shellRun(*cmds.toTypedArray())
|
|
shellRun(*cmds.toTypedArray())
|
|
|
|
|
|
|
|
val backup = BackupItem(
|
|
val backup = BackupItem(
|
|
@@ -712,15 +711,11 @@ object Global {
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
shellRun(
|
|
shellRun(
|
|
|
- "pm suspend com.google.android.apps.messaging",
|
|
|
|
|
- "am force-stop com.google.android.apps.messaging",
|
|
|
|
|
- "pm suspend com.google.android.gms",
|
|
|
|
|
- "am force-stop com.google.android.gms",
|
|
|
|
|
- "pm suspend com.google.android.gsf"
|
|
|
|
|
|
|
+ "pm disable-user com.google.android.apps.messaging",
|
|
|
|
|
+ "pm disable-user com.google.android.gms",
|
|
|
|
|
+ "pm disable-user com.google.android.gsf"
|
|
|
)
|
|
)
|
|
|
- val packageManager = Utils.getContext().packageManager
|
|
|
|
|
for (pkg in packages) {
|
|
for (pkg in packages) {
|
|
|
- val uid = packageManager.getApplicationInfo(pkg, 0).uid
|
|
|
|
|
for (item in listOf("data.tar.gz", "data_de.tar.gz", "data_ext.tar.gz")) {
|
|
for (item in listOf("data.tar.gz", "data_de.tar.gz", "data_ext.tar.gz")) {
|
|
|
val file = File("${backup.path}/$pkg/$item")
|
|
val file = File("${backup.path}/$pkg/$item")
|
|
|
if (!file.exists()) {
|
|
if (!file.exists()) {
|
|
@@ -732,30 +727,26 @@ object Global {
|
|
|
"data_ext.tar.gz" -> "/sdcard/Android/data"
|
|
"data_ext.tar.gz" -> "/sdcard/Android/data"
|
|
|
else -> ""
|
|
else -> ""
|
|
|
}
|
|
}
|
|
|
- shellRun("tar zxf ${file.path} -C $dest")
|
|
|
|
|
|
|
+ shellRun(
|
|
|
|
|
+ "find $dest/$pkg -type f -delete",
|
|
|
|
|
+ "tar zxf ${file.path} -C $dest --exclude \"**/AndroidPlatformServices.apk\""
|
|
|
|
|
+ )
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
shellRun(
|
|
shellRun(
|
|
|
- "pm unsuspend com.google.android.gsf",
|
|
|
|
|
- "sleep 1",
|
|
|
|
|
- "pm unsuspend com.google.android.gms",
|
|
|
|
|
- )
|
|
|
|
|
- delay(5000)
|
|
|
|
|
- shellRun(
|
|
|
|
|
- "pm clear com.google.android.gms",
|
|
|
|
|
- "sleep 60",
|
|
|
|
|
- "pm unsuspend com.google.android.apps.messaging",
|
|
|
|
|
|
|
+// "pm clear com.google.android.gsf",
|
|
|
|
|
+ "pm enable com.google.android.gsf",
|
|
|
"sleep 1",
|
|
"sleep 1",
|
|
|
|
|
+// "pm clear com.google.android.gms",
|
|
|
|
|
+ "pm enable com.google.android.gms",
|
|
|
|
|
+// "sleep 30",
|
|
|
|
|
+ "pm enable com.google.android.apps.messaging",
|
|
|
|
|
+ "sleep 3",
|
|
|
CMD_MESSAGING_APP,
|
|
CMD_MESSAGING_APP,
|
|
|
|
|
+ "sleep 5",
|
|
|
|
|
+ "am start -a android.intent.action.SENDTO -d sms:+18583199738 --es sms_body \"Test\" --ez exit_on_sent false"
|
|
|
)
|
|
)
|
|
|
- delay(5000)
|
|
|
|
|
- ModifierService.instance!!.toggleRcsSwitch(true)
|
|
|
|
|
-// var success = false
|
|
|
|
|
-// ModifierService.instance!!.waitForRcsState(arrayOf(RcsConfigureState.CONFIGURED), 2.minutes)
|
|
|
|
|
-// .let {
|
|
|
|
|
-// success = it == RcsConfigureState.CONFIGURED
|
|
|
|
|
-// }
|
|
|
|
|
-// shellRun("am start -a android.intent.action.SENDTO -d sms:+18583199738 --es sms_body \"Test\" --ez exit_on_sent false")
|
|
|
|
|
|
|
+
|
|
|
return true
|
|
return true
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -779,11 +770,10 @@ object Global {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@JvmStatic
|
|
@JvmStatic
|
|
|
- fun isClashInstalled(): Boolean {
|
|
|
|
|
- val context = Utils.getContext()
|
|
|
|
|
|
|
+ fun isClashInstalled(context: Context): Boolean {
|
|
|
val packageManager = context.packageManager
|
|
val packageManager = context.packageManager
|
|
|
return try {
|
|
return try {
|
|
|
- packageManager.getPackageInfo("com.github.kr328.clash", 0)
|
|
|
|
|
|
|
+ packageManager.getPackageInfo("com.github.metacubex.clash.meta", 0)
|
|
|
true
|
|
true
|
|
|
} catch (e: Exception) {
|
|
} catch (e: Exception) {
|
|
|
false
|
|
false
|