How to grant `android.permission.WRITE_SETTINGS` to `com.termux.api` on One UI? I tried:
```bash adb shell pm grant com.termux.api android.permission.WRITE_SETTINGS ``` ```
Exception occurred while executing 'grant': java.lang.SecurityException: Permission android.permission.WRITE_SETTINGS is managed by role at com.android.server.permission.access.permission.PermissionService.access$setRuntimePermissionGranted(qb/112078060 0c34881cc0eb1448ef84494ffd84e7895f8ca1a512a6d95529948e34e73d349b:107) at com.android.server.permission.access.permission.PermissionService.setRuntimePermissionGranted$default(qb/112078060 0c34881cc0eb1448ef84494ffd84e7895f8ca1a512a6d95529948e34e73d349b:287) at com.android.server.permission.access.permission.PermissionService.grantRuntimePermission(qb/112078060 0c34881cc0eb1448ef84494ffd84e7895f8ca1a512a6d95529948e34e73d349b:10) at com.android.server.pm.permission.PermissionManagerService.grantRuntimePermission(qb/112078060 0c34881cc0eb1448ef84494ffd84e7895f8ca1a512a6d95529948e34e73d349b:3) at android.permission.PermissionManager.grantRuntimePermissionInternal(PermissionManager.java:682) at android.permission.PermissionManager.grantRuntimePermission(PermissionManager.java:645) at com.android.server.pm.PackageManagerShellCommand.runGrantRevokePermission(qb/112078060 0c34881cc0eb1448ef84494ffd84e7895f8ca1a512a6d95529948e34e73d349b:266) at com.android.server.pm.PackageManagerShellCommand.onCommand(qb/112078060 0c34881cc0eb1448ef84494ffd84e7895f8ca1a512a6d95529948e34e73d349b:1742) at com.android.modules.utils.BasicShellCommandHandler.exec(BasicShellCommandHandler.java:97) at android.os.ShellCommand.exec(ShellCommand.java:38) at com.android.server.pm.PackageManagerService$IPackageManagerImpl.onShellCommand(qb/112078060 0c34881cc0eb1448ef84494ffd84e7895f8ca1a512a6d95529948e34e73d349b:23) at android.os.Binder.shellCommand(Binder.java:1187) at android.os.Binder.onTransact(Binder.java:979) at android.content.pm.IPackageManager$Stub.onTransact(IPackageManager.java:5306) at com.android.server.pm.PackageManagerService$IPackageManagerImpl.onTransact(qb/112078060 0c34881cc0eb1448ef84494ffd84e7895f8ca1a512a6d95529948e34e73d349b:1) at android.os.Binder.execTransactInternal(Binder.java:1462) at android.os.Binder.execTransact(Binder.java:1401) ```
Aug 1, 10:44pm
The error you're encountering indicates that the android.permission.WRITE_SETTINGS permission is managed by a role on One UI (Samsung's Android skin). This means you cannot grant it directly via ADB for com.termux.api or any other app. Instead, you must assign the app to a role that includes this permission.
How to Grant WRITE_SETTINGS on One UI
Method 1: Use ADB to Assign a Role
One UI restricts WRITE_SETTINGS to apps assigned to the "Settings Manager" role. You can assign this role to com.termux.api using ADB:
Check available roles (optional):
bash
adb shell dpm list-roles
Look for android.app.role.SETTINGS_MANAGER or similar.