Android - Intercepting SMS - Interceptando SMS
En Android, Es posible tener acceso a los SMS entrantes, incluso antes que lleguen a la aplicación nativa que maneja los SMS. De esta forma podremos tomar acciones en base al contenido de ciertos SMS o al remitente de los mismos.
1. Primero que nada debemos especificar en el AndroidManifest.xml los permisos correspondientes a estas acciones.
2. Luego es necesario indicar en el AndroidManifest.xml que al recibir un SMS se ejecutará un Receiver.
Mediante ese código estamos indicando que cuando llegue un SMS se ejecutará el método onReceive(Context, Intent) de nuestra instancia MainReceiver.java, la cual necesariamente hereda de BroadcastReceiver
3. Si instalamos esta aplicación, esta no tendrá GUI, sino que cada en cada SMS recibido de ejecutará este código, donde se puede luego iniciar servicios, por ej.
1. Primero que nada debemos especificar en el AndroidManifest.xml los permisos correspondientes a estas acciones.
Realmente la mas importante es la primera, podran prescindir de la segunda y tercera a no ser que deseen también enviar SMS.
2. Luego es necesario indicar en el AndroidManifest.xml que al recibir un SMS se ejecutará un Receiver.
<receiver android:name=".MainReceiver" android:exported="true">
<intent-filter >
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
Mediante ese código estamos indicando que cuando llegue un SMS se ejecutará el método onReceive(Context, Intent) de nuestra instancia MainReceiver.java, la cual necesariamente hereda de BroadcastReceiver
public class MainReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Bundle extras = intent.getExtras(); if ( extras != null ){ //SMS array Object[] smsExtra = (Object[]) extras.get( "pdus" ); for ( int i = 0; i < smsExtra.length; ++i ){ SmsMessage sms = SmsMessage.createFromPdu((byte[])smsExtra[i]); String body = sms.getMessageBody().toString();//Cuerpo String address = sms.getOriginatingAddress();//Remitente } //En este punto ya se conoce el texto y el //remitente del SMS como para tomar cualquier //acción que se desee en base a esos datos. } } }
3. Si instalamos esta aplicación, esta no tendrá GUI, sino que cada en cada SMS recibido de ejecutará este código, donde se puede luego iniciar servicios, por ej.
Como puedo acceder a la GUI desde onReceive() ?
ReplyDelete