6

我在我的 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>

Lint 用警告标记了这一点,因为 Receiver 是在不需要调用者的任何权限的情况下导出的。如果我将导出的属性设置为 false,系统将无法在收到 SMS 消息时调用我的 Receiver。

那么在注册我的接收器以处理传入的 SMS 消息时,我应该从系统获得哪些权限?

编辑:

我不是要求“使用许可”标签使我的应用程序能够接收 SMS 消息。我要求为我的接收器提供正确的“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="2147483647" 代替 android:priority="100" 因为假设您使用的任何应用程序的优先级高于您设置的优先级,那么您的广播永远不会通知。还要在您的 mainfest uses-permission android:name="android.permission.RECEIVE_SMS" 中检查此权限

于 2012-09-16T03:49:34.963 回答