私が推測するほとんどの人に続いて、私はhttp://mobiforge.com/developing/story/sms-messaging-androidからSMS処理コードを取得しています。このコード(送信済みメッセージ用)を使用して、送信済みおよび配信済みメッセージのブロードキャストをキャッチしようとしています。
appContext.registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context arg0, Intent arg1) {
Log.i("Debug",
"My embedded receiver: "
+ String.valueOf(getResultCode()));
}
}, new IntentFilter("iam.applications.SmsReceiver.SMS_SENT"));
これにより、SMSが正常に送信された場合でも、getResultCode()は常に-1の値を返します。SMSが送信されたかどうかを確認する別の方法がわかりません。
また、BroadcastReceiverをサブクラス化して、違いが生じるかどうかを確認しましたが、違いはありません。-1は常に返されます:
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.i("Debug",
"Result code in onReceive: " + String.valueOf(getResultCode()));
}
私がPendingIntentを作成したのは、次のようになります(長いSMSメッセージの一部を処理するためのforループからの抜粋)。
Intent sentIntent = new Intent(
"iam.applications.SmsReceiver.SMS_SENT");
sentIntent.putExtra(SmsHandler.PHONE_NUMBER, phoneNumber);
sentIntent.putExtra(SmsHandler.MESSAGE, message);
sentPIArray.add(PendingIntent.getBroadcast(appContext,
(int) Calendar.getInstance().getTimeInMillis(), sentIntent,
PendingIntent.FLAG_UPDATE_CURRENT));