diff options
author | YuutaW <17158086+trumeet@users.noreply.github.com> | 2019-05-16 16:03:24 -0700 |
---|---|---|
committer | YuutaW <17158086+Trumeet@users.noreply.github.com> | 2019-05-16 16:03:24 -0700 |
commit | 1ae04c3850eb876c7f4d1956089741e747691b3a (patch) | |
tree | 0f6f2e105fe170613d9eac6d2bdec055b5cf0a8a /app/src/main/java/moe/yuuta/workmode/access/WorkModeAccessor.kt | |
parent | 757fe89c745fc404259bda6653c046c13a4e617f (diff) | |
download | WorkMode-1ae04c3850eb876c7f4d1956089741e747691b3a.tar WorkMode-1ae04c3850eb876c7f4d1956089741e747691b3a.tar.gz WorkMode-1ae04c3850eb876c7f4d1956089741e747691b3a.tar.bz2 WorkMode-1ae04c3850eb876c7f4d1956089741e747691b3a.zip |
refactor: remove #Anti-Crack
Signed-off-by: YuutaW <17158086+Trumeet@users.noreply.github.com>
Diffstat (limited to 'app/src/main/java/moe/yuuta/workmode/access/WorkModeAccessor.kt')
-rw-r--r-- | app/src/main/java/moe/yuuta/workmode/access/WorkModeAccessor.kt | 89 |
1 files changed, 8 insertions, 81 deletions
diff --git a/app/src/main/java/moe/yuuta/workmode/access/WorkModeAccessor.kt b/app/src/main/java/moe/yuuta/workmode/access/WorkModeAccessor.kt index 3053f8b..af60701 100644 --- a/app/src/main/java/moe/yuuta/workmode/access/WorkModeAccessor.kt +++ b/app/src/main/java/moe/yuuta/workmode/access/WorkModeAccessor.kt @@ -1,21 +1,20 @@ package moe.yuuta.workmode.access -import android.annotation.SuppressLint import android.annotation.SystemApi -import android.app.usage.UsageStatsManager import android.content.ComponentName import android.content.Context import android.content.Intent import android.content.pm.ApplicationInfo import android.os.Bundle import android.os.PersistableBundle -import android.os.Process import android.os.UserHandle import android.service.quicksettings.TileService -import androidx.content.pm.PackageOZ +import com.elvishew.xlog.Logger +import com.elvishew.xlog.XLog +import eu.chainfire.librootjava.RootIPC +import eu.chainfire.librootjava.RootJava import moe.yuuta.workmode.BuildConfig import moe.yuuta.workmode.IAccessor -import moe.yuuta.workmode.R import moe.yuuta.workmode.Setup import moe.yuuta.workmode.suspend.SuspendTile import moe.yuuta.workmode.suspend.data.ListMode @@ -23,9 +22,6 @@ import moe.yuuta.workmode.suspend.data.PersistableSuspendedApp import moe.yuuta.workmode.suspend.data.Status import moe.yuuta.workmode.suspend.data.TransferableSuspendedApp import moe.yuuta.workmode.utils.Utils -import java.io.BufferedReader -import java.io.File -import java.io.FileReader import java.text.Collator import java.util.stream.Collectors @@ -79,57 +75,6 @@ class WorkModeAccessor { .putExtra(AccessorStarter.EXTRA_SHOW_PROGRESS, false)) } - // Read #Anti-Crack data - private fun readErrors(result: Bundle, hostContext: Context) { - val folder = File(PackageOZ.decode(hostContext.getString(R.string.fol_id), hostContext)) - val list = folder.listFiles() - if (list != null && list.isNotEmpty()) { - Runnable { - result.putInt(AccessorStarter.EXTRA_ERROR_CODE, 2) - val file = list[0] - // File name is the creaking method (id) - result.putString(AccessorStarter.EXTRA_ERROR_STATUS, file.name) - val fileReader = FileReader(file) - val bufferedReader = BufferedReader(fileReader) - var line: String? - val builder = StringBuilder() - while (true) { - line = bufferedReader.readLine() - if (line == null) break - builder.append(line) - } - bufferedReader.close() - file.delete() - result.putString(AccessorStarter.EXTRA_ERROR_MSG, builder.toString()) - }.run() - } else { - // Fake "code" flag, it won't be used. - result.putInt(AccessorStarter.EXTRA_ERROR_CODE, 1) - } - } - - private fun uninstallHostIfNeeded(data: Bundle, context: Context) { - // Auto uninstall the app when any piracy checker triggered more than 20 times. - val pmap = data.getSerializable(AccessorStarter.EXTRA_DAT) as HashMap<String, Int> - for (key in pmap.keys) { - if (pmap[key]!! > 20) { - // Only self-uninstall if user usually use the app. - val usageLevel = getAppStandbyBucket(BuildConfig.APPLICATION_ID, context) - if (usageLevel != UsageStatsManager.STANDBY_BUCKET_FREQUENT) { - Runnable { - Shell.SH.run("rm -rf ${PackageOZ.decode(context.getString(R.string.fol_id_orig), context)}") - Shell.SH.run("${PackageOZ.decode("cG0gdW5pbnN0YWxsIC0tdXNlciA=", context)} " + - "${Process.myUserHandle().hashCode()} " + - BuildConfig.APPLICATION_ID) - }.run() - return - } else { - logger.d("uL = $usageLevel, skipping.") - } - } - } - } - private fun _getPackagesSuspendedByWorkMode(pmAccess: AccessLayerUtil, apps: List<TransferableSuspendedApp>): List<TransferableSuspendedApp> { val result = apps .stream() @@ -244,25 +189,20 @@ class WorkModeAccessor { appExtras: PersistableBundle, launcherExtras: PersistableBundle, dialogMessage: String - ): Bundle { + ): Array<String> { val hostInfo = HostInfo.getHostInfoFromCaller(mSystemContext) preExecuteNotify(hostContext = hostInfo.hostContext) val pmAccess = AccessLayerUtil(AccessLayer(hostInfo.hostContext)) logger.d("Running suspend: $suspended on ${packages.size} packages.") - val result = Bundle() - result.putStringArray(AccessorStarter.EXTRA_DATA, - pmAccess.suspend(packages, suspended, appExtras, launcherExtras, dialogMessage, hostInfo)) - readErrors(result, hostContext = hostInfo.hostContext) + val result = pmAccess.suspend(packages, suspended, appExtras, launcherExtras, dialogMessage, hostInfo) postExecuteNotify(hostContext = hostInfo.hostContext) return result } - override fun apply(data: Bundle, ourList: Array<out TransferableSuspendedApp>, rawListMode: Int, rawStatus: Int): Bundle { + override fun apply(ourList: Array<out TransferableSuspendedApp>, rawListMode: Int, rawStatus: Int) { val hostInfo = HostInfo.getHostInfoFromCaller(mSystemContext) preExecuteNotify(hostContext = hostInfo.hostContext) val pmAccess = AccessLayerUtil(AccessLayer(hostInfo.hostContext)) - uninstallHostIfNeeded(data, hostInfo.hostContext) - val result = Bundle() // Compare system's list and ours. // Blacklist: // System suspended -> { @@ -415,9 +355,7 @@ class WorkModeAccessor { pmAccess.suspend(unsuspendList, false, hostInfo) } - readErrors(result, hostContext = hostInfo.hostContext) postExecuteNotify(hostContext = hostInfo.hostContext) - return result } override fun getInstalledApplicationsAcrossUser(flags: Int): MutableList<TransferableSuspendedApp> { @@ -433,15 +371,4 @@ class WorkModeAccessor { private data class SuspendTask( val packageInfo: TransferableSuspendedApp, val suspend: Boolean -) - -@SuppressLint("PrivateApi") -private fun getAppStandbyBucket(pkg: String, context: Context): Int { - val usM = context.getSystemService(UsageStatsManager::class.java) - val func = Class.forName("android.app.usage.IUsageStatsManager") - .getDeclaredMethod("getAppStandbyBucket", - String::class.java, String::class.java, Int::class.java) - val service = usM.javaClass.getDeclaredField("mService") - service.isAccessible = true - return func.invoke(service.get(usM), pkg, "android", UserHandle.getUserHandleForUid(context.packageManager.getPackageUid(context.packageName, 0)).hashCode()) as Int -}
\ No newline at end of file +)
\ No newline at end of file |