【问题标题】:app crashes on trying to open a pdf file from assets尝试从资产打开 pdf 文件时应用程序崩溃
【发布时间】:2017-12-26 19:16:49
【问题描述】:

我正在尝试使用 FileProvider 查看 assets 文件夹中存在的 pdf 文件,当应用程序运行时崩溃,显示的错误是

java.lang.IllegalArgumentException: 未能找到包含 /file:/android_asset/sample_books/a_walk_among_trees.pdf 的已配置根目录

我打开pdf文件的代码:

mTextView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String bookAssetPath = "file:///android_asset" +"/"+SAMPLE_BOOKS + "/" +mTextView.getText()+".pdf";
                File file = new File(bookAssetPath);
                Uri uri = FileProvider.getUriForFile(getContext(),"com.example.akl.kibrary.FileContentProvider",file);
                Intent intent = new Intent(Intent.ACTION_VIEW);
                intent.setDataAndType(uri,"application/pdf");
                intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                startActivity(intent);
            }
        });

清单文件中的提供者标签:

<provider android:name="android.support.v4.content.FileProvider"
              android:authorities="com.example.akl.kibrary.FileContentProvider"
              android:grantUriPermissions="true"
              android:exported="false">

        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/provider_paths"
             />
    </provider>

最后是 provider_paths.xml:

<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <internal-path name="sample_books" 
path="file:///android_asset/sample_books/" />
</paths>

提前谢谢你

【问题讨论】:

    标签: android android-studio pdf android-fileprovider


    【解决方案1】:

    file:///android_asset 可与 WebView... 一起使用,几乎没有别的。它绝对不适用于FileProvider

    您的选择是:

    • 将内容复制到文件,然后使用FileProvider提供它

    • 使用my StreamProvider,可以直接从assets服务

    • 编写您自己的 ContentProvider 以从资产流式传输

    【讨论】:

      猜你喜欢
      • 2022-11-15
      • 1970-01-01
      • 2018-07-13
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-04
      • 1970-01-01
      相关资源
      最近更新 更多