2010-07-06 8 views
6

Я новичок в андроид platform.please помочь мне, как Broadcast Receiver и Намерение фильтр ведет себя в android.please объяснить простой линии или с example.thanks заранее ...Android-Broadcast Receiver и Намерение фильтр

+3

Может возникнуть хорошая идея посмотреть здесь: http://stackoverflow.com/users/366916/bharathi и принять ответы на ваши последние вопросы. –

ответ

17

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

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

<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) { 
... 
} 

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

+0

Что означает xyz.games.pacman.controller.BROADCAST? Это непонятно ... –

+0

Это всего лишь пакет, который он использовал в качестве примера. – Bilthon

8

A 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);  
+0

Как это сделать между двумя устройствами, например, отправить некоторые данные с одного на другое устройство? Что я должен определить? – JPerk

+0

@JПерк вам нужно будет обрабатывать соединение, но тогда вы можете определить пользовательское намерение получать данные. Существует хорошая вероятность, что вы не будете использовать существующее намерение системы получать пользовательские данные или не хотите обрабатывать данные по умолчанию, которые обычно содержат. – LoungeKatt

0

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

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

Смежные вопросы