Intent 过滤器适用于模拟器,但不适用于设备

Intent filter works on emulator but not on device

我正在创建一个自定义 intent 过滤器,它会在我点击具有特定文件扩展名的文件时打开我的应用程序(在本例中为 .myextension。)intent-filter 如下。每次我从我的模拟器打开一个 .myextension 文件时,这目前都能完美运行。但是,当我从我的设备上尝试时,它不再有效。

在我的设备上,当我在文件浏览器应用程序中点击 .myextension 文件时,我看到 Unable to preview file. 而不是自动打开该应用程序。我尝试从多个位置(文件应用程序、GDrive、下载文件夹、Slack/Gmail、内部存储和 SDCard)打开文件。我在我的模拟器和我的模拟器上都使用 Android 10设备。

<intent-filter android:label="My App">
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.BROWSABLE" />
    <category android:name="android.intent.category.DEFAULT" />
    <data
        android:scheme="content"
        android:mimeType="*/*"
        android:host="*"
        android:pathPattern=".*\.myextension" />
</intent-filter>

我也试过用这个块替换 data tag/adding 第二个标签,但它似乎没有帮助:

<data
    android:scheme="file"
    android:mimeType="*/*"
    android:host="*"
    android:pathPattern=".*\.myextension" />

我是不是遗漏了什么明显的东西?任何帮助将不胜感激。谢谢!

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />

     <data android:scheme="file" />
     <data android:pathPattern=".*\.myextension" />
     <data android:pathPattern="/*.*\.myextension" />
     <data android:pathPattern="/*.*\..*\.myextension" />
     <data android:pathPattern="/*.*\..*\..*\.myextension" />
     <data android:pathPattern="/*.*\..*\..*\..*\.myextension" />
     <data android:pathPattern="/*.*\..*\..*\..*\..*\.myextension" />
     <data android:pathPattern="/*.*\..*\..*\..*\..*\..*\.myextension" />
     <data android:pathPattern="/*.*\..*\..*\..*\..*\..*\..*\.myextension" />
     <data android:pathPattern="/*.*\..*\..*\..*\..*\..*\..*\..*\.myextension" />
     <data android:host="*" />
</intent-filter>

Though it doesnt work in some of the file managers Better first try in ESExplorer.

This currently works perfectly every time I open a .myextension file from my emulator.

很多时候它会失败,因为它并没有真正绑定到模拟器而不是设备。

However, when I try it from my device, it no longer works.

content Uri 不需要文件扩展名,就像 https URL 不需要文件扩展名一样。大多数时候,content Uri 不会有文件扩展名,这样的 Uri 将不匹配您的 <intent-filter>.

ACTION_VIEW 主要用于具有广泛认可的 MIME 类型的文件。

I've also tried replacing that data tag/adding a second tag with this block but it doesn't seem to help

file Uri 值自 Android 7.0.

以来已普遍被禁止