2016-11-04 13 views
1

我正在配置我的应用程序以接收来自其他应用程序的数据,如下所述:https://developer.android.com/training/sharing/receive.html分享到android应用程序 - 限制为“text/plain”

我用下面的意图过滤器来接收纯文本:

<intent-filter> 
    <action android:name="android.intent.action.SEND" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <data android:mimeType="text/plain" /> 
</intent-filter> 

然而,我的应用程序获取文本文件的共享菜单(除纯文本)上市,被称为与text/*尽管我专门列出了text/plain。任何想法如何限制传入的数据到text/plain,并避免在用户共享文本文件时在共享菜单中列出?

+0

当你说你只想接收纯文本,你的意思就像你的电子邮件中的文本并分享它?你能解释你如何选择文本? – user1506104

+0

@ user1506104 - 纯文本可以是用户选择的任何文本。这对我来说很好。我遇到的问题是,当用户共享文本文件时,我的应用程序也会列出。 –

回答

0

AFIK,文本文件和选定的文本将触发相同的行为。我的建议可能不是直接解决您的问题。但是,为了让您的应用程序能够使用选定的文本和/或文本文件,我能想到的是最接近的事情。因此,您的应用程序仍然会列在文本文件的共享菜单中。

在你的应用程序,检查共享数据是文本文件或选定的文本,只需检查

getIntent().getExtras().getString(Intent.EXTRA_STREAM)

这应该给你一个文件名,如果用户共享一个文本文件中的值。 Null而不是如果用户共享选定的文本。

+0

我已经有一个简单的方法来根据接收到的意图的类型('text/plain' vs'text/*')区分纯文本和文本文件。正如问题所述,我试图做的是避免在共享文本文件时被列出。 –