permissions
在6.0时代,需要在程序运行时获取相关权限,展开一个对话框询问是否授予该程序相应权限。
从第二次开始运行的时候,会增加一个选项框,“以后不再询问”,如果选择了这个选项,那么以后程序不会再询问是否授予权限了。
这时候选择了确认倒还好,之后倒方便了。
如果选择了拒绝,那之后也不会显示对话框,但是权限一直是拒绝的。这样是非常不好的体验,不知道的还以为程序崩溃了。
所以,我们需要在这个时候也显示相应对话框来告诉用户
shouldShowRequestPermissionRationale()
这个方法是AppCompact里面的,用于权限管理
为了帮助查找用户可能需要解释的情形,Android 提供了一个实用程序方法,即 shouldShowRequestPermissionRationale()。如果应用之前请求过此权限但用户拒绝了请求,此方法将返回 true。
注:如果用户在过去拒绝了权限请求,并在权限请求系统对话框中选择了 Don’t ask again 选项,此方法将返回 false。如果设备规范禁止应用具有该权限,此方法也会返回 false。
这是官网里面的解释。所以,如果用户选择了拒绝并且不再提醒,那么这个方法会返回false,通过这一点,就可以在适当的时候展开一个对话框,告诉用户到底发生了什么,需要怎么做。
实际测试中发现,这个时候如果直接调用requestPermissions()
也没用,因为刚才说了,已经选择不再提醒了。所以,需要告诉用户怎么打开权限:在app信息界面可以选择并控制所有的权限。