aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/moe/yuuta/workmode/access/WorkModeAccessor.kt
diff options
context:
space:
mode:
authorYuutaW <17158086+trumeet@users.noreply.github.com>2019-05-16 16:03:24 -0700
committerYuutaW <17158086+Trumeet@users.noreply.github.com>2019-05-16 16:03:24 -0700
commit1ae04c3850eb876c7f4d1956089741e747691b3a (patch)
tree0f6f2e105fe170613d9eac6d2bdec055b5cf0a8a /app/src/main/java/moe/yuuta/workmode/access/WorkModeAccessor.kt
parent757fe89c745fc404259bda6653c046c13a4e617f (diff)
downloadWorkMode-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.kt89
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