Android-Broadcast Receiver и Intent Filter

Я новичок в android platform.please, помогите мне в том, как Broadcast Receiver и Intent Filter ведет себя в android.please, объясните в простой строке или с помощью example.thanks заранее …

Широковещательный приемник – это класс в вашем проекте Android, который отвечает за получение всех намерений, которые отправляются другими действиями с помощью android.content.ContextWreapper.sendBroadcast(Intent intent)

В файле манифеста, который вы получаете, вы должны объявить, который является вашим широковещательным приемником, например:

 <receiver android:name="xyz.games.pacman.network.MessageListener"> <intent-filter> <action android:name="xyz.games.pacman.controller.BROADCAST" /> </intent-filter> </receiver> 

Как вы можете видеть, вы также определяете фильтр намерений здесь, то есть, какие намерения должны приниматься приемником широковещания.

Затем вам нужно определить класс, который расширяет BroadcastReceiver. Это класс, который вы определили в файле манифеста:

 public class MessageListener extends BroadcastReceiver { /* (non-Javadoc) * @see android.content.BroadcastReceiver#onReceive(android.content.Context, android.content.Intent) */ @Override public void onReceive(Context context, Intent intent) { ... } 

Здесь принимаются все намерения, которые передаются через фильтр, и вы можете получить к ним доступ, используя параметр, переданный в вызове метода.

BroadcastReceiver может быть зарегистрирован двумя способами: dynamic или static . Static – это не что иное, как объявление действия через intent-filter в AndroidManifest.xml для регистрации нового класса BroadcastReceiver . Dynamic регистрирует приемник из другого класса. intent-filter определяет, какое действие должно быть принято.

Чтобы создать BroadcastReceiver, вам необходимо расширить класс BroadcastReceiver и переопределить onReceive(Context,Intent) . Здесь вы можете проверить входящие намерения с помощью Intent.getAction() и выполнить код соответственно.

Как новый класс, статический был бы

 public class Reciever1 extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String str = intent.getAction(); if(str.equalsIgnoreCase("HELLO1")) { Log.d("Abrar", "reciever...."); new Thread() { public void run() { Log.d("Abrar", "reciever...."); System.out.println("Abrar"); } }.start(); } 

Или, если он помещен в существующий класс, он динамически называется

 intentFilter = new IntentFilter(); intentFilter.addAction("HELLO1"); //---register the receiver--- registerReceiver(new Reciever1(), intentFilter); 

BroadcastReceiver : «Шлюз», с помощью которого ваше приложение сообщает ОС Android, что ваше приложение заинтересовано в получении информации.

Intent-Filter : работает с BroadcastReceiver и сообщает «What», которую он хочет получить. Например, ваше приложение хочет получать информацию об уровне заряда батареи.