【发布时间】: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