Intent filter for files only

只谈情不闲聊 提交于 2019-12-21 03:42:58

问题


in our app, we want to appear in the "Share via" menu. So we added this intent-filter to our activity :

<intent-filter>
    <action android:name="android.intent.action.SEND" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="application/*" />
    <data android:mimeType="audio/*" />
    <data android:mimeType="image/*" />
    <data android:mimeType="text/*" />
    <data android:mimeType="video/*" />
</intent-filter>

It works and our app appears in the Share menu.

Nevertheless, the intent filter doesn't do exactly what we want to achieve :

  1. we want to appear in the menu for all files, whatever there mime type is
  2. we want to appear only for files. And up to now, if the user wants to share a simple text, as its mime type will be text/plain, our app appears in the menu and we don't want it.

What would the correct intent-filter be for all files and only for files ?

Thanks in advance.


We tried to add scheme=file and host="" or "*" and it doesn't work as many app use a scheme=content to share file based content.


回答1:


we want to appear in the menu for all files, whatever there mime type is

Try a MIME type of */*.

we want to appear only for files. And up to now, if the user wants to share a simple text, as its mime type will be text/plain, our app appears in the menu and we don't want it. We tried to add scheme=file and host="" or "*" and it doesn't work as many app use a scheme=content to share file based content.

Then have two <data> elements, one for a scheme of content and one for a scheme of file.

<data android:mimeType="*/*" />
<data android:scheme="content" />
<data android:scheme="file" />

However, bear in mind that a content scheme does not mean that it is necessarily a file.




回答2:


  1. If you want to be invoked for any mime type, don't place a single mine type in the filter
  2. scheme="file" is the answer to run only on files. Now if the 3rd party applicaiton pass the data as content, then it is (by defiinition) not a file any more


来源:https://stackoverflow.com/questions/12247957/intent-filter-for-files-only

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