6

次のように、着信 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>
4

1 に答える 1

-2

android:priority="100" の代わりに android:priority="2147483647" を使用してください。設定した優先度と比較して優先度が高いアプリケーションを使用していると仮定すると、ブロードキャストはそれを通知しません。mainfest uses-permission android:name="android.permission.RECEIVE_SMS" でこの許可も確認してください

于 2012-09-16T03:49:34.963 に答える