[英]android.Manifest.permission.WRITE_EXTERNAL_STORAGE - application crashes
我正在检查权限,如果我的android应用程序具有WRITE_EXTERNAL_STORAGE的权限。 我已经在应用程序清单中添加了。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
我正在使用代码:
try{
boolean hasPermission =this.checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED;
if ( hasPermission) {
Log.v("AppPerm", "Permission is granted");
Toast.makeText(getBaseContext(), "Permission is granted", Toast.LENGTH_LONG)
.show();
}
else {
msgbox("Error:Storage Permission Not Granted");
Toast.makeText(getBaseContext(), "Error:Storage Permission Not Granted", Toast.LENGTH_LONG)
.show();
}
}catch (Exception e){
Toast.makeText(getBaseContext(), e.toString(), Toast.LENGTH_LONG)
.show();
}
当执行此代码(在Android版本5.1中 )时,应用程序崩溃,并显示以下错误:
不幸的是,该应用程序已停止。
我不希望应用程序崩溃,这不是在捕获错误吗?
像Google 文档一样:
// Assume thisActivity is the current activity
int permissionCheck = ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.WRITE_EXTERNAL_STORAGE);
如果应用程序具有该权限,则该方法返回PackageManager.PERMISSION_GRANTED
,并且该应用程序可以继续进行操作。 如果该应用程序没有该权限,则该方法返回PERMISSION_DENIED
,并且该应用程序必须明确向用户询问权限。
更新:这对我很有用:
public boolean isStoragePermissionGranted() {
if (Build.VERSION.SDK_INT >= 23) {
if (checkSelfPermission(android.Manifest.permission. WRITE_EXTERNAL_STORAGE)
== PackageManager.PERMISSION_GRANTED) {
Log.v("tag","Permission is granted");
return true;
} else {
Log.v("tag","Permission is revoked");
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission. WRITE_EXTERNAL_STORAGE}, 1);
return false;
}
}
else { //permission is automatically granted on sdk<23 upon installation
Log.v("tag","Permission is granted");
return true;
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if(grantResults[0]== PackageManager.PERMISSION_GRANTED){
Log.v("tag","Permission: "+permissions[0]+ "was "+grantResults[0]);
//resume tasks needing this permission
}
}
希望对您也有用。
您已经使用SDK版本溢出了权限检查部分。
在棒棒糖之前,您不需要运行时权限。 因此,获取SDK版本并将其放在if条件下。
希望对您有帮助...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.