首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android - smsManager.sendTextMessage

Android - smsManager.sendTextMessage
EN

Stack Overflow用户
提问于 2014-12-26 16:08:40
回答 1查看 2K关注 0票数 1

在下面的代码中,消息是一个消息类数组,它包含100+电话枚举和sms消息。

代码语言:javascript
复制
for(Message msg: message)  {
    String msgString = msg.getSMSText1() + " " + msg.getTransporterNo() + "\n" + msg.getSMSText2();
    smsManager.sendTextMessage(msg.getPhoneNo(), null, msgString, piSent, null);
}

以及在发送消息后接收广播的代码:

代码语言:javascript
复制
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和phonenumber,这样我就可以知道哪条消息是成功的。

EN

回答 1

Stack Overflow用户

发布于 2014-12-26 17:00:06

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

代码语言:javascript
复制
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中检索它们

代码语言:javascript
复制
int id = intent.getIntExtra("message_id", -1);
String number = intent.getStringExtra("phone_number");

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27654516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档