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 } } } } 

One Solution collect form web for “Cómo corregir Advertencia de pelusa de SMS BroadcastReceiver sin protección”

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"> 
  • Filtro de intenciones "Privado" solo para uso de autoapp
  • CONNECTIVITY_CHANGE obsoleta en el objetivo de Android N
  • El receptor de Broadcast de Android no se ejecuta en la aplicación
  • Registro de Receptor de Difusión en Manifiesto vs. Actividad
  • Redireccionamiento de HTML a un protocolo personalizado solo cuando se admite la aplicación de Android compatible
  • Las pestañas personalizadas de Chrome de Android / la API web de Fitbit no se redireccionarán si la aplicación ya está autorizada. (OAuth2.0)
  • Android: "La acción completa" sigue mostrándose incluso después de seleccionar "Siempre"
  • Filtro de intenciones para exploradores de archivos comunes
  • Spotify intención en android?
  • Android: inicia una actividad desde la línea de comandos con la intención uri
  • Cant "addAction" a IntentFilter en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.