W3h*_*hri 23 android android-permissions android-6.0-marshmallow
我目前正在玩android m的新权限系统.我计划的是在我的应用内设置中添加一个屏幕,用户可以在其中授予或撤消权限.
屏幕看起来像常规系统设置屏幕,但会有其他信息,为什么我的应用程序需要特定权限.此设置屏幕将是文档中建议的常规权限处理的补充.
工作流程将是:
所以我的问题是,可以以编程方式撤销权限吗?我搜索了很多,但没有得到一些结果.
您可以撤消ADB Shell的许可.如果你考虑编写shell脚本并以编程方式完成所有这些,那么YES,否则NO
您可以使用新的ADB包管理器(pm)命令来授予和撤消已安装应用程序的权限.此功能对自动化测试很有用.
要授予权限,请使用包管理器的grant命令:
$ adb shell pm grant <package_name> <permission_name>
Run Code Online (Sandbox Code Playgroud)
例如,要授予com.example.myapp包记录音频的权限,请使用以下命令:
$ adb shell pm grant com.example.myapp android.permission.RECORD_AUDIO
Run Code Online (Sandbox Code Playgroud)
要撤消权限,请使用包管理器的revoke命令:
$ adb shell pm revoke <package_name> <permission_name>
Run Code Online (Sandbox Code Playgroud)
从 API 33 (Android 13) 开始,您可以通过revokeSelfPermissionOnKill API 以编程方式撤销之前授予的运行时权限。例如
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
context.revokeSelfPermissionOnKill(Manifest.permission.POST_NOTIFICATIONS)
}
Run Code Online (Sandbox Code Playgroud)
触发运行时权限的异步撤销。如果当前未授予该权限,则不会发生任何情况(即使用户稍后授予该权限)。
还有一个函数需要多个权限的集合来撤销。
请务必为此设置版本代码保护,因为目前 IDE 中似乎没有警告。不幸的是,这还没有被添加到 ContextCompat 中。
| 归档时间: |
|
| 查看次数: |
10224 次 |
| 最近记录: |