Мое приложение должно иметь возможность получать SMS-сообщения. Это все работает, но я получаю это предупреждение ворса:Как исправить Незащищенный SMS BroadcastReceiver предупреждение ворса
BroadcastReceivers что декларирует пристальный фильтр для SMS_DELIVER или SMS_RECEIVED должен следить за тем, что абонент имеет BROADCAST_SMS разрешения, в противном случае возможно вредоносные актеры подменить намерения.
Как «обеспечить, чтобы вызывающий абонент имел разрешение BROADCAST_SMS»?
В моем манифесте у меня есть:
<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>
Мой код:
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
}
}
}
}
Почему требуется такое разрешение? – UnKnown
@UnKnown Параметр 'permission' атрибут для' ' определяет, какой разрешение _sender_ радиопередачи должны иметь для того, чтобы иметь возможность транслировать в свой' '. Это мера безопасности; в этом случае, поэтому вы можете быть уверены, что система - это кто отправляет трансляцию SMS_RECEIVED. Это строго не требуется, но lint будет жаловаться, если его там нет. –