什么时候请求运行时权限?

When exactly to ask for Runtime Permission?

自从 Runtime Permissions 在 Android Marshmallow 中引入以来,我一直想应用请求权限的新方法,并且我已经阅读并理解了危险的权限以及如何检查它们并请求他们。

问题是,如果我有一个 Activity,其中包含用于打开相机的 Button打开Activity时是否检查并请求权限?或者当按钮被点击时?

请解释为什么首选您建议的方式。

Do I check and request the permission when the Activity is opened? Or when the button is clicked?

如果 Activity 的唯一目的是在单击按钮时拍照,我会在 activity 打开时请求权限。

如果Activity有其他作用,比如拍照按钮只是众多功能中的一个,我会在用户点击按钮时请求权限。

换句话说,一旦用户请求沿着一条(几乎)肯定需要许可的路径前进,就请求许可。

据我所知,单击按钮时请求允许打开相机

因为 activity 可以有很多组件可以请求像相机、联系人、写入存储等

so you must not ask for permission when activity opens but when you click on button ask for camera permission

如果你想发送短信而不是在 activity 的开头询问你什么时候需要发送。

Permissions Best Practices.

您可以下载官方示例应用here

希望你能明白。

从AndroidSDK 23开始,系统权限分为正常和危险两类:

  • 普通权限不会直接危及用户隐私。如果你的 应用程序在其清单中列出了一个正常的权限,系统授予 自动许可。

  • 危险权限可以让应用程序访问用户的 机密数据。

如果您的应用在其清单中列出了普通权限,系统会自动授予该权限。如果您列出危险权限,则用户必须明确批准您的应用。

有关详细信息,请参阅 Normal and Dangerous Permissions

If your app targets API 23, and you need to ask user for a dangerous permission (such as READ_CONTACT or READ_CALL_LOG etc.), you need to ask for permission in runtime.