【Appium踩坑】Permission denial: writing to settings requires:android.permission.WRITE_SECURE_SETTINGS

本文针对小米9和OPPO R17设备在使用Appium进行自动化测试时遇到的USB调试和权限监控问题提供了详细的解决方案。通过开启USB调试和禁止权限监控,解决了在执行adb命令时出现的未知服务器错误和权限拒绝问题。

设备:小米9 + Android 9.0 / OPPO R17 + Android 10
工具: Appium desktop 1.15.1

相关解答:github issue

1、解决方法
*小米设备: 开启 USB调试(安全设置)

(1) 手机-插入 sim卡
(2) 设置 - 更多设置 - 开发者选项 - USB调试(安全设置)- 开启

*OPPO设备: 开启 禁止权限监控

开发者选项 - 禁止权限监控 - 开启

2、详细报错信息
An unknown server-side error occurred while processing the command. 
Original error: Error executing adbExec. 
Original error: 'Command '/Users/xx/Library/Android/sdk/platform-tools/adb -P 5037 -s 77c9ea2f shell settings delete global hidden_api_policy_pre_p_apps' exited with code 255'; 
Stderr: 'Security exception: Permission denial: writing to settings
Failed to create session. Check https://github.com/appium/appium/issues/13802 for throubleshooting. Error executing adbExec. Original error: 'Command ''D:\tools\Android\Sdk\platform-tools\adb.exe' -P 5037 -s aae0a8e3 shell 'settings delete global hidden_api_policy_pre_p_apps;settings delete global hidden_api_policy_p_apps;settings delete global hidden_api_policy'' exited with code 255'; Command output: Exception occurred while executing 'delete': java.lang.SecurityException: Permission denial: writing to settings requires:android.permission.WRITE_SECURE_SETTINGS at com.android.providers.settings.SettingsProvider.enforceWritePermission(SettingsProvider.java:2622) at com.android.providers.settings.SettingsProvider.mutateGlobalSetting(SettingsProvider.java:1565) at com.android.providers.settings.SettingsProvider.mutateGlobalSetting(SettingsProvider.java:1557) at com.android.providers.settings.SettingsProvider.deleteGlobalSetting(SettingsProvider.java:1528) at com.android.providers.settings.SettingsProvider.call(SettingsProvider.java:571) at android.content.ContentProvider.call(ContentProvider.java:2548) at android.content.ContentProvider$Transport.call(ContentProvider.java:538) at com.android.providers.settings.SettingsService$MyShellCommand.deleteForUser(SettingsService.java:410) at com.android.providers.settings.SettingsService$MyShellCommand.onCommand(SettingsService.java:284) at com.android.modules.utils.BasicShellCommandHandler.exec(BasicShellCommandHandler.java:97) at android.os.ShellCommand.exec(ShellCommand.java:38) at com.android.providers.settings.SettingsService.onShellCommand(SettingsService.java:51) at android.os.Binder.shellCommand(Binder.java:1073) at android.os.Binder.onTransact(Binder.java:901) at android.os.Binder.execTransactInternal(Binder.java:1331) at android.os.Binder.execTransact(Binder.java:1268) Exception occurred while executing 'delete': java.lang.SecurityException: Permission denial: writing to settings requires:android.permission.WRITE_SECURE_SETTINGS at com.android.providers.settings.SettingsProvider.enforceWritePermission(SettingsProvider.java:2622) at com.android.providers.settings.SettingsProvider.mutateGlobalSetting(SettingsProvider.java:1565) at com.android.providers.settings.SettingsProvider.mutateGlobalSetting(SettingsProvider.java:1557) at com.android.providers.settings.SettingsProvider.deleteGlobalSetting(SettingsProvider.java:1528) at com.android.providers.settings.SettingsProvider.call(SettingsProvider.java:571) at android.content.ContentProvider.call(ContentProvider.java:2548) at android.content.ContentProvider$Transport.call(ContentProvider.java:538) at com.android.providers.settings.SettingsService$MyShellCommand.deleteForUser(SettingsService.java:410) at com.android.providers.settings.SettingsService$MyShellCommand.onCommand(SettingsService.java:284) at com.android.modules.utils.BasicShellCommandHandler.exec(BasicShellCommandHandler.java:97) at android.os.ShellCommand.exec(ShellCommand.java:38) at com.android.providers.settings.SettingsService.onShellCommand(SettingsService.java:51) at android.os.Binder.shellCommand(Binder.java:1073) at android.os.Binder.onTransact(Binder.java:901) at android.os.Binder.execTransactInternal(Binder.java:1331) at android.os.Binder.execTransact(Binder.java:1268) Exception occurred while executing 'delete': java.lang.SecurityException: Permission denial: writing to settings requires:android.permission.WRITE_SECURE_SETTINGS at com.android.providers.settings.SettingsProvider.enforceWritePermission(SettingsProvider.java:2622) at com.android.providers.settings.SettingsProvider.mutateGlobalSetting(SettingsProvider.java:1565) at com.android.providers.settings.SettingsProvider.mutateGlobalSetting(SettingsProvider.java:1557) at com.android.providers.settings.SettingsProvider.deleteGlobalSetting(SettingsProvider.java:1528) at com.android.providers.settings.SettingsProvider.call(SettingsProvider.java:571) at android.content.ContentProvider.call(ContentProvider.java:2548) at android.content.ContentProvider$Transport.call(ContentProvider.java:538) at com.android.providers.settings.SettingsService$MyShellCommand.deleteForUser(SettingsService.java:410) at com.android.providers.settings.SettingsService$MyShellCommand.onCommand(SettingsService.java:284) at com.android.modules.utils.BasicShellCommandHandler.exec(BasicShellCommandHandler.java:97) at android.os.ShellCommand.exec(ShellCommand.java:38) at com.android.providers.settings.SettingsService.onShellCommand(SettingsService.java:51) at android.os.Binder.shellCommand(Binder.java:1073) at android.os.Binder.onTransact(Binder.java:901) at android.os.Binder.execTransactInternal(Binder.java:1331) at android.os.Binder.execTransact(Binder.java:1268)
最新发布
10-09
Stacktrace: UnknownError: An unknown server-side error occurred while processing the command. Original error: Error executing adbExec. Original error: 'Command 'E:\\SDK\\platform-tools\\adb.exe -P 5037 -s 4XPFSWD6MB8X8XTS shell 'settings delete global hidden_api_policy_pre_p_apps;settings delete global hidden_api_policy_p_apps;settings delete global hidden_api_policy'' exited with code 255'; Stderr: 'Exception occurred while executing 'delete': java.lang.SecurityException: Permission denial: writing to settings requires:android.permission.WRITE_SECURE_SETTINGS at com.android.providers.settings.SettingsProvider.enforceWritePermission(SettingsProvider.java:2562) at com.android.providers.settings.SettingsProvider.mutateGlobalSetting(SettingsProvider.java:1563) at com.android.providers.settings.SettingsProvider.mutateGlobalSetting(SettingsProvider.java:1555) at com.android.providers.settings.SettingsProvider.deleteGlobalSetting(SettingsProvider.java:1526) at com.android.providers.settings.SettingsProvider.call(SettingsProvider.java:569) at android.content.ContentProvider.call(ContentProvider.java:2548) at android.content.ContentProvider$Transport.call(ContentProvider.java:538) at com.android.providers.settings.SettingsService$MyShellCommand.deleteForUser(SettingsService.java:410) at com.android.providers.settings.SettingsService$MyShellCommand.onCommand(SettingsService.java:284) at com.android.modules.utils.BasicShellCommandHandler.exec(BasicShellCommandHandler.java:97) at android.os.ShellCommand.exec(ShellCommand.java:38) at com.android.providers.settings.SettingsService.onShellCommand(SettingsService.java:51) at android.os.Binder.shellCommand(Binder.java:1073) at android.os.Binder.onTransact(Binder.java:901) at android.os.Binder.execTransactInternal(Binder.java:1331) at android.os.Binder.execTransact(Binder.java:1268) Exception occurred whil
07-03
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值