Android 文件:如果我将.zip文件复制到 /sdcard/Download,uri 将是错误的



我有一个要求,我们可以通过我的应用程序打开一个.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

相关内容

最新更新