意图仅过滤文件

Sni*_*las 12 android share intentfilter

在我们的应用中,我们希望出现在"分享通过"菜单中.所以我们在我们的活动中添加了这个intent-filter:

<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>
Run Code Online (Sandbox Code Playgroud)

它工作正常,我们的应用程序出现在共享菜单中.

然而,意图过滤器并不完全符合我们想要的目标:

  1. 我们希望出现在所有文件的菜单中,无论mime类型是什么
  2. 我们只想出现在文件中.到目前为止,如果用户想要共享一个简单的文本,因为它的mime类型将是text/plain,我们的应用程序出现在菜单中,我们不想要它.

对于所有文件和仅文件,正确的intent-filter会是什么?

提前致谢.


我们尝试添加scheme = file和host =""或"*",并且它不起作用,因为许多app使用scheme = content来共享基于文件的内容.

Com*_*are 7

我们希望出现在所有文件的菜单中,无论mime类型是什么

尝试MIME类型*/*.

我们只想出现在文件中.到目前为止,如果用户想要共享一个简单的文本,因为它的mime类型将是text/plain,我们的应用程序出现在菜单中,我们不想要它.我们尝试添加scheme = file和host =""或"*",并且它不起作用,因为许多app使用scheme = content来共享基于文件的内容.

然后有两个<data>元素,一个用于方案,content一个用于方案file.

<data android:mimeType="*/*" />
<data android:scheme="content" />
<data android:scheme="file" />
Run Code Online (Sandbox Code Playgroud)

但是,请记住,一个content方案并不意味着它必然是一个文件.

  • 使用此功能,我们不再出现在共享菜单中,我们安装的文件浏览器都没有. (6认同)