小编典典
在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方法中收到请求的结果,如下所示:
@Override
public void onRequestPermissionsResult(int permsRequestCode, String[] permissions, int[] grantResults){
switch(permsRequestCode){
case 200:
boolean writeAccepted = grantResults[0]==PackageManager.PERMISSION_GRANTED;
break;
}
}
收到结果后,你将需要适当地处理它们。
2020-03-19