发送多条短信时向数据库插入数据时出错

发布于 2025-01-05 18:35:03 字数 3912 浏览 1 评论 0原文

我设计了自己的撰写屏幕来发送短信, 当点击发送按钮时 我正在向多个收件人发送消息

 sendBTN.setOnClickListener(new OnClickListener() {

                public void onClick(View v) {
                    // TODO Auto-generated method stub

    avedPhoneno = "5558,5554,5556";

                    StringTokenizer st = new StringTokenizer(savedPhoneno, ",");
                    while (st.hasMoreElements()) {

                        tempMobileNumber = (String) st.nextElement();
                        System.out.println("tempMobileNumber in onclicklistener "+tempMobileNumber);
                        if (tempMobileNumber.length() > 0
                                && encryptedText.toString().trim().length() > 0) {


                            sendSMS(tempMobileNumber,
                                    base64msgString.concat(timeStamp1));

                        } else {
                            Toast.makeText(getBaseContext(),
                                    "Please enter both phone number and message.",
                                    Toast.LENGTH_SHORT).show();
                        }
                    }

,发送短信的方法是

 private void sendSMS(String edittextSmsNumber, String msg) {


                PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, new Intent(SMS_SENT), 0);
                PendingIntent DeliveredPI = PendingIntent.getBroadcast(this, 0, new Intent(SMS_DELIVERED), 0);
        SmsManager sms = SmsManager.getDefault();
                // short port = 8888;

                sms.sendTextMessage(edittextSmsNumber, null, msg, sentPI, DeliveredPI);
        }

,在广播接收器中,我试图将数据存储到数据库中,

private BroadcastReceiver sendreceiver = new BroadcastReceiver()
     {
             @Override
             public void onReceive(Context context, Intent intent)
             {
                     String info = "Send information: ";

                     switch(getResultCode())
                     {
                             case Activity.RESULT_OK:
                                 info += "send successful";
                                 smsSent = true;
                             if (senderinfo != null && timeStamp != 0 && msgString != null) {
                                System.out.println("entered into database");
                                System.out.println("tempMobileNumber is "
                                        + tempMobileNumber);
                                outboxDatabase.open();
                                outboxDatabase.insertintoOutbox(msgString, key,
                                        tempMobileNumber, timeStamp);
                                outboxDatabase.close();
                            }
                            //unregisterReceiver(this);


                            break;
                             case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
                                 info += "send failed, generic failure";
                                 break;
                             case SmsManager.RESULT_ERROR_NO_SERVICE: 
                                 info += "send failed, no service"; 
                                 break;
                             case SmsManager.RESULT_ERROR_NULL_PDU:
                                 info += "send failed, null pdu"; 
                                 break;
                             case SmsManager.RESULT_ERROR_RADIO_OFF: 
                                 info += "send failed, radio is off";
                                 break;
                     }

                     Toast.makeText(getBaseContext(), info, Toast.LENGTH_SHORT).show();

             }
     };

但我只能在数据库中存储最后一个数字,即 5556 三次。

我想将所有三个数字存储到数据库中。 我想仅在正确发送消息时进行存储

,即当 getResultCode() = Activity.RESULT_OK; 可以发送到三个号码,但不能存储在数据库中 如何克服这个问题。

I have designed my own compose screen for sending sms,
in that when send button is clicked
I am sending msg to multiple recepients

 sendBTN.setOnClickListener(new OnClickListener() {

                public void onClick(View v) {
                    // TODO Auto-generated method stub

    avedPhoneno = "5558,5554,5556";

                    StringTokenizer st = new StringTokenizer(savedPhoneno, ",");
                    while (st.hasMoreElements()) {

                        tempMobileNumber = (String) st.nextElement();
                        System.out.println("tempMobileNumber in onclicklistener "+tempMobileNumber);
                        if (tempMobileNumber.length() > 0
                                && encryptedText.toString().trim().length() > 0) {


                            sendSMS(tempMobileNumber,
                                    base64msgString.concat(timeStamp1));

                        } else {
                            Toast.makeText(getBaseContext(),
                                    "Please enter both phone number and message.",
                                    Toast.LENGTH_SHORT).show();
                        }
                    }

and the method for sending sms is

 private void sendSMS(String edittextSmsNumber, String msg) {


                PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, new Intent(SMS_SENT), 0);
                PendingIntent DeliveredPI = PendingIntent.getBroadcast(this, 0, new Intent(SMS_DELIVERED), 0);
        SmsManager sms = SmsManager.getDefault();
                // short port = 8888;

                sms.sendTextMessage(edittextSmsNumber, null, msg, sentPI, DeliveredPI);
        }

and in the broadcast reciever i am trying to store the data into database

private BroadcastReceiver sendreceiver = new BroadcastReceiver()
     {
             @Override
             public void onReceive(Context context, Intent intent)
             {
                     String info = "Send information: ";

                     switch(getResultCode())
                     {
                             case Activity.RESULT_OK:
                                 info += "send successful";
                                 smsSent = true;
                             if (senderinfo != null && timeStamp != 0 && msgString != null) {
                                System.out.println("entered into database");
                                System.out.println("tempMobileNumber is "
                                        + tempMobileNumber);
                                outboxDatabase.open();
                                outboxDatabase.insertintoOutbox(msgString, key,
                                        tempMobileNumber, timeStamp);
                                outboxDatabase.close();
                            }
                            //unregisterReceiver(this);


                            break;
                             case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
                                 info += "send failed, generic failure";
                                 break;
                             case SmsManager.RESULT_ERROR_NO_SERVICE: 
                                 info += "send failed, no service"; 
                                 break;
                             case SmsManager.RESULT_ERROR_NULL_PDU:
                                 info += "send failed, null pdu"; 
                                 break;
                             case SmsManager.RESULT_ERROR_RADIO_OFF: 
                                 info += "send failed, radio is off";
                                 break;
                     }

                     Toast.makeText(getBaseContext(), info, Toast.LENGTH_SHORT).show();

             }
     };

but I am able to store the last number i.e., 5556 only in the database thrice.

I want to store all the three numbers into the database.
I want to store when only the msg is sent properly

i.e., when getResultCode() = Activity.RESULT_OK;
able to send to the three numbers but only not able to store in the database
how to overcome this.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文