我正在创建一个自定义 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>
我也尝试用这个 block 替换那个 data
标签/添加第二个标签,但它似乎没有帮助:
<data
android:scheme="file"
android:mimeType="*/*"
android:host="*"
android:pathPattern=".*\\.myextension" />
我是否遗漏了一些明显的东西?任何帮助将不胜感激。谢谢!
最佳答案
This currently works perfectly every time I open a .myextension file from my emulator.
很多时候它会失败,因为它并没有真正绑定(bind)到模拟器而不是设备。
However, when I try it from my device, it no longer works.
A 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 以来,值已被普遍禁止。
关于android - Intent 过滤器适用于模拟器,但不适用于设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58291822/