【发布时间】:2018-10-08 21:41:02
【问题描述】:
我需要在内部存储中打开包含图像的文件夹。
我使用以下代码。
Java
File folder = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "MyPhotos");
Intent intent = new Intent(Intent.ACTION_VIEW);
String path =folder.getPath();
Uri myImagesdir = Uri.parse("file://" + path );
intent.setDataAndType(myImagesdir,"*/*");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(intent);
路径
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="images" path="Pictures" />
<external-path name="external_files" path="."/>
<external-path name="files_root" path="Android/data/${applicationId}"/> </paths>
清单
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.example.android.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
xml/file_paths
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="images" path="Pictures" />
<external-path name="external_files" path="."/>
<external-path name="files_root" path="Android/data/${applicationId}"/>
</paths>
错误
致命异常:主进程:android.apps.bnb.company.myphotos,PID: 22482 android.os.FileUriExposedException: file:///storage/emulated/0/Pictures/MyPhotos 暴露在应用程序之外 通过 Intent.getData()
还有其他方法可以打开内部存储中的文件夹吗?谢谢!
更新 #1
Uri myImagesdir = Uri.parse("file://" + path );
与
Uri myImagesdir = Uri.parse("content://" + path );
错误消失了。
无论如何我必须选择总是应用程序来打开这个文件夹。
是否可以默认使用“我的文件”应用打开某个文件夹?
【问题讨论】:
-
应该更改 Uri 访问权限。查看this答案。
-
@vvy 嗨!是
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);线吗? -
@SahilKumar 嗨!正是我在发布我的问题之前所做的。我从那里拿了这条线
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); -
Is it possibility to use My Files app by default to open certain folder?你想达到什么目的?能详细点吗?
标签: java android android-intent directory