Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


¿Cómo usar el método registerReceiver?

Quiero utilizar BroadcastReceiver registrado dinámicamente que tiene una referencia a una Activity para que pueda modificar su interfaz de usuario. Estoy utilizando el método Context.registerReceiver() pero el método Context.registerReceiver() receptor nunca se llama.

Aquí está el código de ejemplo que muestra el problema:

 package com.example; import android.app.Activity; import android.app.IntentService; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.util.Log; import android.view.KeyEvent; public class RegisterBroadcastReceiver extends Activity { public static class MyIntentService extends IntentService { public MyIntentService() { super(MyIntentService.class.getSimpleName()); } @Override protected void onHandleIntent(Intent intent) { Intent i = new Intent(this, MyBroadcastReceiver.class); sendBroadcast(i); } } public class MyBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Log.i(MyBroadcastReceiver.class.getSimpleName(), "received broadcast"); } } /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } MyBroadcastReceiver mReceiver = new MyBroadcastReceiver(); @Override protected void onResume() { super.onResume(); IntentFilter intentFilter = new IntentFilter(); registerReceiver(mReceiver, intentFilter); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_MENU) { Intent i = new Intent(this, MyIntentService.class); startService(i); } return super.onKeyDown(keyCode, event); } @Override protected void onPause() { super.onPause(); unregisterReceiver(mReceiver); } } 

  • Detectar la desconexión desde un punto de acceso WiFi
  • El receptor de reinicio no funciona en los teléfonos xiaomi
  • ¿Cómo se puede detectar el lanzamiento de una aplicación de Android?
  • LocalBroadcastManager vs Context.registerReceiver (), Context.sendBroadcast (Intent) y Context.unregisterReceiver () son iguales?
  • ¿Cuándo se transmite la intención ACTION_DEVICE_STORAGE_LOW?
  • BroadcastReceiver no funciona cuando mato mi aplicación
  • BroadcastReceiver no recibe la acción completa de descarga
  • ¿Emisión si un dispositivo bluetooth está conectando / desconectando?
  • 2 Solutions collect form web for “¿Cómo usar el método registerReceiver?”

    Todo el código si alguien lo necesita.

     void Alarm(Context context, Calendar c) { AlarmManager alrm = (AlarmManager)context.getSystemService(ALARM_SERVICE); final String SOME_ACTION = "com.android.mytabs.MytabsActivity.AlarmReceiver"; IntentFilter intentFilter = new IntentFilter(SOME_ACTION); AlarmReceiver mReceiver = new AlarmReceiver(); context.registerReceiver(mReceiver, intentFilter); Intent i2 = new Intent(SOME_ACTION); PendingIntent pi = PendingIntent.getBroadcast(context, 0, i2, 0); alrm.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pi); Toast.makeText(context, "Added", Toast.LENGTH_LONG).show(); } class AlarmReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent arg1) { // TODO Auto-generated method stub Toast.makeText(context, "Started", Toast.LENGTH_LONG).show(); } } 

    Los receptores de difusión reciben eventos de cierto tipo. No creo que puedas invocarlos por nombre de clase.

    En primer lugar, su IntentFilter debe contener un evento.

     static final String SOME_ACTION = "com.yourcompany.yourapp.SOME_ACTION"; IntentFilter intentFilter = new IntentFilter(SOME_ACTION); 

    En segundo lugar, cuando envíe una emisión, utilice la misma acción:

     Intent i = new Intent(SOME_ACTION); sendBroadcast(i); 

    En tercer lugar, ¿realmente necesita MyIntentService para estar en línea? ¿Estático? [EDIT] Descubrí que MyIntentSerivce DEBE ser estático si está en línea.

    Cuarto, ¿se ha declarado su servicio en AndroidManifest.xml?

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.