2014-10-27 3 views
0

Я нашел этот код на Интернете, и я не знаю, как получить разрешение на этот широковещательный приемник ..Broadcast Декларация Receiver в Manifest

или не нужно?

Это в классе SetAlarmActivity ..

BroadcastReciever br; 
private void setup() { 
     br = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context c, Intent i) { 
      Toast.makeText(c, "Rise and Shine!", Toast.LENGTH_LONG).show(); 
     } 
    }; 
    registerReceiver(br, new IntentFilter("org.example.makwanas.sapalarm")); 
    pi = PendingIntent.getBroadcast(this, 0, new Intent("org.example.makwanas.sapalarm"), 
      0); 
    am = (AlarmManager)(this.getSystemService(Context.ALARM_SERVICE)); 
} 
+1

Вы уже * зарегистрировали * приемник в коде с помощью 'registerReceiver', поэтому вам не нужно * регистрировать * снова в файле манифеста. Разрешение отличается. –

+0

Спасибо, Ok еще один Сомнение, что должно быть там в registerReceiver (br, новый IntentFilter ("org.example.makwanas.sapalarm")); на месте нового IntentFilter («??»); пакет или класс? или что именно – Makwana

ответ

0

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

см documentation of registerReceiver

фильтра - Выбирает Намерение трансляций, которые будут получены.

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

Пример:

IntentFilter filter = new IntentFilter(); 
filter.addAction("SOME_ACTION"); 
filter.addCategory("SOME_CATEGORY"); 

Вы также можете увидеть это blog для более подробного объяснения и примеров.

Надеюсь, что это поможет.

+0

Спасибо большое. Но я добавил фильтр намерений по-разному. Например, registerReceiver (br, новый IntentFilter ("org.example.makwanas.sapalarms")); так что должно быть там в "", имя пакета или имя класса или что? как я дал сейчас org.example.makwanas.sapalarm – Makwana

+0

нормально, так что для приложения будильника я добавил действие как ALARM_SERVICE и catagory также ALARM_SERVICE ?? как вы мне предложили, это прекрасно – Makwana

+0

Это должен быть фильтр намерений, для которого ваш приемник должен получать трансляции. Пример: для приема трансляции загруженного устройства вам нужно добавить 'Intent.ACTION_BOOT_COMPLETED'. См. [This] (http://www.techotopia.com/index.php/Android_Broadcast_Intents_and_Broadcast_Receivers) и [это] (http://www.compiletimeerror.com/2013/03/android-broadcast-receiver-in-detail. html # .VE4Nhxblu1s) @Makwana –

1
@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     IntentFilter filter = new IntentFilter(); 
     filter.addAction("Some_Broadcast"); 
     registerReceiver(reciever, filter); 
    } 

    @Override 
    protected void onDestroy() { 
     if (reciever != null) { 
      unregisterReceiver(reciever); 
      reciever = null; 
     } 
     super.onDestroy(); 
    } 
Смежные вопросы