<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
>我应该向requestPermissions的用户索要每个人吗?
>我检查了几次,它只是崩溃说用户没有给android.permission.ACCESS_FINE_LOCATION但不是其他人的权限,为什么?
解决方法
should I ask for each one to the user with
requestPermissions
?
首先何时使用requestPermission?
当此方法未返回PERMISSION_GRANTED时,requestPermission仅在checkSelfPermission之后调用.
你可以在运行时找到android M需要的list of permission.这些权限中的每一个都是权限组的一部分. WRITE_EXTERNAL_PERMISSION来自android.permission-group.STORAGE,ACCESS_COARSE_LOCATION / ACCESS_FINE_LOCATION来自android.permission-group.LOCATION.
如果用户允许访问权限 – 例如ACCESS_COARSE_LOCATION-,则android将自动授予此权限组-i.e的访问权限.许可的group.LOCATION-.因此,如果您稍后检查ACelf_FINE_LOCATION的SelfPermission,则应该收到PackageManager.PERMISSION_GRANTED.
如果您的应用程序崩溃,则表示您在向用户请求权限组位置之前尝试调用,例如LocationServices.FusedLocationApi.requestLocationUpdates.
编辑:
不要忘记requestPermission是异步的.因此,请勿在requestPermission之后调用需要权限的方法.要调用需要权限的方法,您应该覆盖onRequestPermissionsResult,它会为您提供权限列表及其状态-granted / denied-.