编辑
2025-04-23
移动端
00

目录

背景
分析

背景

使用实时输入法:sonic输入法 时,提示java.lang.SecurityException提示

分析

sh
lixuefu@lixuefu-virtual-machine:~$ adb shell ime enable org.cloud.sonic.android/.keyboard.SonicKeyboard Exception occurred while executing 'ime': java.lang.SecurityException: uid 2000 does not have android.permission.WRITE_SECURE_SETTINGS. at android.app.ContextImpl.enforce(ContextImpl.java:2189) at android.app.ContextImpl.enforceCallingPermission(ContextImpl.java:2207) at com.android.server.inputmethod.InputMethodManagerService$ShellCommandImpl.lambda$onCommand$0$InputMethodManagerService$ShellCommandImpl(InputMethodManagerService.java:5590) at com.android.server.inputmethod.InputMethodManagerService$ShellCommandImpl$$ExternalSyntheticLambda0.accept(Unknown Source:4) at java.util.Arrays$ArrayList.forEach(Arrays.java:3805) at com.android.server.inputmethod.InputMethodManagerService$ShellCommandImpl.onCommand(InputMethodManagerService.java:5590) at com.android.modules.utils.BasicShellCommandHandler.exec(BasicShellCommandHandler.java:97) at android.os.ShellCommand.exec(ShellCommand.java:38) at com.android.server.inputmethod.InputMethodManagerService.onShellCommand(InputMethodManagerService.java:5564) at android.os.Binder.shellCommand(Binder.java:971) at android.os.Binder.onTransact(Binder.java:855) at com.android.internal.view.IInputMethodManager$Stub.onTransact(IInputMethodManager.java:535) at com.android.server.inputmethod.InputMethodManagerService.onTransact(InputMethodManagerService.java:1819) at com.android.server.inputmethod.OplusInputMethodManagerService.onTransact(OplusInputMethodManagerService.java:186) at android.os.Binder.execTransactInternal(Binder.java:1227) at android.os.Binder.execTransact(Binder.java:1164) lixuefu@lixuefu-virtual-machine:~$ adb shell ime set org.cloud.sonic.android/.keyboard.SonicKeyboard Exception occurred while executing 'ime': java.lang.SecurityException: uid 2000 does not have android.permission.WRITE_SECURE_SETTINGS. at android.app.ContextImpl.enforce(ContextImpl.java:2189) at android.app.ContextImpl.enforceCallingPermission(ContextImpl.java:2207) at com.android.server.inputmethod.InputMethodManagerService$ShellCommandImpl.lambda$onCommand$0$InputMethodManagerService$ShellCommandImpl(InputMethodManagerService.java:5590) at com.android.server.inputmethod.InputMethodManagerService$ShellCommandImpl$$ExternalSyntheticLambda0.accept(Unknown Source:4) at java.util.Arrays$ArrayList.forEach(Arrays.java:3805) at com.android.server.inputmethod.InputMethodManagerService$ShellCommandImpl.onCommand(InputMethodManagerService.java:5590) at com.android.modules.utils.BasicShellCommandHandler.exec(BasicShellCommandHandler.java:97) at android.os.ShellCommand.exec(ShellCommand.java:38) at com.android.server.inputmethod.InputMethodManagerService.onShellCommand(InputMethodManagerService.java:5564) at android.os.Binder.shellCommand(Binder.java:971) at android.os.Binder.onTransact(Binder.java:855) at com.android.internal.view.IInputMethodManager$Stub.onTransact(IInputMethodManager.java:535) at com.android.server.inputmethod.InputMethodManagerService.onTransact(InputMethodManagerService.java:1819) at com.android.server.inputmethod.OplusInputMethodManagerService.onTransact(OplusInputMethodManagerService.java:186) at android.os.Binder.execTransactInternal(Binder.java:1227) at android.os.Binder.execTransact(Binder.java:1164) lixuefu@lixuefu-virtual-machine:~$ adb shell pm grant org.cloud.sonic.android android.permission.WRITE_SECURE_SETTINGS Exception occurred while executing 'grant': java.lang.SecurityException: grantRuntimePermission: Neither user 2000 nor current process has android.permission.GRANT_RUNTIME_PERMISSIONS. at android.app.ContextImpl.enforce(ContextImpl.java:2189) at android.app.ContextImpl.enforceCallingOrSelfPermission(ContextImpl.java:2217) at com.android.server.pm.permission.PermissionManagerService.grantRuntimePermissionInternal(PermissionManagerService.java:1497) at com.android.server.pm.permission.PermissionManagerService.grantRuntimePermission(PermissionManagerService.java:1479) at android.permission.PermissionManager.grantRuntimePermission(PermissionManager.java:378) at com.android.server.pm.PackageManagerShellCommand.runGrantRevokePermission(PackageManagerShellCommand.java:2419) at com.android.server.pm.PackageManagerShellCommand.onCommand(PackageManagerShellCommand.java:260) at com.android.modules.utils.BasicShellCommandHandler.exec(BasicShellCommandHandler.java:97) at android.os.ShellCommand.exec(ShellCommand.java:38) at com.android.server.pm.PackageManagerService.onShellCommand(PackageManagerService.java:25926) at android.os.Binder.shellCommand(Binder.java:971) at android.os.Binder.onTransact(Binder.java:855) at android.content.pm.IPackageManager$Stub.onTransact(IPackageManager.java:4818) at com.android.server.pm.PackageManagerService.onTransact(PackageManagerService.java:9006) at android.os.Binder.execTransactInternal(Binder.java:1227) at android.os.Binder.execTransact(Binder.java:1164) lixuefu@lixuefu-virtual-machine:~$ adb shell ime enable org.cloud.sonic.android/.keyboard.SonicKeyboard Input method org.cloud.sonic.android/.keyboard.SonicKeyboard: now enabled for user #0 lixuefu@lixuefu-virtual-machine:~$ adb shell pm grant org.cloud.sonic.android android.permission.WRITE_SECURE_SETTINGS Exception occurred while executing 'grant': java.lang.SecurityException: Package org.cloud.sonic.android has not requested permission android.permission.WRITE_SECURE_SETTINGS at com.android.server.pm.permission.PermissionManagerService.grantRuntimePermissionInternal(PermissionManagerService.java:1563) at com.android.server.pm.permission.PermissionManagerService.grantRuntimePermission(PermissionManagerService.java:1479) at android.permission.PermissionManager.grantRuntimePermission(PermissionManager.java:378) at com.android.server.pm.PackageManagerShellCommand.runGrantRevokePermission(PackageManagerShellCommand.java:2419) at com.android.server.pm.PackageManagerShellCommand.onCommand(PackageManagerShellCommand.java:260) at com.android.modules.utils.BasicShellCommandHandler.exec(BasicShellCommandHandler.java:97) at android.os.ShellCommand.exec(ShellCommand.java:38) at com.android.server.pm.PackageManagerService.onShellCommand(PackageManagerService.java:25926) at android.os.Binder.shellCommand(Binder.java:971) at android.os.Binder.onTransact(Binder.java:855) at android.content.pm.IPackageManager$Stub.onTransact(IPackageManager.java:4818) at com.android.server.pm.PackageManagerService.onTransact(PackageManagerService.java:9006) at android.os.Binder.execTransactInternal(Binder.java:1227) at android.os.Binder.execTransact(Binder.java:1164)

经对比分析,是OV类开发者中开关:禁止权限监控,没打开,打开后,可以发现能正常设置

sh
lixuefu@lixuefu-virtual-machine:~$ adb shell ime set org.cloud.sonic.android/.keyboard.SonicKeyboard Input method org.cloud.sonic.android/.keyboard.SonicKeyboard selected for user #0 lixuefu@lixuefu-virtual-machine:~$ adb shell ime set org.cloud.sonic.android/.keyboard.SonicKeyboard Input method org.cloud.sonic.android/.keyboard.SonicKeyboard selected for user #0

本文作者:lixf6

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!