让Android应用程序收听共享链接

时间:2011-12-24 11:41:49

标签: java android share

当用户从其他应用程序(如浏览器)共享URL时,我希望我的Android应用程序显示为选项。如何注册我的应用程序呢?我如何对链接共享作出反应?

非常感谢。

编辑:

我尝试过使用这样的IntentFilter但没有成功:

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
</intent-filter>

有什么想法吗?

3 个答案:

答案 0 :(得分:22)

至少你需要:

<activity android:name=".ShareActivity">
    <intent-filter
        android:label="Share with my app">
        <action android:name="android.intent.action.SEND" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

在您的清单中...至少会让它显示在“共享”列表中。

您缺少的最重要的部分是:

<action android:name="android.intent.action.SEND" />

要让它真正做某事,你需要一个活动。

这也可能有所帮助: http://sudarmuthu.com/blog/sharing-content-in-android-using-action_send-intent

其他信息:

<activity android:name=".ShareActivity">
<intent-filter
    android:label="Share with my app">
    <action android:name="android.intent.action.SEND" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="text/plain" />
</intent-filter>
</activity>

如果您想限制应用的响应,<data android:mimeType会限制您的回复。

答案 1 :(得分:1)

要获取活动中的图片,请使用Uri imgUri = (Uri) i.getParcelableExtra(Intent.EXTRA_STREAM);作为单张图片,或使用ArrayList<Uri> imgUris = i.getParcelableArrayListExtra(Intent.EXTRA_STREAM);获取图片列表:

Intent i = getIntent();
Bundle extras = i.getExtras();
String action = i.getAction();

// if this is from the share menu
if (Intent.ACTION_SEND.equals(action)) {   
    if (extras.containsKey(Intent.EXTRA_STREAM)) {
        Uri imgUri = (Uri) i.getParcelableExtra(Intent.EXTRA_STREAM);
        // Do job here
    }
}

希望有所帮助

答案 2 :(得分:0)

您需要使用适当的Intent过滤器创建一个Activity。阅读有关Intent的文档,它通过示例解释了所有这些。