Зачем нам нужен фильтр намерений в Android?

Это может быть очень глупый вопрос, но я не совсем ясно, ответ.

  1. Мое неявное намерение содержит действие, данные и категорию (необязательно), которые я передаю при отправке намерения либо через startActivity, либо через startService.

что-то вроде этого мы обычно делаем,

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(android.content.Intent.EXTRA_TEXT, "Standing on the Moon!");
startActivity(intent);

и затем мы выполняем ту же операцию другим способом, используя фильтр намерений в файле манифеста, например

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

Мой вопрос - оба способа объявить это для одной и той же цели, два разных способа их объявления, имеют ли они разное значение???

1 ответ

Решение

Насколько я помню, ссылка на ваше приложение как фильтр намерений из файла манифеста позволит другим приложениям знать, что вы способны справиться с этим намерением. Поэтому, если вы можете отправлять почту и регистрируетесь таким образом в своем манифесте, другое приложение может использовать ваше для отправки электронной почты.

Это часто наблюдается в приложениях галереи. Приложения редко создают свои собственные, если они сами не являются приложением галереи. Поэтому они спросят систему Android, какие приложения галереи / почты доступны, и позволят вам выбрать одно из списка. Когда вы зарегистрируетесь как приложение, способное справиться с этим намерением, вы найдете свое приложение в этом списке.

Я верю, что это одно из основных различий между ними, так как программная реализация не известна другим приложениям.

Другие вопросы по тегам