2

我有一种方法可以从我的应用程序中打开文件,并且此方法在每个操作系统上运行良好以进行内部存储,但是当来自 OS 6 及更高版本的 sdcard 想要打开文件时,我发现了一个错误:

找不到包含 /storage/BE02-07BA/WhatsApp/Media/WallPaper/download (1).jpg 的已配置根目录

我的代码如下:

try {
    File f = new File(feedItem.getFilePath());
    MimeTypeMap map = MimeTypeMap.getSingleton();
    String url = f.getName();
    url = URLEncoder.encode(url, "UTF-16").replace("+", "%20");
    String ext = MimeTypeMap.getFileExtensionFromUrl(url);
    String type = map.getMimeTypeFromExtension(ext.toLowerCase());
    if (type == null)
        type = "*/*";
    Uri uri = Uri.parse("www.google.com");
    Intent type_intent = new Intent(Intent.ACTION_VIEW, uri);
    Uri data = FileProvider.getUriForFile(mContext, BuildConfig.APPLICATION_ID + ".provider",f);
    type_intent.setDataAndType(data, type);
    type_intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

    mContext.startActivity(type_intent);
} catch (Exception e) {
    // Auto-generated catch block
    e.printStackTrace();
}
4

1 回答 1

0

试着把它放在你的 android manifest 上。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

于 2018-12-20T08:04:56.107 回答