跟随我猜的大多数人,我从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"));
这始终导致 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));