Cómo corregir Advertencia de pelusa de SMS BroadcastReceiver sin protección

Mi aplicación debe poder recibir mensajes SMS. Todo funciona, pero tengo esta advertencia pelusa:

Los BroadcastReceivers que declaran un filtro de intenciones para SMS_DELIVER o SMS_RECEIVED deben asegurarse de que el llamador tenga el permiso BROADCAST_SMS, de lo contrario es posible que los actores maliciosos falsifiquen intenciones.

¿Cómo puedo "asegurarme de que el llamador tenga el permiso BROADCAST_SMS"?

En mi manifiesto tengo:

<uses-permission android:name="android.permission.RECEIVE_SMS" /> <application ...> <receiver android:name=".SmsReceiver" android:enabled="true" android:exported="true"> <intent-filter android:priority="1000"> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver> </application> 

Mi código:

 public class SmsReceiver extends BroadcastReceiver { public SmsReceiver() {} @Override public void onReceive(final Context context, final Intent intent) { final Bundle bundle = intent.getExtras(); if (bundle != null) { final Object[] pdusObj = (Object[]) bundle.get("pdus"); for (int i = 0; i < pdusObj.length; i++) { final SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]); // use currentMessage } } } } 

Añadir android:permission="android.permission.BROADCAST_SMS" a la etiqueta de apertura <receiver> .

Además, los componentes están habilitados de forma predeterminada y el <intent-filter> exporta, por lo que realmente no necesita incluir explícitamente esos atributos.

 <receiver android:name=".SmsReceiver" android:permission="android.permission.BROADCAST_SMS"> 
  • Android - Registrar un receptor de difusión para dos intentos?
  • Evite la excepción de seguridad al acceder a DownloadProvider
  • Intento de archivo de exploración android con extensión definida
  • No se puede instanciar el receptor, java.lang.IllegalAccessException: acceso a la clase no permitido
  • BroadcastReceiver intentando devolver el resultado durante una transmisión no ordenada - PACKAGE_ADDED en Android
  • ¿Cómo comprobar si una intención puede ser manejada de alguna actividad?
  • Receptor de difusión de Android y filtro de intenciones
  • Esquema host no funciona en androide lollipop, haga clic en el enlace para abrir la aplicación
  • Android: inicia una actividad desde la línea de comandos con la intención uri
  • Pestañas personalizadas de Chrome y filtro de intenciones
  • Filtro de intenciones para exploradores de archivos comunes
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.