私は次のような放送受信機でSMSを読んでいました:
if (intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) {
...
}
しかし、今私はインストールgo sms pro
し、私の受信機は二度と発射されません. なんで?go sms pro を使用している場合でも、どうすれば受信機を起動できますか?
私は次のような放送受信機でSMSを読んでいました:
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);
リストの最初の受信者は、他の受信者よりも先に SMS を受信します