让安卓应用收听共享链接

2022-09-03 12:54:26

我希望我的 Android 应用在用户共享来自其他应用(如浏览器)的 URL 时显示为一个选项。如何注册我的应用来执行此操作?如何应对链接共享?

多谢。

编辑:

我尝试过像这样使用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>

有什么想法吗?


答案 1

您至少需要:

<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


答案 2

要获取活动中的图像,请使用单个图像,或用于图像列表: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
    }
}

希望有所帮助


推荐