Issue with intent filter for opening a file in Android app

*爱你&永不变心* 提交于 2020-03-12 05:08:28

问题


I'm trying to open any file with a .conf extension in my android app. Here's what I have in my AndroidManifest.xml:

<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:host="*" />
    <data android:mimeType="*/*" />
    <data android:pathPattern=".*\\.conf" />
</intent-filter>
<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="content" />
    <data android:host="*" />
    <data android:mimeType="*/*" />
    <data android:pathPattern=".*\\.conf" />
</intent-filter>

But, when I tap on a .conf file in the Downlaods folder, it says "Can't open file."

Here's what I get when I use Intent Intercept:

What am I doing wrong?


回答1:


Remove:

<data android:host="*" />

from both <intent-filter> entries and:

<data android:pathPattern=".*\\.conf" />

from the content one.

File extensions are not used much on Android. Starting with Android Q, files are not used much on Android. There is no requirement for a ContentProvider to put a file-like extension on a content Uri, as you can see from the Uri in your screenshot.

If you wish to support common Intent actions like ACTION_VIEW, your best bet is to save the file in a common meta-format (e.g., JSON, XML) with a file extension that matches, then have your <intent-filter> filter on the corresponding MIME type. You will need to deal with the possibility that the user chooses a file that was not created by your app, though technically you need to deal with that even with your custom extension.



来源:https://stackoverflow.com/questions/56177708/issue-with-intent-filter-for-opening-a-file-in-android-app

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!