次のように、着信 SMS メッセージを処理する Android アプリケーションに BroadcastReceiver を静的に登録しています。
<receiver
android:name=".receivers.SmsReceiver"
android:exported="true" >
<intent-filter android:priority="100" >
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
リントはこれを警告でマークします。これは、レシーバーが呼び出し元からのアクセス許可を必要とせずにエクスポートされるためです。export プロパティを false に設定すると、システムは SMS メッセージの受信時に Receiver を呼び出すことができません。
では、Receiver を登録して着信 SMS メッセージを処理するときに、システムからどの許可を要求する必要がありますか?
編集:
アプリケーションが SMS メッセージを受信できるようにする「uses-permission」タグを求めているわけではありません。レシーバーに適切な「android:permission」値を要求しているため、そのようなブロードキャスト メッセージを送信できるのはシステムだけであり、別のアプリケーションはそのようなイベントを私のアプリケーションに偽装できません。
例えば:
<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>