Android 11 Is:/storage/emulated/ permission denied
时间: 2023-11-02 22:00:23 浏览: 104
根据提供的引用内容,Android 11 在访问 `/storage/emulated/` 目录时可能会面临权限被拒绝的问题。这是由于 Android 11 引入了更严格的存储权限策略所导致的。为了解决这个问题,你可以考虑以下几种方法:
1. 使用新的存储访问框架(Scoped Storage):Android 11 引入了 Scoped Storage,它是一种更安全的存储访问方式。你可以使用新的 API 来访问应用专用目录和共享文件,而不是直接访问 `/storage/emulated/` 目录。这样可以避免权限问题并提高应用的安全性。
2. 请求适当的存储权限:如果你的应用确实需要访问 `/storage/emulated/` 目录,你需要在清单文件中声明适当的权限。在 AndroidManifest.xml 文件中添加以下代码:
```xml
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
```
并且在运行时请求权限。你可以使用权限请求 API 来请求用户授权访问存储。
3. 更新应用的目标SDK版本:将应用的 `targetSdkVersion` 更新到 Android 11 或更高版本,以确保应用遵循最新的权限策略。请注意,在更新目标SDK版本后,你可能需要适应新的存储访问方式。
请根据你的需求选择适合你的解决方案,并根据具体情况实施相应的更改。
相关问题
android /storage/emulated/:Permission denied
这个错误通常是因为您没有应用程序的存储权限。您可以在应用程序的清单文件中添加以下权限:
```
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
```
此外,如果您的设备运行的是 Android 6.0 或更高版本,则还需要在运行时请求存储权限。可以使用以下代码请求权限:
```java
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
REQUEST_CODE);
}
```
记得在 onRequestPermissionsResult() 方法中处理用户的响应。
Android Permission to access file: /storage/emulated/0/Download/下载_1.mp3 is denied
您的问题是关于Android权限访问文件的问题。从Android 10.0开始,即使在manifest文件中添加了读写权限,也不能直接访问内部存储路径。这是因为Android 10.0引入了一种新的存储访问框架,称为Scoped Storage。Scoped Storage旨在提高应用程序的数据隐私和安全性,并使应用程序更易于管理存储空间。因此,如果您的应用程序需要访问外部存储器中的文件,您需要请求用户授予您的应用程序访问外部存储器的权限。
以下是一种解决方法:
1.在manifest文件中添加以下权限:
```xml
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
```
2.在Android 10.0及更高版本中,您还需要在manifest文件中添加以下代码:
```xml
<application android:requestLegacyExternalStorage="true" ... >
...
</application>
```
3.在您的代码中,您需要使用以下代码请求用户授予您的应用程序访问外部存储器的权限:
```java
if (ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(thisActivity, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE);
}
```
4.如果用户授予了您的应用程序访问外部存储器的权限,则可以使用以下代码访问文件:
```java
File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "下载_1.mp3");
```