I have a BroadcastReceiver statically registered in my Android application, which handles incoming SMS messages, like this:
<receiver
android:name=".receivers.SmsReceiver"
android:exported="true" >
<intent-filter android:priority="100" >
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
Lint marks this with a warning, beacuse the Receiver is exported without needing any permissions from the caller. If I set the exported property to false, the system fails to call my Receiver upon getting an SMS message.
So which permission should I require from the System when registering my Receiver to handle incoming SMS messages?
Edit:
I'm not asking for the "uses-permission" tag that enables my application to receive SMS messages. I'm asking for proper "android:permission" value for my Receiver, so only the system can send broadcast messages like that, and another application can't spoof an event like that for my application.
E.g.:
<receiver
android:name=".receivers.SmsReceiver"
android:exported="true"
android:permission="com.android.permission.SOME_PERMISSION_ONLY_THE_SYSTEM_HAS">
<intent-filter android:priority="100" >
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>