在Android 6(Marshmallow)中,即使用户在安装时接受了你的所有权限,他们仍可以稍后决定从你手中夺走其中一些权限。
快速解决方案,但不建议使用:也许如果targetSdkVersion将gradle 更改为22,则问题将得到解决。
如何实施?(最佳做法)
- 首先确定用户的设备是否是棉花糖设备:
private boolean shouldAskPermission(){return(Build.VERSION.SDK_INT>Build.VERSION_CODES.LOLLIPOP_MR1);}- 如果
shouldAskPermission()
返回true
,则需要你的许可:
String[] perms = {"android.permission.WRITE_EXTERNAL_STORAGE"};int permsRequestCode = 200;requestPermissions(perms, permsRequestCode);该方法
requestPermissions(String[] permissions, int requestCode);是在Android Activity类内部找到的公共方法。
- 你将在
onRequestPermissionResult
方法中收到请求的结果,如下所示:
@Overridepublic void onRequestPermissionsResult(int permsRequestCode, String[] permissions, int[] grantResults){switch(permsRequestCode){ case 200: boolean writeAccepted = grantResults[0]==PackageManager.PERMISSION_GRANTED; break;}}收到结果后,你将需要适当地处理它们。



