使用fileprovider加载文本文件时的ERR_UNKNOWN_URL_SCHEME

时间:2017-01-23 06:58:22

标签: android android-fileprovider

manifest.xml中的提供程序

<!-- File Provider -->
    <provider
        android:name="android.support.v4.content.FileProvider"
        android:authorities="com.example.test.fileprovider"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/provider_paths"/>
    </provider>

资源文件

<?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

Uri uri = FileProvider.getUriForFile(context, context.getApplicationContext().getPackageName() + ".fileprovider", file);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(uri, "*/*");
intent.startActivity(intent);

参考here

说明: 我无法使用此文件提供程序打开图像,文本文件,pdf。 当我打开文件文本文件时,它给我ERR_UNKNOWN_URL_SCHEME。 如果我打开图像或pdf它没有任何显示

1 个答案:

答案 0 :(得分:2)

您需要在意图中添加“FLAG_GRANT_READ_URI_PERMISSION”标记:

Uri uri = FileProvider.getUriForFile(context, context.getApplicationContext().getPackageName() + ".fileprovider", file);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(uri, "*/*");
intent.addFlags(FLAG_GRANT_READ_URI_PERMISSION);
intent.startActivity(intent);

https://developer.android.com/reference/android/content/Intent.html#FLAG_GRANT_READ_URI_PERMISSION

  

FLAG_GRANT_READ_URI_PERMISSION如果设置,则为此Intent的收件人   将被授予对URI执行读取操作的权限   Intent的数据和ClipData中指定的任何URI。什么时候   应用于Intent的ClipData,所有URI以及递归   遍历Intent项目中的数据或其他ClipData将是   授予;只使用顶级Intent的授权标志。