【发布时间】:2012-08-28 04:43:09
【问题描述】:
在我们的应用中,我们希望出现在“分享方式”菜单中。所以我们将这个意图过滤器添加到我们的活动中:
<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>
它工作正常,我们的应用程序出现在共享菜单中。
尽管如此,intent 过滤器并没有完全达到我们想要的效果:
- 我们希望出现在所有文件的菜单中,无论 mime 类型是什么
- 我们只想为文件显示。到目前为止,如果用户想要分享一个简单的文本,因为它的 mime 类型将是 text/plain,我们的应用程序会出现在菜单中,我们不想要它。
正确的意图过滤器对于所有文件并且仅适用于文件是什么?
提前致谢。
我们尝试添加 scheme=file 和 host="" 或 "*",但它不起作用,因为许多应用使用 scheme=content 来共享基于文件的内容。
【问题讨论】:
-
很抱歉提出一个老问题,我尝试使用类别“android.intent.category.OPENABLE”并且似乎有效。它不显示从 chrome 共享网页,它显示从 Solid Explorer 共享文件。使用它是否安全或与方案一起使用更好?
-
@Giorgio Aresu,不清楚你在问什么。您是否尝试了这两种选择?
-
我都试过了。使用答案中提到的方案,我什至在共享时都没有显示,将 openable 作为类别,它可以从文件管理器共享文件,但不能从浏览器共享纯文本。这就是我想要的:获取文件(所有 mime 类型),只有文件(不是文本),正是你想要的问题。进一步的测试表明,某些应用程序(photoshop express、gallery)以纯文本或“image:3710”等格式共享 uri,这些格式不适用于可打开的类别。我正在努力解决...
标签: android share intentfilter