Android M中权限被拒绝时该如何处理

M的开发者预览版2现在包含了一个运行时权限的新方法:Activity.shouldShowRequestPermissionRationale()。

它告诉你的app在实际显示权限对话框之前是否显示一个对正在请求权限的解释。

在app第一次安装的时候。这个方法会返回false,因此你可以直接请求任何需要的权限。如果用户以前拒绝了一个请求,这个方法将返回true。那样的话你应该考虑在再次触发权限对话框之前显示一个解释请求用途之类的信息。你应该仅在权限本身意思不明了的情况下才做这件事情。

最终,当app完全没有机会被授权的时候,调用shouldShowRequestPermissionRationale() 则返回false。这可能是几个原因导致的,比如用户在权限对话框中选择了"不再显示”。结果为false意味着额外显示任意的解释都是徒劳的。

请注意,bug。

在M 开发者预览版2上Fragment.shouldShowRequestPermissionRationale() 总是返回false。这个bug会在今后版本修复。与此同时你可以在Fragments 使用getActivity().shouldShowRequestPermissionRationale()。

查看我们运行时权限的sample :https://github.com/googlesamples/android-RuntimePermissions 

来源于:g+ Android Developers