我的传入短信处理接收器应该从系统中获得什么许可?

Zso*_*agy 6 android broadcastreceiver android-permissions

我在我的Android应用程序中静态注册了BroadcastReceiver,它处理传入的SMS消息,如下所示:

        <receiver
            android:name=".receivers.SmsReceiver"
            android:exported="true" >
            <intent-filter android:priority="100" >
                <action android:name="android.provider.Telephony.SMS_RECEIVED" />
            </intent-filter>
        </receiver>
Run Code Online (Sandbox Code Playgroud)

Lint将此标记为警告,因为无需来自调用者的任何权限即可导出Receiver.如果我将exported属性设置为false,则系统无法在收到SMS消息时调用Receiver.

因此,在注册我的Receiver处理传入的SMS消息时,我应该从系统中获得哪些权限?

编辑:

我不是要求"uses-permission"标签使我的应用程序能够接收SMS消息.我要求我的Receiver正确的"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>
Run Code Online (Sandbox Code Playgroud)

Ris*_*wal -2

使用 android:priority="2147483647" 而不是 android:priority="100" 因为假设您使用的任何应用程序的优先级与您设置的优先级相比较高,那么您的广播永远不会通知该情况。还要在 mainfest 使用权限 android:name="android.permission.RECEIVE_SMS" 中检查此权限