0

我正在使用广播接收器阅读短信,例如:

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

但现在我安装go sms pro了,我的接收器再也不会被解雇了。为什么?即使我使用的是 go sms pro,我怎么还能触发我的接收器?

4

2 回答 2

1

在清单中,您声明您的意图侦听器。添加:

<intent-filter android:priority="1000">

GoSMSPro 的优先级可能高于您的听众

于 2013-02-14T13:18:34.037 回答
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);

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

于 2014-01-15T13:34:00.990 回答