【问题标题】:Zip file cannot be opened in third party app无法在第三方应用程序中打开 Zip 文件
【发布时间】:2020-11-04 18:48:27
【问题描述】:

我正在尝试将下载到 context.getFileDir() 的 zip 文件加载到第三方应用程序中

第三方的结果是“*No files are selected *” 我尝试检查 zip 文件是否下载成功,所以我从代码中解压缩它,似乎它已正确下载,应该打开在外部第三方应用程序中。

我已将 Provider 放入清单中以导出 URI

<provider
            android:name="androidx.core.content.FileProvider"
            android:authorities="${applicationId}.provider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                xmlns:tools="http://schemas.android.com/tools"
                tools:replace="android:resource"
                android:resource="@xml/provider_paths"/>
        </provider>

还有我的路

<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <files-path name="internal" path="." />
</paths>

这就是我想要做的事情

File file = FileHelper.GET_FILE(material);
                try {
                    unzip(file);
                } catch (IOException e) {
                    e.printStackTrace();
                }

Uri uri = FileProvider.getUriForFile(material.getContext(), material.getContext(). 
getApplicationContext().getPackageName() +
 ".provider", file);
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(uri, "application/zip");
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        material.getContext().startActivity(intent);

【问题讨论】:

  • 那个 unzip(file) 语句应该做什么?目前尚不清楚您想为第三方应用程序提供什么。压缩文件?解压后的文件?
  • 当你确实有这个例外时,为什么你仍然开始一个意图?
  • @blackapps 解压缩方法只是为了确保 zip 文件有效并且它是有效的,目的是让设备选择 zip 阅读器,以便我创建一个意图 tp 放置 uri有什么方法可以无意打开该文件?我不想创建内部阅读器
  • 如果 unzip 调用抛出异常,那为什么还要继续启动 Intent?我之前问过!
  • 您应该添加一个标志 Intent.FLAG_READ_URI_PERMISSION。 (或类似的东西)然后它应该工作。哈哈,我看到你自己已经回答了..

标签: android zip android-fileprovider


【解决方案1】:

我好像忘了在意图中添加这个标志

intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

添加此标志后一切正常

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多