【问题标题】:How to debug/reset Android 6.0 permissions?如何调试/重置 Android 6.0 权限?
【发布时间】:2016-04-03 10:41:36
【问题描述】:

在迁移我的一个应用程序以使用 Android 6.0 权限系统时,我发现使用模拟器调试权限非常困难。

调查结果:

  • 在使用requestPermissions() 方法时,在应用信息屏幕中禁用权限不会重新显示授予权限对话框。
  • 重新安装应用似乎是使应用再次显示授予权限对话框的唯一方法。

使用 Android 模拟器调试权限的正确方法是什么?

【问题讨论】:

标签: android android-permissions android-6.0-marshmallow android-debug runtime-permissions


【解决方案1】:

实际上调试 Android 6.0 权限非常容易。您可以使用以下 ADB shell 命令将 当前前台应用 所有应用的权限重置为“安装状态”:

adb shell pm reset-permissions

注意:目前您无法重置特定包的运行时权限,包管理器 (pm) 工具帮助部分指出:

将所有运行时权限恢复为默认状态。

您可以使用 Android Studio 中的终端界面轻松执行reset-permissions 命令。请注意,ADB 命令仅在将 ADB 目录添加到 PATH 系统环境变量时才有效(请参阅:add ADB to path variable)。

您还可以使用以下方法重置/撤销特定权限:

adb shell pm revoke com.your.package android.permission.WRITE_EXTERNAL_STORAGE

此命令的一个缺点是它会重新启动您的应用程序,但这不会重置所有应用程序的运行时权限。要授予权限,请将 revoke 替换为 grant。

【讨论】:

  • 这算不上“缺点”——这就是设计工作的方式!如果应用程序的权限发生更改,通常通过设置 UI 完成,则应用程序将重新启动(以便它有机会检查更改的权限)
  • 真的!但与提到的其他命令相比,这是一个缺点。因为该命令不会重新启动应用程序。
  • reset-permissions 不会杀死应用程序这一事实被作为一个错误提出 - code.google.com/p/android/issues/detail?id=195087
  • 该错误报告与 ADB 命令无关,因此我们无法确定它是否是预期的行为(对于命令)。
  • 如何重置特定应用的权限?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-26
  • 2016-11-22
  • 2016-12-03
  • 1970-01-01
  • 1970-01-01
  • 2019-07-26
相关资源
最近更新 更多