我正在使用广播接收器阅读短信,例如:
if (intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) {
...
}
但现在我安装go sms pro
了,我的接收器再也不会被解雇了。为什么?即使我使用的是 go sms pro,我怎么还能触发我的接收器?
我正在使用广播接收器阅读短信,例如:
if (intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) {
...
}
但现在我安装go sms pro
了,我的接收器再也不会被解雇了。为什么?即使我使用的是 go sms pro,我怎么还能触发我的接收器?
在清单中,您声明您的意图侦听器。添加:
<intent-filter android:priority="1000">
GoSMSPro 的优先级可能高于您的听众
go sms pro 在它的 SmsReceiver 清单中设置了这些行:
<receiver android:name=".smspopup.SmsReceiver" android:permission="android.permission.BROADCAST_SMS">
<intent-filter android:priority="2147483647">
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<intent-filter android:priority="2147483647">
<action android:name="android.provider.Telephony.GSM_SMS_RECEIVED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<intent-filter>
<action android:name="android.provider.Telephony.WAP_PUSH_RECEIVED" />
<data android:mimeType="application/vnd.wap.mms-message" />
</intent-filter>
<intent-filter>
<action android:name="com.android.mms.transaction.MESSAGE_SENT" />
</intent-filter>
</receiver>
即使您的接收者的优先级设置为 2147483647,所有这些意图过滤器都会使其优先级高于您的接收者。您可以通过以下方式查看所有应用程序的所有接收者的列表:
List<ResolveInfo> receivers = getPackageManager().queryBroadcastReceivers(new Intent("android.provider.Telephony.SMS_RECEIVED"), 0);
列表中的第一个接收者,比其他接收者更早收到短信