0

私は次のような放送受信機でSMSを読んでいました:

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

リストの最初の受信者は、他の受信者よりも先に SMS を受信します

于 2014-01-15T13:34:00.990 に答える