【问题标题】:Handling Android M run-time permissions with multi module project使用多模块项目处理 Android M 运行时权限
【发布时间】:2016-05-29 13:01:16
【问题描述】:
我有一个多模块 Android M 应用。有几个模块需要“WRITE_EXTERNAL_STORAGE”和“READ_EXTERNAL_STORAGE”权限。
我想向用户请求一次权限:
1. 在哪里做这件事合适?
1.1 是否为每个活动授予权限?
1.2 在模块 1 中请求权限会授予所有应用程序权限吗?
1.3 有没有办法同时要求 READ & WRITE 权限?
【问题讨论】:
标签:
android
android-gradle-plugin
android-manifest
android-6.0-marshmallow
android-permissions
【解决方案1】:
Google 已发布指南,说明何时请求权限。这取决于上下文。您的问题 1.1 和 1.2 可以用相同的信息来回答:在应用程序级别授予和拒绝权限。它适用于您的应用程序包的每个部分。对于 1.3:它们被限制在一起成为一个组。当您要求一个时,您会自动获得该组中的所有内容。
来自 DroidconNYC NYC 的这次演讲将为您提供更多详细信息:https://youtu.be/WGz-alwVh8A。
【解决方案2】:
哪里是合适的地方?
在您需要这些权限之前,从您 UI 中的某个位置。
是否为每个活动授予权限?
不,它们适用于整个应用程序。
在模块 1 中请求权限是否会授予所有应用程序权限?
如果用户授予您权限,则在模块中请求权限会将权限授予整个应用程序。
有没有办法同时要求 READ 和 WRITE 权限?
在这种情况下,AFAIK 你不需要两者。只需询问WRITE_EXTERNAL_STORAGE。通常,您可以请求任意数量的权限; requestPermissions() 方法采用 String[] 的权限名称。