android Requested path /storage/040D-0D05/Music/recording_20240101233228.m4a doesn't appear under [/storage/emulated/0]
时间: 2024-01-02 21:23:04 浏览: 33
根据提供的引用内容,你遇到的问题是在Android应用中使用相机和相册时,图片无法显示。你已经查阅了一些资料,并发现在Android 10中,存储方式发生了变化,需要在AndroidManifest.xml文件中的application标签中添加一行代码才能生效。
对于你的问题,可能是由于文件路径的问题导致图片无法显示。你提到的路径"/storage/040D-0D05/Music/recording_20240101233228.m4a"并不在"/storage/emulated/0"目录下。这可能是因为Android 10中引入了Scoped Storage的概念,应用只能访问自己的私有目录,而无法直接访问外部存储的文件。
为了解决这个问题,你可以尝试使用FileProvider来获取正确的文件路径。首先,在AndroidManifest.xml文件中的application标签内添加以下代码:
```xml
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
```
然后,在res/xml目录下创建一个file_paths.xml文件,并添加以下内容:
```xml
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="external_files" path="." />
</paths>
```
接下来,你可以使用FileProvider.getUriForFile()方法来获取正确的文件URI。示例代码如下:
```java
File file = new File("/storage/040D-0D05/Music/recording_20240101233228.m4a");
Uri fileUri = FileProvider.getUriForFile(context, context.getPackageName() + ".fileprovider", file);
```
通过以上步骤,你应该能够获取到正确的文件URI,并将其用于显示图片或其他操作。