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"> 
  • Android: "La acción completa" sigue mostrándose incluso después de seleccionar "Siempre"
  • Enlace profundo de Android que funciona sólo en algunos sitios web
  • ¿Qué son exactamente los filtros de intención?
  • ¿Es posible iniciar una aplicación cuando se escanea una etiqueta NFC?
  • CONNECTIVITY_CHANGE obsoleta en el objetivo de Android N
  • ¿Por qué Filtros de Intención de Etiqueta?
  • Android Lanzamiento o presentación de otra aplicación a través de Intent
  • Enviar una transmisión sólo a actividades específicas
  • No se puede recibir la intención de difusión de UsbManager.ACTION_USB_DEVICE_ATTACHED / UsbManager.ACTION_USB_DEVICE_DETACHED
  • Android - Registrar un receptor de difusión para dos intentos?
  • Redireccionamiento de HTML a un protocolo personalizado solo cuando se admite la aplicación de Android compatible
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.