Сделать приложение Android прослушивать общие ссылки

Я хочу, чтобы мое приложение для Android отображалось как опция, когда пользователь делится URL-адресом из другого приложения (например, браузера). Как я могу зарегистрировать свое приложение для этого? Как я могу отреагировать на ссылку на акции?

Большое спасибо.

Edit:

Я попытался использовать 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>

в вашем манифесте... который, по крайней мере, будет отображаться в списке "share".

Самая важная часть, которую вам не хватает:

<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
    }
}

Надеюсь, что поможет

Ответ 3

Вам нужно создать Activity с соответствующим фильтром Intent. Прочитайте документацию о Intent, она объясняет все это примерами.