我的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。如果我将exported属性设置为false,则系统无法在收到SMS消息时调用Receiver。
因此,在注册我的Receiver以处理传入的SMS消息时,我应该从系统中获得哪些权限?
修改
我不是要求“uses-permission”标签使我的应用程序能够接收SMS消息。我正在为我的Receiver请求正确的“android:permission”值,因此只有 系统可以发送这样的广播消息,而另一个应用程序不能欺骗我的应用程序那样的事件。 / p>
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>
答案 0 :(得分:-2)
使用android:priority =“2147483647”代替android:priority =“100” 因为假设您使用的任何应用程序的优先级高于您设置的优先级,那么您的广播从不会通知它。还要在你的mainfest中使用权限android:name =“android.permission.RECEIVE_SMS”检查这个权限