【问题标题】:Android Marshmallow permissionsAndroid Marshmallow 权限
【发布时间】:2015-12-05 07:33:53
【问题描述】:
我正在开发一个需要
的应用程序
`<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />`
所以我想知道是否可以要求用户接受权限组,而不是要求用户单独接受这些权限。在这种情况下,它是存储组。任何帮助表示赞赏。
【问题讨论】:
标签:
android
android-studio
android-6.0-marshmallow
【解决方案1】:
根据link,您需要在需要时同时询问这两个权限,而不是一起询问。如果您请求一个权限,系统将请求该权限所属的整个组的权限。如果用户授予权限,您将获得整个组的权限。
系统显示的对话框描述了您的应用需要访问的权限组;它没有列出具体的权限。例如,如果您请求 READ_CONTACTS 权限,系统对话框只会说您的应用需要访问设备的联系人。用户只需为每个权限组授予一次权限。如果您的应用请求该组中的任何其他权限(在您的应用清单中列出),系统会自动授予它们。当您请求权限时,系统会调用您的 onRequestPermissionsResult() 回调方法并传递 PERMISSION_GRANTED,就像用户通过系统对话框明确授予您的请求一样。
注意:您的应用仍然需要显式请求它需要的每个权限,即使用户已经在同一组中授予了另一个权限。此外,在未来的 Android 版本中,权限分组可能会发生变化。您的代码不应依赖于特定权限是否属于同一组的假设。
例如,假设您在应用清单中同时列出了 READ_CONTACTS 和 WRITE_CONTACTS。如果您请求 READ_CONTACTS 并且用户授予权限,然后您请求 WRITE_CONTACTS,系统会立即授予您该权限,而无需与用户交互。