La Red de Conocimientos Pedagógicos - Currículum vitae - Cómo personalizar la transmisión residente en Android

Cómo personalizar la transmisión residente en Android

El mecanismo de transmisión de Android significa que cuando se ejecuta una aplicación, puede personalizar un tipo de mensaje y dejar que el receptor correspondiente procese el mensaje o el mensaje del sistema, como una llamada o un mensaje de texto, en el teléfono. batería agotada y otros mensajes enviados por el sistema. Los mensajes enviados por el sistema también se pueden notificar a la aplicación mediante transmisión. Esto evita la necesidad de abrir un nuevo hilo para monitorear el estado de los mensajes enviados por el sistema u otras aplicaciones.

Clasificación de transmisiones de Android:

1. Transmisión ordinaria: este tipo de transmisión se puede pasar a cada procesador por turno para su procesamiento.

2. Este El orden de procesamiento de las transmisiones en el lado del procesador se distingue según las diferentes prioridades de los procesadores. El procesador de alta prioridad interceptará el mensaje primero y lo eliminará.

3. Cuando se envía un mensaje, siempre existe en el contenedor de mensajes del sistema, esperando que el procesador correspondiente lo procese. Si no hay un procesador para procesar el mensaje, siempre estará en estado de espera en el contenedor de mensajes.

Nota: las transmisiones ordinarias y los mensajes fijos se interceptan de manera diferente, pero las transmisiones ordenadas se pueden interceptar.

Registro del procesador:

1. En el código, regístrese dinámicamente usando la función. código. Los procesadores registrados dinámicamente deben destruirse dinámicamente mediante código y solo se utiliza un objeto de instancia para procesar mensajes cada vez.

2 El registro estático en el archivo de configuración tiene una característica, es decir, una vez registrado. Siempre existirá en el sistema, independientemente de si la aplicación está cerrada o encendida y apagada. (Es simplemente un virus de software fraudulento~). Cada vez que se procesa un mensaje de registro estático, será procesado por un nuevo procesador en el sistema y destruido.

A continuación se presenta una descripción detallada del proceso de envío, registro y procesamiento de mensajes de transmisión de Android:

① Clase de procesador de personalización:

clase pública MyBroadcastReceiver4 extiende BroadcastReceiver {

public MyBroadcastReceiver4() {

System.out.println(" Creó un receptor creado por RegisterReceiver() Receptor de transmisión registrado");

}

@Override

public void onReceive(Context context, Intent intent) {

String action = intent.getAction();

System.out.println("MyBroadcastReceiver4 recibió un mensaje " + acción + ""

if ( isOrderedBroadcast()) {

System.out.println("Esta es una transmisión ordenada y ha sido interceptada.

");

this.abortBroadcast();

} else {

System.out.println("Esto no es una transmisión ordenada");

}

Paquete paquete = intent.getExtras();

if (paquete!= null) {

System.out.println ("Los datos que lleva este mensaje son los siguientes:");

// Obtener un conjunto de claves del paquete

Set set = bundle.keySet(); p>

// Obtener el iterador de la colección anterior

Iterador iterator = set.iterator()

// Usar el iterador para recorrer la colección

while (iterator. hasNext()) {

// Obtener un contenido en la colección

String str = (String) iterator.next(); p> // Obtener el contenido de un paquete en

System.out.println(str + "--->" + bundle.get(str));

}

} else {

System.out.println("Este mensaje no contiene datos");

}

Toast brindis = Toast. makeText(context, "MyBroadcastReceiver4 A "

+ acción + "mensaje", Toast.LENGTH_LONG

toast.show()

//Intercept); este mensaje (del contenedor de mensajes eliminado) para que otros procesadores no puedan recibir el mensaje

this.abortBroadcast()

}

}

<; p>② Enviar un mensaje de difusión

⑴ Enviar una difusión normal:

//Enviar un mensaje normal

Intent intent = new Intent(); .setAction ("asdfasdf");

Android_09_10Activity.this.sendBroadcast(intent);

⑵ Enviar transmisión ordenada:

//Enviar un mensaje ordenado.

Intento intención = new Intent();

intent.setAction("asdfasdf"); Android_09_10Activity.this.sendOrderedBroadcast(intent,

null);

⑶. Enviar transmisión fija:

//Enviar un mensaje fijo

Intent intent = new Intent();

intent.setAction ("qwerqwer"); Android_09_10Activity.this.sendStickyBroadcast(intent);

③ Registrar receptor de transmisión

⑴Registro dinámico:

// Registrar un receptor de transmisión

IntentFilter intentFilter =

nuevo IntentFilter("asdfasdf");

intentFilter.setPriority(0);

Android_09_10Activity.this.registerReceiver(mbr2,

intentFilter);

⑵Registro estático:

< acción android:name="android.intent.action.PHONE_STATE" />

// Esto La oración es bastante especial y exclusiva del mensaje de transmisión anterior

Cuando quieras enviar mensajes fijos, debes obtener permisos en la configuración. archivo:

Si desea utilizar un procesador personalizado para procesar transmisiones del sistema, también debe declarar en el archivo de registro Permisos, como por ejemplo: