Uygulamamın SMS mesajları alabilmesi gerekiyor. Kötü niyetli aktörler taklit etmesi aksi takdirde mümkündür SMS_DELIVER için niyet-filtre ilan veya SMS_RECEIVED Arayan BROADCAST_SMS iznine sahip olduğundan emin olmalıdırKorumasız SMS Yayını nasıl çözülür Receiver lint warning
Yayın Alıcılarının: Tüm çalışır, ancak bu tüysüz uyarıyı almak Intents'in.
Arayanın BROADCAST_SMS iznine sahip olduğundan nasıl emin olabilirim? Benim Manifest'te
Ben:
<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>
Kodum:
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
}
}
}
}
Neden bu izin gerekli? – UnKnown
@UnKnown Bir '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' yayınına izin verebilmesi için yayının _sender_ 'inin hangi izni vermesi gerektiğini belirtir. Bu bir güvenlik önlemi; Bu durumda, sistemin "SMS_RECEIVED" yayınını kimin gönderdiğini göreceli olarak emin olabilirsiniz. Bu kesinlikle gerekli değildir, ancak orada değilse lint şikayet edecektir. –