|
|
@@ -633,8 +633,6 @@ object Global {
|
|
|
Files.newOutputStream(File(dest, "config.json").toPath())
|
|
|
)
|
|
|
}
|
|
|
- val dataDir = File(dest, "data")
|
|
|
- dataDir.mkdirs()
|
|
|
|
|
|
val packages = mutableListOf(
|
|
|
"com.google.android.apps.messaging",
|
|
|
@@ -642,7 +640,7 @@ object Global {
|
|
|
"com.google.android.gsf",
|
|
|
)
|
|
|
packages.forEach {
|
|
|
- File(dataDir, it).mkdirs()
|
|
|
+ File(dest, it).mkdirs()
|
|
|
}
|
|
|
|
|
|
val cmds = mutableListOf<String>()
|
|
|
@@ -650,13 +648,13 @@ object Global {
|
|
|
|
|
|
for (pkg in packages) {
|
|
|
if (!shellRun("ls /data/data/$pkg")["error"]!!.contains("No such file or directory")) {
|
|
|
- cmds.add("cp -r /data/data/$pkg $dataDir/$pkg/data")
|
|
|
+ cmds.add("tar zcf $dest/$pkg/data.tar.gz -C /data/data $pkg ")
|
|
|
}
|
|
|
if (!shellRun("ls /data/user_de/0/$pkg")["error"]!!.contains("No such file or directory")) {
|
|
|
- cmds.add("cp -r /data/user_de/0/$pkg $dataDir/$pkg/user_de")
|
|
|
+ cmds.add("tar zcf $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")) {
|
|
|
- cmds.add("cp -r /sdcard/Android/data/$pkg $dataDir/$pkg/external")
|
|
|
+ cmds.add("tar zcf $dest/$pkg/data_ext.tar.gz -C /sdcard/Android/data $pkg ")
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -666,7 +664,7 @@ object Global {
|
|
|
val backup = BackupItem(
|
|
|
createdAt = Date().time,
|
|
|
number = telephonyConfig.number,
|
|
|
- code = if (telephonyConfig.areaCode == null) "" else telephonyConfig.areaCode,
|
|
|
+ code = telephonyConfig.areaCode,
|
|
|
country = telephonyConfig.country,
|
|
|
mcc = telephonyConfig.mcc,
|
|
|
mnc = telephonyConfig.mnc,
|
|
|
@@ -691,6 +689,7 @@ object Global {
|
|
|
return backup
|
|
|
}
|
|
|
|
|
|
+ @SuppressLint("SdCardPath")
|
|
|
@JvmStatic
|
|
|
suspend fun restore(backup: BackupItem): Boolean {
|
|
|
save(
|
|
|
@@ -717,28 +716,24 @@ object Global {
|
|
|
val packageManager = Utils.getContext().packageManager
|
|
|
for (pkg in packages) {
|
|
|
val uid = packageManager.getApplicationInfo(pkg, 0).uid
|
|
|
- if (File("${backup.path}/data/$pkg/data").exists()) {
|
|
|
- cmds.add("rm -rf /data/data/$pkg/*")
|
|
|
- cmds.add("cp -r ${backup.path}/data/$pkg/data/* /data/data/$pkg")
|
|
|
- cmds.add("chown -R $uid:$uid /data/data/$pkg")
|
|
|
- }
|
|
|
- if (File("${backup.path}/data/$pkg/user_de").exists()) {
|
|
|
- cmds.add("rm -rf /data/user_de/0/$pkg/*")
|
|
|
- cmds.add("cp -r ${backup.path}/data/$pkg/user_de/* /data/user_de/0/$pkg")
|
|
|
- cmds.add("chown -R $uid:$uid /data/user_de/0/$pkg")
|
|
|
- }
|
|
|
- if (File("${backup.path}/data/$pkg/external").exists()) {
|
|
|
- if (File("${backup.path}/data/$pkg/external").listFiles()?.isNotEmpty() == true) {
|
|
|
- cmds.add("rm -rf /sdcard/Android/data/$pkg/*")
|
|
|
- cmds.add("cp -r ${backup.path}/data/$pkg/external/* /sdcard/Android/data/$pkg")
|
|
|
- cmds.add("chown -R $uid:$uid /sdcard/Android/data/$pkg")
|
|
|
+ for (item in listOf("data.tar.gz", "data_de.tar.gz", "data_ext.tar.gz")) {
|
|
|
+ val file = File("${backup.path}/$pkg/$item")
|
|
|
+ if (!file.exists()) {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ val dest = when (item) {
|
|
|
+ "data.tar.gz" -> "/data/data"
|
|
|
+ "data_de.tar.gz" -> "/data/user_de/0"
|
|
|
+ "data_ext.tar.gz" -> "/sdcard/Android/data"
|
|
|
+ else -> ""
|
|
|
}
|
|
|
+ cmds.add("tar zxf ${file.path} -C $dest")
|
|
|
}
|
|
|
}
|
|
|
cmds.addAll(packages.reversed().map { "pm unsuspend $it" })
|
|
|
- cmds.addAll(listOf(CMD_MESSAGING_APP))
|
|
|
+ cmds.addAll(listOf("sleep 1", CMD_MESSAGING_APP))
|
|
|
shellRun(*cmds.toTypedArray())
|
|
|
-// delay(2000)
|
|
|
+ delay(5000)
|
|
|
// ModifierService.instance!!.toggleRcsSwitch(false)
|
|
|
// delay(1000)
|
|
|
// ModifierService.instance!!.toggleRcsSwitch(true)
|