Сделать приложение 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
, она объясняет все это примерами.