添加"WRITE_EXTERNAL_STORAGE"后仍然被拒绝
时间: 2023-11-09 21:05:51 浏览: 63
如果你在 Android 应用程序中使用了 WRITE_EXTERNAL_STORAGE 权限,但仍然无法访问外部存储,可能是因为您的应用程序版本低于 Android 6.0(API 级别 23)并且您没有在运行时请求该权限。
从 Android 6.0 开始,如果您的应用程序需要访问外部存储,则必须在运行时请求 WRITE_EXTERNAL_STORAGE 权限。您可以使用以下方法请求权限:
1. 在 AndroidManifest.xml 文件中添加以下权限:
```xml
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
```
2. 从 Android 6.0(API 级别 23)开始,您需要在运行时请求 WRITE_EXTERNAL_STORAGE 权限。您可以使用以下代码段请求权限:
```java
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
// You can use the API that requires the permission.
} else {
// You need to request the permission.
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, requestCode);
}
```
3. 当用户授予或拒绝权限请求时,系统会调用您的 onRequestPermissionsResult() 方法。在此方法中,您可以检查用户是否授予了所请求的权限:
```java
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE: {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// permission was granted, yay! Do the task you need to do.
} else {
// permission denied, boo! Disable the functionality that depends on this permission.
}
return;
}
}
}
```
请注意,您需要将 MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE 替换为您自己的请求代码。
阅读全文