繁体   English   中英

Android-smsManager.sendTextMessage

[英]Android - smsManager.sendTextMessage

在下面的代码中,message是一个Message类数组,其中包含100多个电话号码和sms消息。

for(Message msg: message)  {
    String msgString = msg.getSMSText1() + " " + msg.getTransporterNo() + "\n" + msg.getSMSText2();
    smsManager.sendTextMessage(msg.getPhoneNo(), null, msgString, piSent, null);
}

并且此代码用于在发送消息后接收广播:

PendingIntent piSent = PendingIntent.getBroadcast(this, 0, new Intent("SMS_SENT"), PendingIntent.FLAG_UPDATE_CURRENT);
BroadcastReceiver smsSentReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String result = "";
        switch(getResultCode()) {
            case Activity.RESULT_OK:
                result = "Transmission successful";
                break;
            case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
                result = "Transmission failed";
                break;
            case SmsManager.RESULT_ERROR_RADIO_OFF:
                result = "Radio off";
                break;
            case SmsManager.RESULT_ERROR_NULL_PDU:
                result = "No PDU defined";
                break;
            case SmsManager.RESULT_ERROR_NO_SERVICE:
                result = "No service";
                break;
        }
        Toast.makeText(getApplicationContext(), result,
                Toast.LENGTH_SHORT).show();
    }
};
registerReceiver(smsSentReceiver, new IntentFilter("SMS_SENT"));

有没有办法在smsManager.sendTextMessage期间传递其他数据? 我想传递其他数据,例如message_id和电话号码,以便我可以找出哪个消息成功与否。

您可以将必要的数据作为附加内容附加到Intent对象上。 例如:

Intent sentIntent = new Intent("SMS_SENT");
sentIntent.putExtra("message_id", id);
sentIntent.putExtra("phone_number", number);
PendingIntent piSent = PendingIntent.getBroadcast(this, 0, sentIntent, PendingIntent.FLAG_UPDATE_CURRENT);

然后,您可以从传递到BroadcastReceiveronReceive()方法的Intent检索它们:

int id = intent.getIntExtra("message_id", -1);
String number = intent.getStringExtra("phone_number");

另外,正如David Wasser在下面提醒我的那样,为确保每次通过循环发出新的PendingIntent ,您都需要为每个代码提供唯一的请求代码getBroadcast()调用中的第二个参数。 如果消息ID是唯一的,则可以使用它们。 否则,循环计数器就足够了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM