Loading src/com/android/permissioncontroller/permission/ui/ManagePermissionsActivity.java +10 −6 Original line number Diff line number Diff line Loading @@ -56,6 +56,7 @@ import com.android.permissioncontroller.permission.ui.handheld.AutoRevokeFragmen import com.android.permissioncontroller.permission.ui.handheld.PermissionAppsFragment; import com.android.permissioncontroller.permission.ui.legacy.AppPermissionActivity; import com.android.permissioncontroller.permission.ui.wear.AppPermissionsFragmentWear; import com.android.permissioncontroller.permission.utils.KotlinUtils; import com.android.permissioncontroller.permission.utils.Utils; import java.util.Random; Loading Loading @@ -181,12 +182,15 @@ public final class ManagePermissionsActivity extends FragmentActivity { APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION, sessionId, uid, packageName, autoRevokeAction); } else { if (KotlinUtils.INSTANCE.isROrAutoRevokeEnabled(getApplication(), packageName, userHandle)) { Log.i(LOG_TAG, "sessionId: " + sessionId + " Reaching AppPermissionGroupsFragment from intent. packageName " + packageName + " uid " + uid); + " Reaching AppPermissionGroupsFragment from intent. " + "packageName " + packageName + " uid " + uid); PermissionControllerStatsLog.write( APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION, sessionId, uid, packageName, openFromIntentAction); APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION, sessionId, uid, packageName, openFromIntentAction); } } } catch (PackageManager.NameNotFoundException e) { // Do no logging Loading src/com/android/permissioncontroller/permission/utils/KotlinUtils.kt +28 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import android.app.AppOpsManager import android.app.AppOpsManager.MODE_ALLOWED import android.app.AppOpsManager.MODE_FOREGROUND import android.app.AppOpsManager.MODE_IGNORED import android.app.AppOpsManager.OPSTR_AUTO_REVOKE_PERMISSIONS_IF_UNUSED import android.app.AppOpsManager.permissionToOp import android.app.Application import android.content.Context Loading Loading @@ -336,6 +337,33 @@ object KotlinUtils { } } /** * Determines if an app is R or above, or if it is Q-, and has auto revoke enabled * * @param app The currenct application * @param packageName The package name to check * @param user The user whose package we want to check * * @return true if the package is R+ (and not a work profile) or has auto revoke enabled */ fun isROrAutoRevokeEnabled(app: Application, packageName: String, user: UserHandle): Boolean { val userContext = Utils.getUserContext(app, user) val liveDataValue = LightPackageInfoLiveData[packageName, user].value val (targetSdk, uid) = if (liveDataValue != null) { liveDataValue.targetSdkVersion to liveDataValue.uid } else { val appInfo = userContext.packageManager.getApplicationInfo(packageName, 0) appInfo.targetSdkVersion to appInfo.uid } if (targetSdk <= Build.VERSION_CODES.Q) { val opsManager = app.getSystemService(AppOpsManager::class.java)!! return opsManager.unsafeCheckOpNoThrow(OPSTR_AUTO_REVOKE_PERMISSIONS_IF_UNUSED, uid, packageName) == MODE_ALLOWED } return true } /** * Grant all foreground runtime permissions of a LightAppPermGroup * Loading Loading
src/com/android/permissioncontroller/permission/ui/ManagePermissionsActivity.java +10 −6 Original line number Diff line number Diff line Loading @@ -56,6 +56,7 @@ import com.android.permissioncontroller.permission.ui.handheld.AutoRevokeFragmen import com.android.permissioncontroller.permission.ui.handheld.PermissionAppsFragment; import com.android.permissioncontroller.permission.ui.legacy.AppPermissionActivity; import com.android.permissioncontroller.permission.ui.wear.AppPermissionsFragmentWear; import com.android.permissioncontroller.permission.utils.KotlinUtils; import com.android.permissioncontroller.permission.utils.Utils; import java.util.Random; Loading Loading @@ -181,12 +182,15 @@ public final class ManagePermissionsActivity extends FragmentActivity { APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION, sessionId, uid, packageName, autoRevokeAction); } else { if (KotlinUtils.INSTANCE.isROrAutoRevokeEnabled(getApplication(), packageName, userHandle)) { Log.i(LOG_TAG, "sessionId: " + sessionId + " Reaching AppPermissionGroupsFragment from intent. packageName " + packageName + " uid " + uid); + " Reaching AppPermissionGroupsFragment from intent. " + "packageName " + packageName + " uid " + uid); PermissionControllerStatsLog.write( APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION, sessionId, uid, packageName, openFromIntentAction); APP_PERMISSION_GROUPS_FRAGMENT_AUTO_REVOKE_ACTION, sessionId, uid, packageName, openFromIntentAction); } } } catch (PackageManager.NameNotFoundException e) { // Do no logging Loading
src/com/android/permissioncontroller/permission/utils/KotlinUtils.kt +28 −0 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import android.app.AppOpsManager import android.app.AppOpsManager.MODE_ALLOWED import android.app.AppOpsManager.MODE_FOREGROUND import android.app.AppOpsManager.MODE_IGNORED import android.app.AppOpsManager.OPSTR_AUTO_REVOKE_PERMISSIONS_IF_UNUSED import android.app.AppOpsManager.permissionToOp import android.app.Application import android.content.Context Loading Loading @@ -336,6 +337,33 @@ object KotlinUtils { } } /** * Determines if an app is R or above, or if it is Q-, and has auto revoke enabled * * @param app The currenct application * @param packageName The package name to check * @param user The user whose package we want to check * * @return true if the package is R+ (and not a work profile) or has auto revoke enabled */ fun isROrAutoRevokeEnabled(app: Application, packageName: String, user: UserHandle): Boolean { val userContext = Utils.getUserContext(app, user) val liveDataValue = LightPackageInfoLiveData[packageName, user].value val (targetSdk, uid) = if (liveDataValue != null) { liveDataValue.targetSdkVersion to liveDataValue.uid } else { val appInfo = userContext.packageManager.getApplicationInfo(packageName, 0) appInfo.targetSdkVersion to appInfo.uid } if (targetSdk <= Build.VERSION_CODES.Q) { val opsManager = app.getSystemService(AppOpsManager::class.java)!! return opsManager.unsafeCheckOpNoThrow(OPSTR_AUTO_REVOKE_PERMISSIONS_IF_UNUSED, uid, packageName) == MODE_ALLOWED } return true } /** * Grant all foreground runtime permissions of a LightAppPermGroup * Loading