Loading packages/SettingsLib/SpaPrivileged/AndroidManifest.xml +2 −1 Original line number Diff line number Diff line Loading @@ -18,5 +18,6 @@ <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.settingslib.spaprivileged"> <uses-permission android:name="android.permission.MANAGE_USERS" /> <uses-permission android:name="android.permission.GRANT_RUNTIME_PERMISSIONS" /> </manifest> packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/app/AppOpsController.kt +11 −0 Original line number Diff line number Diff line Loading @@ -16,11 +16,14 @@ package com.android.settingslib.spaprivileged.model.app import android.app.AppOpsManager; import android.app.AppOpsManager.MODE_ALLOWED import android.app.AppOpsManager.MODE_ERRORED import android.app.AppOpsManager.Mode import android.content.Context import android.content.pm.ApplicationInfo import android.content.pm.PackageManager import android.os.UserHandle import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.map Loading @@ -44,17 +47,25 @@ class AppOpsController( private val setModeByUid: Boolean = false, ) : IAppOpsController { private val appOpsManager = context.appOpsManager private val packageManager = context.packageManager override val mode: LiveData<Int> get() = _mode override fun setAllowed(allowed: Boolean) { val mode = if (allowed) MODE_ALLOWED else modeForNotAllowed if (setModeByUid) { appOpsManager.setUidMode(op, app.uid, mode) } else { appOpsManager.setMode(op, app.uid, app.packageName, mode) } val permission = AppOpsManager.opToPermission(op) packageManager.updatePermissionFlags(permission, app.packageName, PackageManager.FLAG_PERMISSION_USER_SET, PackageManager.FLAG_PERMISSION_USER_SET, UserHandle.getUserHandleForUid(app.uid)) _mode.postValue(mode) } Loading packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/model/app/AppOpsControllerTest.kt +9 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import android.app.AppOpsManager.MODE_ERRORED import android.app.AppOpsManager.MODE_IGNORED import android.content.Context import android.content.pm.ApplicationInfo import android.content.pm.PackageManager import androidx.test.core.app.ApplicationProvider import androidx.test.ext.junit.runners.AndroidJUnit4 import com.android.settingslib.spaprivileged.framework.common.appOpsManager Loading @@ -31,6 +32,10 @@ import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mock import org.mockito.Mockito.any import org.mockito.Mockito.anyInt import org.mockito.Mockito.anyString import org.mockito.Mockito.doNothing import org.mockito.Mockito.verify import org.mockito.Mockito.`when` as whenever import org.mockito.Spy Loading @@ -45,9 +50,13 @@ class AppOpsControllerTest { @Mock private lateinit var appOpsManager: AppOpsManager @Mock private lateinit var packageManager: PackageManager @Before fun setUp() { whenever(context.appOpsManager).thenReturn(appOpsManager) doNothing().`when`(packageManager) .updatePermissionFlags(anyString(), anyString(), anyInt(), anyInt(), any()) } @Test Loading Loading
packages/SettingsLib/SpaPrivileged/AndroidManifest.xml +2 −1 Original line number Diff line number Diff line Loading @@ -18,5 +18,6 @@ <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.settingslib.spaprivileged"> <uses-permission android:name="android.permission.MANAGE_USERS" /> <uses-permission android:name="android.permission.GRANT_RUNTIME_PERMISSIONS" /> </manifest>
packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/app/AppOpsController.kt +11 −0 Original line number Diff line number Diff line Loading @@ -16,11 +16,14 @@ package com.android.settingslib.spaprivileged.model.app import android.app.AppOpsManager; import android.app.AppOpsManager.MODE_ALLOWED import android.app.AppOpsManager.MODE_ERRORED import android.app.AppOpsManager.Mode import android.content.Context import android.content.pm.ApplicationInfo import android.content.pm.PackageManager import android.os.UserHandle import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.map Loading @@ -44,17 +47,25 @@ class AppOpsController( private val setModeByUid: Boolean = false, ) : IAppOpsController { private val appOpsManager = context.appOpsManager private val packageManager = context.packageManager override val mode: LiveData<Int> get() = _mode override fun setAllowed(allowed: Boolean) { val mode = if (allowed) MODE_ALLOWED else modeForNotAllowed if (setModeByUid) { appOpsManager.setUidMode(op, app.uid, mode) } else { appOpsManager.setMode(op, app.uid, app.packageName, mode) } val permission = AppOpsManager.opToPermission(op) packageManager.updatePermissionFlags(permission, app.packageName, PackageManager.FLAG_PERMISSION_USER_SET, PackageManager.FLAG_PERMISSION_USER_SET, UserHandle.getUserHandleForUid(app.uid)) _mode.postValue(mode) } Loading
packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/model/app/AppOpsControllerTest.kt +9 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import android.app.AppOpsManager.MODE_ERRORED import android.app.AppOpsManager.MODE_IGNORED import android.content.Context import android.content.pm.ApplicationInfo import android.content.pm.PackageManager import androidx.test.core.app.ApplicationProvider import androidx.test.ext.junit.runners.AndroidJUnit4 import com.android.settingslib.spaprivileged.framework.common.appOpsManager Loading @@ -31,6 +32,10 @@ import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mock import org.mockito.Mockito.any import org.mockito.Mockito.anyInt import org.mockito.Mockito.anyString import org.mockito.Mockito.doNothing import org.mockito.Mockito.verify import org.mockito.Mockito.`when` as whenever import org.mockito.Spy Loading @@ -45,9 +50,13 @@ class AppOpsControllerTest { @Mock private lateinit var appOpsManager: AppOpsManager @Mock private lateinit var packageManager: PackageManager @Before fun setUp() { whenever(context.appOpsManager).thenReturn(appOpsManager) doNothing().`when`(packageManager) .updatePermissionFlags(anyString(), anyString(), anyInt(), anyInt(), any()) } @Test Loading