SMS レシーバーの配信に問題があります。Manifest
権限とインテント フィルターを設定し、チュートリアルのようにActivity
SMS を作成してBroadcastReceiver
インテントをキャッチします
ここからのコードですActivity
try {
String DELIVERED = "SMS_RECEIVED";
PendingIntent deliveredPI = PendingIntent.getBroadcast(context, 0, new Intent(DELIVERED), 0);
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(contact.getPhone(), null, message, null, deliveredPI);
} catch (Exception e) {
Log.e(LOG_TAG, "Sms do not sent");
}
ここに権限がありますManifest
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_CONTACTS"/>
...
<receiver android:name="com.uniquare.sms.globals.DeliveredReceiver">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
との一部Receivers
public class DeliveredReceiver extends BroadcastReceiver {
private static final String LOG_TAG = "DeliveredReceiver";
@Override
public void onReceive(Context context, Intent intent) {
Log.d(LOG_TAG, "onReceive()");
//get the SMS message passed in
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
String phone = "";
if (bundle != null) {
//retrieve the SMS message received
Object[] pdus = (Object[]) bundle.get("pdus");
msgs = new SmsMessage[pdus.length];
.....
そして、私にとって奇妙なことがあります。現在のデバイスに SMS を送信すると、正常にBroadcastReceiver
動作します。しかし、連絡先リストから他のユーザーに送信するとBroadcastReceiver
、まったく機能しません。
inandroid.provider.Telephony.SMS_RECEIVED
の代わりに設定しようとしています:SMS_RECEIVED
Activity
PendingIntent
String DELIVERED = "android.provider.Telephony.SMS_RECEIVED";
PendingIntent deliveredPI = PendingIntent.getBroadcast(context, 0, new Intent(DELIVERED), 0);
この場合DeliveredReceiver
は機能し、onReceive
が呼び出されますが、から取得しようとすると が取得pdus
されObject[] pdus = (Object[]) bundle.get("pdus");
ますnull
。
同じ問題がありますか?私に提案してもらえますか?