aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/moe/yuuta/workmode/access
diff options
context:
space:
mode:
authorYuutaW <17158086+trumeet@users.noreply.github.com>2019-05-18 09:17:52 -0700
committerYuutaW <17158086+Trumeet@users.noreply.github.com>2019-05-18 09:17:52 -0700
commitbedce81f29d1d0e378725836b014e0ce0a521f69 (patch)
tree1812953518dc470714d8577d9c40272dc0d87e1a /app/src/main/java/moe/yuuta/workmode/access
parent1ae04c3850eb876c7f4d1956089741e747691b3a (diff)
downloadWorkMode-bedce81f29d1d0e378725836b014e0ce0a521f69.tar
WorkMode-bedce81f29d1d0e378725836b014e0ce0a521f69.tar.gz
WorkMode-bedce81f29d1d0e378725836b014e0ce0a521f69.tar.bz2
WorkMode-bedce81f29d1d0e378725836b014e0ce0a521f69.zip
fix(app): shrink & add MATCH_DISABLED_COMPONENTS flag & mark uninstalled apps as "unsafe" while loading the list
Signed-off-by: YuutaW <17158086+Trumeet@users.noreply.github.com>
Diffstat (limited to 'app/src/main/java/moe/yuuta/workmode/access')
-rw-r--r--app/src/main/java/moe/yuuta/workmode/access/AccessLayer.kt4
-rw-r--r--app/src/main/java/moe/yuuta/workmode/access/AccessLayerUtil.kt5
-rw-r--r--app/src/main/java/moe/yuuta/workmode/access/WorkModeAccessor.kt7
3 files changed, 9 insertions, 7 deletions
diff --git a/app/src/main/java/moe/yuuta/workmode/access/AccessLayer.kt b/app/src/main/java/moe/yuuta/workmode/access/AccessLayer.kt
index d3fccb6..ed6e75b 100644
--- a/app/src/main/java/moe/yuuta/workmode/access/AccessLayer.kt
+++ b/app/src/main/java/moe/yuuta/workmode/access/AccessLayer.kt
@@ -49,7 +49,7 @@ internal class AccessLayer(internal val mContext: Context) {
* Create a new process and access it.
*/
fun getSuspendedPackageAppExtras(packageName: String, userId: Int): PersistableBundle? {
- Os.setuid(mPM.getPackageUid(packageName, 0))
+ Os.setuid(mPM.getPackageUid(packageName, PackageManager.MATCH_DISABLED_COMPONENTS))
// ApplicationPackageManager ALWAYS uses hostContext.getOpPackageName() as the package name
// F**k Google
val func: Method = Class.forName("android.content.pm.IPackageManager")
@@ -78,7 +78,7 @@ internal class AccessLayer(internal val mContext: Context) {
mContext.getSystemService(LauncherApps::class.java).getSuspendedPackageLauncherExtras(packageName,
createUserHandleWithUserID(userId))
- fun getInstalledApplicationsAsUser(flags: Int, userId: Int): List<ApplicationInfo> =
+ fun getInstalledApplicationsAsUser(@PackageManager.ApplicationInfoFlags flags: Int, userId: Int): List<ApplicationInfo> =
mPM.getInstalledApplicationsAsUser(flags, userId)
companion object {
diff --git a/app/src/main/java/moe/yuuta/workmode/access/AccessLayerUtil.kt b/app/src/main/java/moe/yuuta/workmode/access/AccessLayerUtil.kt
index 7248198..08aed19 100644
--- a/app/src/main/java/moe/yuuta/workmode/access/AccessLayerUtil.kt
+++ b/app/src/main/java/moe/yuuta/workmode/access/AccessLayerUtil.kt
@@ -1,6 +1,7 @@
package moe.yuuta.workmode.access
import android.content.pm.ApplicationInfo
+import android.content.pm.PackageManager
import android.os.*
import com.elvishew.xlog.XLog
import moe.yuuta.workmode.R
@@ -80,10 +81,10 @@ internal class AccessLayerUtil(private val accessLayer: AccessLayer) {
accessLayer.getSuspendedPackageLauncherExtras(packageName = packageInfo.packageName,
userId = packageInfo.userId)
- fun getInstalledApplicationsAsUser(flags: Int, userId: Int): List<ApplicationInfo> =
+ fun getInstalledApplicationsAsUser(@PackageManager.ApplicationInfoFlags flags: Int, userId: Int): List<ApplicationInfo> =
accessLayer.getInstalledApplicationsAsUser(flags, userId)
- fun getInstalledApplicationsAnyUser(flags: Int): List<ApplicationInfo> {
+ fun getInstalledApplicationsAnyUser(@PackageManager.ApplicationInfoFlags flags: Int): List<ApplicationInfo> {
val userManager = accessLayer.mContext.getSystemService(UserManager::class.java)
val finalResult = mutableListOf<ApplicationInfo>()
val ids = userManager.getUsers(false)
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 af60701..7bfe2f4 100644
--- a/app/src/main/java/moe/yuuta/workmode/access/WorkModeAccessor.kt
+++ b/app/src/main/java/moe/yuuta/workmode/access/WorkModeAccessor.kt
@@ -5,6 +5,7 @@ import android.content.ComponentName
import android.content.Context
import android.content.Intent
import android.content.pm.ApplicationInfo
+import android.content.pm.PackageManager
import android.os.Bundle
import android.os.PersistableBundle
import android.os.UserHandle
@@ -87,7 +88,7 @@ class WorkModeAccessor {
return result
}
- private fun _getInstalledApplicationsAcrossUser(pmAccess: AccessLayerUtil, hostInfo: HostInfo, flags: Int): MutableList<TransferableSuspendedApp> {
+ private fun _getInstalledApplicationsAcrossUser(pmAccess: AccessLayerUtil, hostInfo: HostInfo, @PackageManager.ApplicationInfoFlags flags: Int): MutableList<TransferableSuspendedApp> {
val originalApplicationInfo = mutableMapOf<TransferableSuspendedApp, ApplicationInfo>()
val packages =
if (hostInfo.userId == UserHandle.USER_OWNER) {
@@ -110,7 +111,7 @@ class WorkModeAccessor {
for (userId in packagesWithUserIds.keys) {
// Create a hostContext to "enter" the target user without overriding "getUserId()" or
// access hidden api a lot.
- val appsInUser = pmAccess.getInstalledApplicationsAsUser(0, userId)
+ val appsInUser = pmAccess.getInstalledApplicationsAsUser(flags, userId)
val firstApp = appsInUser[0]
val targetContext = mSystemContext.createPackageContextAsUser(firstApp.packageName,
0,
@@ -230,7 +231,7 @@ class WorkModeAccessor {
// We use these two lists to determine whatever an app is suspended
// It it is suspended but not appears in systemSuspendedList, we know that
// it is suspended by other apps, like D**ital Wellbeing, we can just override it.
- val systemAllAppList = _getInstalledApplicationsAcrossUser(pmAccess, hostInfo, 0)
+ val systemAllAppList = _getInstalledApplicationsAcrossUser(pmAccess, hostInfo, PackageManager.MATCH_DISABLED_COMPONENTS)
val systemSuspendedList = _getPackagesSuspendedByWorkMode(pmAccess, systemAllAppList)
val listMode = when (rawListMode) {
1 -> ListMode.BLACKLIST