【发布时间】:2021-07-07 15:11:49
【问题描述】:
我想下载一个文件到Downloads 目录,然后当用户想要打开它时查看它。我可以将文件保存到下载目录,但是当我尝试使用Intent Chooser 查看它时出现问题。起初,我看到文件保存在路径中:storage/emulated/0/Download/filename 但我不知道如何为不同版本的设备访问此路径,所以我从我之前发布的问题中得到了这个问题的答案here .
现在,我也可以查看该文件,因为我知道上述说明中的filename、mimetype 和path。但是,问题是,对于在Android 10 上运行的Google Pixel 和Samsung m 30s 等设备,我只能通过Intent Chooser 查看文件,而当我尝试使用Realme 3 Pro、Oneplus 6 和一些在Android 10 上运行的MI 设备,在从Intent Chooser 中选择了一个应用程序后,它不会在这些设备上打开文件,而是尝试打开文件,然后在不打开文件的情况下跳回我的应用程序.对于Android 10 以下的设备,我似乎不存在这个问题。
我的DownloadRepository和MainActivity的代码可以分别在Github gistshere和here中找到。
我目前没有在Android Manifest 中附加FileProvider 的代码,在XML 中附加provider_paths 的代码,因为它适用于某些设备,但如果需要我也可以附加它:)
编辑
这是我的Android Manifest 和path for FileProvider:
Android Manifest 权限和 FileProvider
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="28" />
<uses-permission
android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
<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"
android:resource="@xml/file_paths" />
</provider>
file_paths.xml
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-path
name="downloads"
path="/Download" />
</paths>
【问题讨论】: