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.
- Android - BroadcastReceiver no recibe intenciones personalizadas
- Android Intent lanzamiento desde el navegador
- Android: ¿Puedo activar / desactivar el filtro de intención de una actividad mediante programación?
- Permiso de dispositivo USB y filtro de intenciones Android
- PACKAGE_REMOVED y luego PACKAGE_ADDED se disparan junto con PACKAGE_REPLACED Intent Action
¿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 } } } }
- Enviar una transmisión sólo a actividades específicas
- ¿Cómo crear / deshabilitar la intención de filtro de forma programable?
- Android receptor SMS no funciona
- El archivo de extensión personalizado no se abre en mi aplicación
- Cómo recibir un archivo usando NFC (Android Beam) en Android
- Spotify intención en android?
- Interceptar la intención de ACTION_CALL en HTC sense
- Manejo de URL específicas con filtros de intenciones en Xamarin Mono para Android
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">
- Cambiar el texto dinámicamente para el botón de barra de acciones de Android
- Exportar un proyecto eclipse como gradle