OnReceive не вызывается даже после регистрации BroadcastReceiver - PullRequest
0 голосов
/ 16 мая 2019

Я хочу отправить Toast после запуска приложения.Я использую Android 9, поэтому я регистрирую MyBroadcastReceiver не только в манифесте, но и в OnCreate.После этого я использую метод sendBroadcast().Как я и ожидал, OnReceive в MyBroadcast будет вызываться, но это не так.

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

- Документация для разработчиков Android

AndroidManifest.xml :

<receiver android:name=".MyBroadcastReceiver">
</receiver>

MainActivity OnCreate () :

registerReceiver(new MyBroadcastReceiver(), new IntentFilter());

Intent i = new Intent();
i.putExtra("action", 1);
sendBroadcast(i);

MyBroadcastReceiver OnReceive () :

Toast.makeText(context, "toast", Toast.LENGTH_SHORT).show();

1 Ответ

0 голосов
/ 16 мая 2019
//Declare in Manifest as below
<receiver android:name=".MyBroadcastReceiver" >  
  <intent-filter android:priority="1000">  
    <action android:name="YOUR_ACTION"/> 
  </intent-filter>  
</receiver>   


// Register in onResume
IntentFilter intentFilter = new IntentFilter("MyBroadcastReceiver");
registerReceiver( MyBroadcastReceiver, intentFilter);

// call it as below
Intent intent = new Intent("YOUR_ACTION"); 
    intent.setPriority(1000);
    Bundle extras = new Bundle(); 
    extras.putString("action", 1); 
    sendBroadcast(intent); 

// Dont forget to unregister it in onPause(). 
// unRegister it in onStop() if registered in onStart().  
...