我正在用广播接收器读取短信,如:
if (intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) {
...
}
但现在我安装了go sms pro
,我的接收器再也没有被解雇了。为什么?即使我正在使用go sms pro,我怎么还能点燃我的接收器?
答案 0 :(得分:1)
,您声明您的目标侦听器。添加:
<intent-filter android:priority="1000">
GoSMSPro的优先级高于您的倾听者
答案 1 :(得分:0)
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);
列表中的第一个接收者,比其他人接收短信