Зачем нам нужен фильтр намерений в Android?
Это может быть очень глупый вопрос, но я не совсем ясно, ответ.
- Мое неявное намерение содержит действие, данные и категорию (необязательно), которые я передаю при отправке намерения либо через 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, какие приложения галереи / почты доступны, и позволят вам выбрать одно из списка. Когда вы зарегистрируетесь как приложение, способное справиться с этим намерением, вы найдете свое приложение в этом списке.
Я верю, что это одно из основных различий между ними, так как программная реализация не известна другим приложениям.