私のアプリはSMSメッセージを受信できる必要があります。それはすべての作品が、私はこの糸くずの警告を取得:SMS_DELIVERまたは SMS_RECEIVEDのために意図-フィルタを宣言保護されていないSMS BroadcastReceiverリント警告の修正方法
BroadcastReceiversは、発信者が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'ブロードキャストを送信していることが比較的確実に確認できます。それは厳密には要求されていませんが、リントはそこになければ文句を言います。 –