去sms pro和android.provider.Telephony.SMS_RECEIVED接收器

时间:2013-02-14 13:16:17

标签: android

我正在用广播接收器读取短信,如:

if (intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) {
...
}

但现在我安装了go sms pro,我的接收器再也没有被解雇了。为什么?即使我正在使用go sms pro,我怎么还能点燃我的接收器?

2 个答案:

答案 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);

列表中的第一个接收者,比其他人接收短信