studio start oreo intent examples example ejemplos custom android android-intent broadcastreceiver android-manifest android-broadcast

start - Android: ¿Cómo activar un receptor Broadcast para llamar a su método onReceive()?



intent broadcast android (4)

He programado alarma para mi aplicación.

He implementado un receptor de difusión que se activará una vez que llegue la hora de la alarma.

Cómo llamar manualmente al receptor de difusión para ejecutar el código dentro del método onReceive sin replicar el código dos veces.

Pensé en tener el código en la utilidad singleton call y llamar a ese método al tener una instancia de clase util desde cualquier lugar.

Pero es que es otra forma de llamar a ese método onReceive directamente o, si no, de la intención de transmisión problemática.

android: export = "falso" // Parámetro adicional del receptor al definir en el archivo de manifiesto.

Otra pregunta es qué significa ese parámetro exportado. Por favor ayúdame a entender esto.


Cómo llamar manualmente al receptor de difusión para ejecutar el código dentro del método onReceive sin replicar el código dos veces.

Fire BroadcastReceiver utilizando la misma acción de sendBroadcast que se agregó en AndroidManifest.xml :

Intent intent=new Intent(CUSTOM_ACTION_STRING); // Add data in Intent using intent.putExtra if any required to pass sendBroadcast(intent);

¿Qué es ese androide: significa parámetro exportado?

Como en android:exported doc: si el receptor de difusión puede recibir mensajes de fuentes externas a su aplicación: "verdadero" si puede, y "falso" si no

Significa si:

Android: exportado = verdadero: otra aplicación también puede disparar este receptor de difusión usando acción

Android: exportado = falso: otra aplicación no puede disparar este receptor de difusión usando acción


Aquí hay una solución más segura para el tipo:

  • AndroidManifest.xml :

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

  • CustomBroadcastReceiver.java

    public class CustomBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // do work } }

  • *.java

    Intent i = new Intent(context, CustomBroadcastReceiver.class); context.sendBroadcast(i);


Debe mencionar la action que debe ser filtrada por el sistema operativo Android para notificarle. es decir: dentro del archivo de manifiesto,

<receiver android:name="com.example.MyReceiver" android:enabled="true" > <intent-filter> <action android:name="com.example.alarm.notifier" />//this should be unique string as action </intent-filter>

y

cuando quiera llamar al método onReceive del receptor de broadcast,

Intent intent = new Intent(); intent.setAction("com.example.alarm.notifier"); sendBroadcast(intent);


1. La forma de iniciar un BroadcastReceiver manualmente es llamando

Intent intent = new Intent("com.myapp.mycustomaction"); sendBroadcast(intent);

donde "com.myapp.mycustomaction" es la acción especificada para su BroadcastReceiver en el manifiesto. Esto se puede llamar desde una Activity o un Service .

2. Se sabe que Android permite que las aplicaciones utilicen componentes de otras aplicaciones. De esta manera, las aplicaciones externas, siempre que el atributo android:exported = true se establezca en el manifiesto, pueden iniciarse las Activity s, Service s, BroadcastReceiver y ContentProvider s de mi aplicación. Si se establece en android:exported = false , este componente no puede iniciarlo una aplicación externa. Ver here