我有一个要求,我们可以通过我的应用程序打开一个.zip文件(替换为.activity(。我设置了清单.xml就像
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="file" />
<data android:scheme="content" />
<data android:host="*" />
<data android:mimeType="*/*" />
<data android:pathPattern=".*\.activity" />
</intent-filter>
当我打开一个名为"test.activity"的文件时,实际上是"test.zip",实际上是下面的代码。
public void chooseFile(CallbackContext callbackContext) {
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.setType("*/*");
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true);
首先,我将"test.activity"推送到/sdcard/download,我得到了一个类似content://com.android.providers.downloads.documents/document/raw%3A%2Fstorage%2Femulated%2F0%2FDownload%2Ftest.activity
的uri
然后我单击下载并将文件复制到下载(/sdcard/Download(,它将自动命名为test(1(.activity。 我认为正确的 uri 应该是
content://com.android.providers.downloads.documents/document/raw%3A%2Fstorage%2Femulated%2F0%2FDownload%2Ftest(1).activity
但我得到了一个像 uri
content://com.android.providers.downloads.documents/document/805
因此,我在开头提到的"意图过滤器"将变得无效。谁能告诉我为什么这个 uri 的末尾变成了一个数字?
在某些设备上。 从下载目录中选择文件时,将返回错误的 URI。所以你需要改变它
你可以参考这里
https://github.com/Turtlebody/android-media-picker/issues/7