我的传入 SMS 处理接收器应从系统获得啥许可?
Posted
技术标签:
【中文标题】我的传入 SMS 处理接收器应从系统获得啥许可?【英文标题】:What permission should my incoming SMS-handling Receiver require from the system?我的传入 SMS 处理接收器应从系统获得什么许可? 【发布时间】:2012-09-04 10:41:39 【问题描述】:我在我的 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 消息的“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>
【问题讨论】:
上述问题与this有关吗? 不幸的是,没有。我正在定义正确的使用 android:priority="2147483647" 代替 android:priority="100" 因为假设您使用的任何应用程序的优先级高于您设置的优先级,那么您的广播永远不会通知您。还要在你的 mainfest uses-permission android:name="android.permission.RECEIVE_SMS" 中检查这个权限
【讨论】:
该值必须是整数,例如“100”。数字越大优先级越高。默认值为 0。该值必须大于 -1000 且小于 1000。如 DOC ref developer.android.com/guide/topics/manifest/… 中的建议以上是关于我的传入 SMS 处理接收器应从系统获得啥许可?的主要内容,如果未能解决你的问题,请参考以下文章