/storage/emulated/0/DCIM/Camera/VID_20230530_175508.mp4: Permission denied
时间: 2023-06-30 19:26:52 浏览: 260
这个问题的原因是你的应用程序没有被授予访问设备存储的权限。在AndroidManifest.xml文件中添加以下权限即可:
```xml
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
```
这两个权限允许应用程序读取和写入设备存储。请注意,从Android 10 (API级别29)开始,访问外部存储需要使用`MANAGE_EXTERNAL_STORAGE`权限,这个权限需要在应用程序的`targetSdkVersion`设置为30或更高版本才能使用。你需要在代码中检查设备的API级别,如果是29或更高版本,则需要请求`MANAGE_EXTERNAL_STORAGE`权限。
除了在AndroidManifest.xml文件中声明权限之外,还需要在运行时请求用户授权。在你的Activity或Fragment中,可以使用以下代码请求权限:
```java
private static final int REQUEST_STORAGE_PERMISSION = 1;
private void requestStoragePermission() {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED ||
ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE},
REQUEST_STORAGE_PERMISSION);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == REQUEST_STORAGE_PERMISSION) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 已经授权,可以进行相关操作
} else {
// 拒绝授权,无法进行相关操作
}
} else {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
```
在你的代码中调用`requestStoragePermission`方法请求权限。如果用户授权,系统将调用`onRequestPermissionsResult`方法,并传递相应的参数。在这里,我们检查是否授权,并根据结果进行相应的操作。
阅读全文