Мое приложение должно получать SMS-сообщения. Все это работает, но я получаю это предупреждение:
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
}
}
}
}