Android - SEND Intent过滤器无法正常工作

时间:2015-07-31 21:17:48

标签: android google-chrome url android-intent browser

在我的Android应用程序中,我有一个意图过滤器链接到我的AndroidManifest.xml中的一个活动,如下所示:

<activity
    android:name=".MainActivity"
    android:label="@string/name >
    <intent-filter>
        <action android:name="android.intent.action.SEND />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

根据我的理解,这应该将我的应用程序添加到浏览器(Chrome)中的应用程序列表中,这些应用程序位于&#34; Share ...&#34;部分,以便我的应用程序可以使用当前网页的URL。此列表包含Flipboard,Android Beam,Twitter,Keep,Google +等。

我发现了很多关于如何做到这一点的例子,他们都使用上面的代码。但是,我的应用程序由于某种原因没有出现在该列表中。可能是什么原因以及如何解决这个问题?

谢谢!

1 个答案:

答案 0 :(得分:1)

您正确包含了操作和类别,但您还需要包含mimeTypes,以便Intent知道您要支持的共享类型。尝试包含这两行以支持文本和图像共享:

<data android:mimeType="text/plain" />
<data android:mimeType="image/*" />

像这样:

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

如果您想要从Intent中检索要在您的应用中使用的网址,那么您需要将此代码添加到onCreate()中的MainActivity方法:

String action = intent.getAction(); 
if (action.equalsIgnoreCase(Intent.ACTION_SEND) && intent.hasExtra(Intent.EXTRA_TEXT)) { 
    String URL = intent.getStringExtra(Intent.EXTRA_TEXT);
}