Colección de citas famosas - Slogan de motivación - Cómo utilizar contentobserve para leer automáticamente los códigos de verificación de SMS de Android

Cómo utilizar contentobserve para leer automáticamente los códigos de verificación de SMS de Android

Hay dos formas principales de obtener información de SMS en Android: BroadcastReceiver y base de datos. Es más conveniente recibir información por SMS en tiempo real.

La clase pública SMSReceiver extiende BroadcastReceiver{

Cadena privada verificarCode =

pública estática final Cadena TAG = " Receptor de SMS ";

pública static final String SMS _ RECEIVED _ ACTION = " Android . proveedor . telefonía . SMS _ RECEIVED "

@Override

public void onReceive(contexto, intención intención){

if (intent.getAction().Equals(SMS_RECEIVED_ACTION)){

Mensaje SMS[]messages = getmessagesfrominent(intención);

for(Mensaje SMS :mensaje) {

Log.i(TAG, mensaje . getoriginatingaddress()+":"+

mensaje . getdisplayoriginatingaddress()+":"+

mensaje . getdisplaymessagebody()+":"+

mensaje . gettimestampmillis());

cadena Contenido de SMS = mensaje . TAG, contenido de SMS);

writeFile(contenido de SMS); //Escribe el mensaje corto en la tarjeta SD.

}

}

}

mensaje SMS final público[]getmessagesfrominent(Intent Intent){

Objeto[]mensajes =(Objeto[])intención . getserializableextra(" PDU ");

byte[][] pduObjs =nuevos bytes [longitud de mensajes][]; for(int I = 0;i<messages.length;i++)

{

pduObjs[I]=(byte[])messages[I];

}

byte[][]PDUs = nuevo byte[pduobjs . length][];

int pduCount = pdus.length

SmsMessage[ ] msgs = nuevo mensaje SMS[recuento de PDU];

for(int I = 0;i<pduCounti++) {

PDUs[I]= pduObjs[I];

p >

msgs[I]= Mensaje SMS . createfrompdu(PDUs[I]);

}

Mensaje de respuesta;

}

//Escriba el contenido del mensaje de texto en un archivo en la tarjeta SD para facilitar la extracción del archivo a la PC, facilitando así la automatización de otras plataformas como WWW/WAP.

@SuppressLint("SdCardPath ")

public void writeFile(String str){

ruta del archivo de cadena = "/mnt/tarjeta SD/código de verificación. txt ";

byte[]bytes = str . getbytes();

Prueba {

Archivo archivo = nuevo archivo (Ruta del archivo);

archivo .crear nuevo archivo();

flujo de salida del archivo fos = nuevo flujo de salida del archivo(archivo);

fos.write(byte);

fos . close();

}catch(IOException e){

e . >}

De esta manera, cuando se recibe un mensaje corto, el contenido del mensaje corto se puede escribir en un archivo en la tarjeta SD.

Escriba un método en otra clase java para leer el contenido del archivo e intercepte la cadena obtenida según la ubicación específica del código de verificación al escribir el caso de prueba.

La lectura de cadena pública (String str) arroja IOException{

Archivo archivo = nuevo archivo (str);

archivo inputstream fis = nuevo archivo inputstream( file) ;

búfer de cadena sb = nuevo búfer de cadena();

BufferedInputStream bis = nuevo BufferedInputStream(fis);

lector almacenado en búfer leído = nuevo lector almacenado en búfer (nuevo InputStreamReader(bis));

int c = 0;

mientras ((c=read.read())!=-1) {

sb . append((char)c);

}

leer();

bis . fis. close();

Log.i(TAG, sb. tostring());

cadena verificar = sb. a la verificación;

}

Finalmente, debe agregar una declaración al manifiesto y registrar los permisos.

& ltreciver Android:name = " com . cplatform . surf desktop . test . util . Receptor de SMS " & gt; & ltaction Android:name = " Android . proveedor . telefonía . SMS _ RECEIVED "/& gt;

& lt/intent-filter & gt;

& lt/receiver >

& ltuses-permission Android:name = " Android . permiso . recibir_SMS " >& lt/uses-permission >

& ltuses-permission Android:name = " Android . permiso .escribir _ EXTERNO _ ALMACENAMIENTO " >& lt/uses-permission >

& ltuses-permission Android:name = " permiso de Android leer _ SMS "/& gt;

.

Puede obtener el código de verificación por SMS en tiempo real cuando sea necesario durante el proceso de prueba.