留存文件恢复

This commit is contained in:
Administrator 2025-08-06 14:43:32 +08:00
parent 2e26323913
commit 940929a50b
9 changed files with 51 additions and 381 deletions

View File

@ -24,13 +24,6 @@ class OpenAppService : JobIntentService() {
override fun onHandleWork(intent: Intent) {
println("IOSTQ:isCanAuto() == " + isCanAuto)
println("IOSTQ:getCanAutoLc() == " + canAutoLc)
recordPackageName?.let {
ServiceUtils.setEnableApp(it, true)
}
ServiceUtils.setEnableApp("org.mozilla.firefox", true)
ServiceUtils.setEnableApp("com.google.android.webview", true)
ServiceUtils.setEnableApp("com.android.chrome", true)
ServiceUtils.setEnableApp("com.UCMobile", true)
try {
ChangeDeviceInfoUtil.changeDevice(callBack = object : ChangeCallBack {
override fun changeSuccess() {

View File

@ -35,7 +35,6 @@ import com.android.grape.data.AppState.isNeedRestored
import com.android.grape.data.AppState.keepOpen
import com.android.grape.data.AppState.lang
import com.android.grape.data.AppState.logBuffer
import com.android.grape.data.AppState.paramsJson
import com.android.grape.data.AppState.proxyCountry
import com.android.grape.data.AppState.proxyIp
import com.android.grape.data.AppState.proxyPort
@ -93,7 +92,6 @@ object ConfigManager {
isNeedRestored = false
taskJson = null
installRet = false
paramsJson = null
recordPackageName = null
recordFileName = null
recordExtraFileName = null

View File

@ -1,23 +1,7 @@
package com.android.grape.net
import android.content.Context
import android.util.Log
import com.android.grape.data.AppState
import com.android.grape.data.AppState.clickServerTimeFromGP
import com.android.grape.data.AppState.clickTime
import com.android.grape.data.AppState.instalTimeFromGp
import com.android.grape.data.AppState.installTime
import com.android.grape.data.AppState.lastUpdateTime
import com.android.grape.data.AppState.paramsJson
import com.android.grape.data.AppState.recordPackageName
import com.android.grape.data.AppState.referer
import com.android.grape.data.AppState.taskJson
import com.android.grape.manager.TrackingManager.genInstallTimeFromGP
import com.android.grape.util.DeviceUtils.getGoogleAdId
import com.android.grape.util.FileUtils
import com.android.grape.util.ServiceUtils
import com.android.grape.util.TaskUtils
import com.blankj.utilcode.util.LogUtils
import java.io.BufferedInputStream
import java.io.ByteArrayOutputStream
import java.io.File
@ -28,7 +12,6 @@ import java.io.OutputStream
import java.io.UnsupportedEncodingException
import java.net.HttpURLConnection
import java.net.URL
import java.net.URLDecoder
/**
* @Time: 2025-07-16 16:07
@ -39,90 +22,6 @@ import java.net.URLDecoder
*/
object AfClient {
@Throws(IOException::class)
fun setInfo(context: Context): Boolean {
val url = "http://127.0.0.1:8090/ctl/setinfo"
//安装时间
try {
clickTime = taskJson!!.getLong("clickTime")
val deviceJo = paramsJson!!.getJSONObject("device")
// installTimeFromGP = (long) (clickTime / 1000) + (clickTime % 7) + 3;
installTime = System.currentTimeMillis()
Thread.sleep(2000)
Log.d("IOSTQ:installTime == ", installTime.toString() + "")
Log.d("IOSTQ:clickTime == ", clickTime.toString() + "")
val time = genInstallTimeFromGP(clickTime, installTime)
// installTimeFromGP = firstInstallTime / 1000;
installTime = System.currentTimeMillis()
lastUpdateTime = installTime
LogUtils.d("IOSTQ:lastUpdateTime ", lastUpdateTime.toString() + "")
deviceJo.put("firstInstallTime", installTime)
deviceJo.put("lastUpdateTime", lastUpdateTime)
deviceJo.put("installTimeFromGP", instalTimeFromGp)
val installServerTimeFromGP = time[1] // + (installTimeFromGP % 2) + 1;
deviceJo.put("installServerTimeFromGP", installServerTimeFromGP)
val clickTimeToGp = (clickTime / 1000)
deviceJo.put("clickTimeToGP", clickTimeToGp)
val clickServerTimeToGP = time[0] / 1000 // + (clickTimeToGp % 2) + 1;
deviceJo.put("clickServerTimeToGP", clickServerTimeToGP)
AppState.installServerTimeFromGP = installServerTimeFromGP
clickServerTimeFromGP = clickServerTimeToGP
if (taskJson!!.has("clickData")) {
val clickdata = taskJson!!.getJSONObject("clickData")
if (clickdata.has("referer") && clickdata.getString("referer").length > 10) {
referer = clickdata.getString("referer")
}
} else {
referer = ""
}
if (referer != null && referer!!.length > 10) {
deviceJo.put("referrerFromGP", URLDecoder.decode(referer, "UTF-8"))
} else {
deviceJo.put("referrerFromGP", "utm_source=google-play&utm_medium=organic")
deviceJo.put("clickServerTimeToGP", 0)
deviceJo.put("clickTimeToGP", 0)
deviceJo.put("installTimeFromGP", 0)
deviceJo.put("installServerTimeFromGP", 0)
}
//JSONObject proxyJo = paramsJson.getJSONObject("proxy");
//proxyJo.put("forwardIp", Util.getDelegateIp());
Log.d("IOSTQ", "firstInstalTime == " + installTime)
Log.d("IOSTQ", "paramsJson == " + paramsJson)
val origin_gaid: String = getGoogleAdId(context) ?: ""
deviceJo.put("origin_gaid", origin_gaid)
paramsJson!!.put("device", deviceJo)
val params = paramsJson.toString()
ServiceUtils.setEnableApp(recordPackageName ?: "", true)
ServiceUtils.setEnableApp("org.mozilla.firefox", true)
ServiceUtils.setEnableApp("com.google.android.webview", true)
ServiceUtils.setEnableApp("com.android.chrome", true)
ServiceUtils.writeFile("/data/system/device.txt", params)
Log.d("IOSTQ:param == ", params)
// paramsJson.put("proxy", proxyJo);
} catch (e: Exception) {
Log.d("IOSTQ", e.message!!)
e.printStackTrace()
}
// printStr("execSetJson params:"+params);
// writeFileToSDCard(params);
try {
// String ret = new MyPost().PostData(context, params.getBytes("utf-8"), url);
// Log.i("TaskUtils", "set info ret : " + ret);
} catch (e: Exception) {
e.printStackTrace()
}
return true
}
fun downloadFile(httpUrl: String, fileName: String): Boolean {
Log.i(
"AfClient",

View File

@ -222,16 +222,15 @@ object AppUtils {
val file = File(getRecordSdcardApkVerFileName(context))
var extraFile: File? = null
if (recordExtraFileName?.isNotEmpty() == true) {
extraFile = File(ContextUtils.getRecordExtraFileName(context))
extraFile = File(getRecordExtraFileName(context))
}
installRet = installApk(context, file, extraFile) && AppUtils.checkAppInstalled(
installRet = installApk(context, file, extraFile) && checkAppInstalled(
context,
recordPackageName
)
if (installRet && !videoProxy.contains("123.56.44.45")) {
//检查是否有新版本
file.delete()
extraFile?.delete()
}
@ -617,17 +616,12 @@ object AppUtils {
ret = downloadFile(extraUrl, getRecordExtraFileName(context))
}
if (isNeedRestored) {
println("IOSTQ:开始下载留存文件")
Log.i("AppUtils","IOSTQ:开始下载留存文件")
taskJson?.let {
if (it.has("BackupFileUrl1") && it.getString("BackupFileUrl1")
.isNotEmpty()
) {
var restored_zip =
"http://47.83.1.116/tt/upload/backupddj/" + it.getString("BackupFileUrl1")
if (backUpServerIp.isNotEmpty()) {
restored_zip =
"http://" + backUpServerIp + "/tt/" + it.getString("BackupFileUrl1")
}
var restored_zip = "http://47.83.1.116/tt/" + it.getString("BackupFileUrl1")
ret = downloadFile(restored_zip, getRecordDataFileName(context))
}
}

View File

@ -56,8 +56,7 @@ object BackupUtils {
}
try {
val zipDirName = getBaseFilesDir(context) + "/" + monitorDir + "/" + packageName
val zipFileName =
getBaseFilesDir(context) + "/" + monitorDir + "/" + packageName + ".zip"
val zipFileName = getBaseFilesDir(context) + "/" + monitorDir + "/" + packageName + ".zip"
Log.i(
"BackupUtils",
"backupDataFile-> zipDirName:$zipDirName ; zipFileName:$zipFileName"
@ -91,6 +90,7 @@ object BackupUtils {
getRecordTxtFileName(context)
)
chownSh(getMonitorDir(context), uid)
Log.d("TAG", "backupDataFile: ------------------>")
val copySucc = FileUtils.copyFolderSh(apkDataPath,zipDirName)
Log.i("BackupUtils", "copyFolder($apkDataPath,$zipDirName) = $copySucc")
if (copySucc) {
@ -344,8 +344,11 @@ object BackupUtils {
if (reloginDataDir == null) {
return false
}
unZipFileSh(zipFile, dataDir)
val dataFile = File("$dataDir$recordPackageName")
if (!dataFile.exists()) {
dataFile.mkdir()
}
unZipFileSh(zipFile, dataFile.absolutePath)
val userAnGroup = getUserAndGroupSh(
context,
@ -355,7 +358,7 @@ object BackupUtils {
Log.i("BackupUtils", "recoverRecordData->userAndGroup:$userAnGroup")
File(reloginDataDir).parentFile?.absolutePath?.let {
copyFolderSh(
"$dataDir/$recordPackageName",
"$dataDir$recordPackageName",
it
)
}

View File

@ -135,17 +135,18 @@ object FileUtils {
public fun forceMakeDir(file: File) {
if (!file.exists()) {
val parent = file.parentFile
parent?.exists()?.let {
if (!it) {
MockTools.exec("mkdir $parent")
forceMakeDir(parent)
// file.mkdirs();
} else {
MockTools.exec("mkdir $file")
}
}
file.mkdirs()
// val parent = file.parentFile
//
// parent?.exists()?.let {
// if (!it) {
// MockTools.exec("mkdir $parent")
// forceMakeDir(parent)
// // file.mkdirs();
// } else {
// MockTools.exec("mkdir $file")
// }
// }
}
}
@ -278,8 +279,7 @@ object FileUtils {
"start zipSh : $zipDirName ; $zipFileName"
)
try {
val zipDir = File(zipDirName)
val cmdString = "tar -zcvf $zipFileName -C ${zipDir.parentFile?.absolutePath ?: ""} ${zipDir.name}"
val cmdString = "tar -zcvf $zipFileName -C $zipDirName ."
Log.i("FileUtils", "zipSh-> cmd:$cmdString")
MockTools.exec(cmdString)
} catch (e: Exception) {
@ -575,7 +575,7 @@ object FileUtils {
fun writeAfLog() {
val filePath = "/data/data/${recordPackageName}/log.txt"
ShellUtils.execRootCmdAndGetResult("chmod 777 $filePath")
ShellUtil.execRootCmdAndGetResult("chmod 777 $filePath")
val afLog = ShellUtil.execRootCmdAndGetResult("cat $filePath")
val file = File(
Environment.getExternalStorageDirectory(),
@ -610,20 +610,20 @@ object FileUtils {
// 构造安全命令
val filePath = "/data/data/$packageName/device.txt"
val cmd = "sh -c 'printf %s '\''" + base64Content + "'\'' > " + filePath + "'"
val result = ShellUtils.execRootCmdAndGetResult(cmd)
ShellUtils.execRootCmdAndGetResult("chmod 777 $filePath")
val result = ShellUtil.execRootCmdAndGetResult(cmd)
ShellUtil.execRootCmdAndGetResult("chmod 777 $filePath")
}
fun runPlugin(packageName: String) {
val cmd =
"apmt patch add -n ArmCloudAF -p $packageName -f /sdcard/Download/ArmCloudAF_lo.apk"
val result = ShellUtils.execRootCmdAndGetResult(cmd)
val result = ShellUtil.execRootCmdAndGetResult(cmd)
LogUtils.d("FileUtils", "runPlugin: $result")
}
fun deletePlugin() {
val cmd = "apmt patch del -n ArmCloudAF"
val result = ShellUtils.execRootCmdAndGetResult(cmd)
val result = ShellUtil.execRootCmdAndGetResult(cmd)
LogUtils.d("FileUtils", "deletePlugin: $result")
}
@ -708,7 +708,7 @@ object FileUtils {
// 构造命令(注意 shell 特殊字符的转义)
val safeOldPath = src.absolutePath.replace(" ", "\\ ").replace("\"", "\\\"")
val safeNewPath = dst.absolutePath.replace(" ", "\\ ").replace("\"", "\\\"")
val cmd = "cp -r -f \"$safeOldPath\" \"$safeNewPath\""
val cmd = "cp -r -f \"$safeOldPath\"/* \"$safeNewPath\""
Log.i("TaskUtil", "copyFolderSh cmd: $cmd")

View File

@ -5,26 +5,17 @@ import android.util.Log
import com.android.grape.data.AppState.appVersion
import com.android.grape.data.AppState.appVersionCode
import com.android.grape.data.AppState.backUpServerIp
import com.android.grape.data.AppState.cacheJson
import com.android.grape.data.AppState.canAutoLc
import com.android.grape.data.AppState.clickServerTimeFromGP
import com.android.grape.data.AppState.clickTime
import com.android.grape.data.AppState.ctit
import com.android.grape.data.AppState.defaultPRoxyJo
import com.android.grape.data.AppState.forwardIp
import com.android.grape.data.AppState.fuzzy_domain
import com.android.grape.data.AppState.fuzzy_proxy
import com.android.grape.data.AppState.instalTimeFromGp
import com.android.grape.data.AppState.installServerTimeFromGP
import com.android.grape.data.AppState.installTime
import com.android.grape.data.AppState.isCanAuto
import com.android.grape.data.AppState.isNeedBackup
import com.android.grape.data.AppState.isNeedReg
import com.android.grape.data.AppState.isNeedRestored
import com.android.grape.data.AppState.keepOpen
import com.android.grape.data.AppState.lang
import com.android.grape.data.AppState.lastUpdateTime
import com.android.grape.data.AppState.paramsJson
import com.android.grape.data.AppState.preClickRecordId
import com.android.grape.data.AppState.proxyCountry
import com.android.grape.data.AppState.proxyIp
@ -32,27 +23,15 @@ import com.android.grape.data.AppState.proxyPort
import com.android.grape.data.AppState.recordFileName
import com.android.grape.data.AppState.recordId
import com.android.grape.data.AppState.recordPackageName
import com.android.grape.data.AppState.referer
import com.android.grape.data.AppState.regEmailJson
import com.android.grape.data.AppState.reloginRecordId
import com.android.grape.data.AppState.scriptOpenApp
import com.android.grape.data.AppState.taskJson
import com.android.grape.data.AppState.trackingLink
import com.android.grape.data.AppState.ua
import com.android.grape.data.AppState.videoProxy
import com.android.grape.net.AfClient.postData
import com.android.grape.util.DeviceUtils.getGoogleAdId
import com.android.grape.util.FileUtils.forceMakeDir
import com.android.grape.util.ServiceUtils.WriteFile
import com.android.grape.util.TaskUtils.execRecord
import com.android.grape.util.TaskUtils.getReferer
import com.android.grape.util.TaskUtils.setFinish
import com.android.grape.util.TaskUtils.setRecordExtraFileName
import com.blankj.utilcode.util.LogUtils
import org.json.JSONObject
import java.io.File
import java.io.IOException
import java.net.URLDecoder
/**
* @Time: 2025-20-16 17:20
@ -207,165 +186,6 @@ object JsonUtils {
}
}
/**
* 通过处理任务 JSON 对象并向参数 JSON 对象添加各种属性来初始化操作所需的 JSON 参数
* 处理设备优惠和其他相关数据以准备完整的 JSON 结构
*
* @param context 用于执行各种操作的应用程序上下文例如在初始化期间写入文件和发送事件
* 例如在初始化期间写入文件和发送事件
* @return 如果 JSON 参数初始化成功则返回 true否则返回 false
*/
fun initParamsJson(context: Context): Boolean {
paramsJson = JSONObject().apply {
try {
taskJson?.let {
val deviceJo = it.getJSONObject("device")
// LogUtils.d("deviceJo:$deviceJo")
val deviceParamJo: JSONObject = DeviceConvertUtil.MGConvert(deviceJo)
if (it.has("isCollectURL")) {
deviceJo.put("isCollectURL", true)
} else {
deviceJo.put("isCollectURL", false)
}
if (it.has("regInfo")) {
val regInfo = it.getJSONObject("regInfo")
var apks = File("/sdcard/Download/GoogleAccount.txt")
if (!apks.exists()) {
forceMakeDir(File("/sdcard/Download"))
apks = File("/sdcard/Download/GoogleAccount.txt")
}
WriteFile(apks.toString(), regInfo.toString())
sendRegEvent(context)
}
//add 20210409
val offerJo = it.getJSONObject("offer")
val apkprop = it.getJSONObject("apkProp")
val thirdDetect = offerJo.getString("thirdDetect")
if ("appsflyer".equals(thirdDetect, ignoreCase = true)) {
deviceParamJo.put("afVersion", offerJo.getString("thirdVer"))
}
deviceParamJo.put("installVersionFromGP", offerJo.getString("apkVer"))
put("device", deviceParamJo)
if (it.has("expand")) {
put("expand", it.getJSONObject("expand"))
}
put("offer", offerJo)
val proxyJo = defaultPRoxyJo
}
} catch (e: Exception) {
e.printStackTrace()
Log.i("JsonUtils", "initParamsJson error : " + e.message)
setFinish(context)
return false
}
}
return true
}
@Throws(IOException::class)
fun setRrInfo(context: Context): Boolean {
try {
clickTime = taskJson!!.getLong("clickTime")
val deviceJo = paramsJson!!.getJSONObject("device")
if (isNeedRestored) {
if (cacheJson != null) {
installTime =
cacheJson.getLong("firstInstallTime")
lastUpdateTime =
cacheJson.getLong("lastUpdateTime")
installServerTimeFromGP =
cacheJson.getLong("installServerTimeFromGP")
clickServerTimeFromGP =
cacheJson.getLong("clickServerTimeToGP")
instalTimeFromGp =
cacheJson.getLong("installTimeFromGP")
}
}
deviceJo.put("firstInstallTime", installTime)
deviceJo.put("lastUpdateTime", lastUpdateTime)
deviceJo.put("installTimeFromGP", instalTimeFromGp)
val installServerTimeFromGP = installServerTimeFromGP
deviceJo.put("installServerTimeFromGP", installServerTimeFromGP)
val clickTimeToGp = (clickTime / 1000)
deviceJo.put("clickTimeToGP", clickTimeToGp)
val clickServerTimeToGP = clickServerTimeFromGP
deviceJo.put("clickServerTimeToGP", clickServerTimeToGP)
if (taskJson!!.has("clickData")) {
val clickdata = taskJson!!.getJSONObject("clickData")
if (clickdata.has("referer")) {
referer = clickdata.getString("referer")
}
}
if (getReferer() != null) {
deviceJo.put("referrerFromGP", URLDecoder.decode(getReferer(), "UTF-8"))
} else {
deviceJo.put("referrerFromGP", "utm_source=google-play&utm_medium=organic")
deviceJo.put("clickServerTimeToGP", 0)
deviceJo.put("clickTimeToGP", 0)
deviceJo.put("installTimeFromGP", 0)
deviceJo.put("installServerTimeFromGP", 0)
}
val origin_gaid: String = getGoogleAdId(context) ?: ""
deviceJo.put("origin_gaid", origin_gaid)
paramsJson!!.put("device", deviceJo)
val params = paramsJson.toString()
ServiceUtils.setEnableApp(recordPackageName ?: "", true)
ServiceUtils.setEnableApp("org.mozilla.firefox", true)
ServiceUtils.setEnableApp("com.google.android.webview", true)
ServiceUtils.setEnableApp("com.android.chrome", true)
ServiceUtils.writeFile("/data/system/device.txt", params)
Log.d("IOSTQ:param == ", params)
return true
// paramsJson.put("proxy", proxyJo);
} catch (e: Exception) {
e.printStackTrace()
}
return false
}
/**
* 通过向指定的服务器URL提出邮政请求来发送注册事件
*
* @param上下文调用该方法的上下文用于执行网络操作
* @return True如果已成功处理注册事件错误如果操作期间发生错误
*/
private fun sendRegEvent(context: Context): Boolean {
val url = "http://123.56.44.45/tt/ddj/reg.do?recordId=$recordId"
Log.i("JsonUtils", "url:$url")
try {
val ret: String? = postData("".toByteArray(), url)
Log.i("JsonUtils", "ret:$ret")
val jo = JSONObject(ret ?: "")
if (jo.getInt("code") == 1) {
regEmailJson = jo.getJSONObject("emailInfo")
}
return true
} catch (e: Exception) {
e.printStackTrace()
}
return false
}
/**
* 在JSON配置上执行一组操作它删除了特定的日志文件处理JSON参数
* 并记录所需的数据如果例外它会记录错误并执行清理
@ -376,10 +196,8 @@ object JsonUtils {
@Throws(Exception::class)
fun execSetJson(context: Context) {
try {
JsonUtils.afterJson()
if (JsonUtils.initParamsJson(context)) {
afterJson()
execRecord(context)
}
} catch (e: Exception) {
e.printStackTrace()
Log.i("TaskUtils", "execSetJson error : " + e.message)

View File

@ -512,7 +512,7 @@ object ShellUtils {
fun unZipFileSh(zipFileName: String, dataDir: String) {
try {
val cmdString = "tar -zxvf $zipFileName --strip-components=1 -C $dataDir"
val cmdString = "tar -zxvf $zipFileName -C $dataDir"
Log.i("ShellUtils", "unZipFileSh-> cmd:$cmdString")
MockTools.exec(cmdString)
} catch (e: Exception) {

View File

@ -7,59 +7,45 @@ import android.os.Handler
import android.os.Looper
import android.provider.Settings
import android.util.Log
import com.android.grape.net.AfClient.downloadFile
import com.android.grape.MainApplication
import com.android.grape.data.AppState
import com.android.grape.data.AppState.afLog
import com.android.grape.data.AppState.apkDir
import com.android.grape.data.AppState.apk_path
import com.android.grape.data.AppState.appDataUrl
import com.android.grape.data.AppState.baoming
import com.android.grape.data.AppState.canAutoLc
import com.android.grape.data.AppState.clickTime
import com.android.grape.data.AppState.installRet
import com.android.grape.data.AppState.isCanAuto
import com.android.grape.data.AppState.logBuffer
import com.android.grape.data.AppState.monitorDir
import com.android.grape.data.AppState.nRandom
import com.android.grape.data.AppState.paramsJson
import com.android.grape.data.AppState.recordExtraFileName
import com.android.grape.data.AppState.recordFileName
import com.android.grape.data.AppState.recordPackageName
import com.android.grape.data.AppState.referer
import com.android.grape.data.AppState.regEmailJson
import com.android.grape.data.AppState.scriptOpenApp
import com.android.grape.data.AppState.baoming
import com.android.grape.util.FileUtils.getName
import com.android.grape.data.AppState.zip_name
import com.android.grape.data.AppState.apk_path
import com.android.grape.net.AfClient.postData
import com.android.grape.util.ContextUtils.getRecordDataDirName
import com.android.grape.data.AppState.taskJson
import com.android.grape.data.AppState.zip_name
import com.android.grape.job.DownloadAppJobService
import com.android.grape.job.MonitorService
import com.android.grape.job.UnInstallService
import com.android.grape.manager.ConfigManager
import com.android.grape.manager.ConfigManager.initDefaultAppJo
import com.android.grape.manager.ConfigManager.initDefaultProxyJo
import com.android.grape.sai.Utils
import com.android.grape.net.AfClient.downloadFile
import com.android.grape.net.AfClient.postData
import com.android.grape.util.AppUtils.execTargetApp
import com.android.grape.util.AppUtils.getApkPackageName
import com.android.grape.util.AppUtils.setTopApp
import com.android.grape.util.ContextUtils.getBaseFilesDir
import com.android.grape.util.ContextUtils.getRecordDataDirName
import com.android.grape.util.FileUtils.forceMakeDir
import com.android.grape.util.FileUtils.getName
import com.android.grape.util.FileUtils.getRecordDataFileName
import com.android.grape.util.JsonUtils.execSetJson
import com.blankj.utilcode.util.LogUtils
import org.json.JSONObject
import java.io.File
import java.io.IOException
import java.io.PrintWriter
import java.util.Locale
import kotlin.math.min
/**
@ -201,21 +187,17 @@ object TaskUtils {
)
LogUtils.d("IOSTQ:execReloginTask->result:$result")
if (result != null && result.isNotEmpty()) {
taskJson = JSONObject(result).apply {
val code = getInt("code")
taskJson = JSONObject(result)
val code = taskJson?.getInt("code")
if (code == 1) {
MockTools.exec("chmod 777 /data/data/com.android.grape/files/monitor")
MockTools.exec("chmod 777 /data/data/com.android.grape/files/monitor/apks")
JsonUtils.execSetJson(context)
execSetJson(context)
clickTime = 1
} else {
Log.i(
"TaskUtils",
"request result code invalid : $code"
)
Log.i("TaskUtils", "request result code invalid : $code")
setFinish(context)
}
}
} else {
Log.i("TaskUtils", "request result is null")
setFinish(context)
@ -333,23 +315,6 @@ object TaskUtils {
return false
}
val paramString: String
get() = paramsJson.toString()
public fun notcl(context: Context) {
val url = "http://127.0.0.1:8090/ctl/notcl"
try {
val ret: String = postData("".toByteArray(charset("utf-8")), url) ?: ""
Log.i("TaskUtils", "notcl ret : $ret")
} catch (e: Exception) {
e.printStackTrace()
}
}
fun openRecordApp(context: Context) {
if (scriptOpenApp == 0) {
recordPackageName?.let {