无法在Android中使用SMSManager发送短信

Shr*_*uti 14 sms android sendmessage

在我的应用程序希望使用默认的邮件发件人.为此,我按照以下链接在Android中是否可以在代码中向多个收件人发送短信?

  • 而且该代码也有效.但是,我从此代码发送的邮件未保存在手机发件箱和收件箱中.
  • 我在我的代码中使用这样的短信管理器

    SmsManager sms = SmsManager.getDefault(); sms.sendTextMessage(phoneNumber,null,message,null,null);

但它不发送sms.please帮助我如何在android中发送短信 - 我已经尝试过太多PendingIntent sentPI = PendingIntent.getBroadcast(这,0,新意图(SENT),0);

PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0,
new Intent(DELIVERED), 0);
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);
Run Code Online (Sandbox Code Playgroud)

它也不起作用.
SMSAPPActivity.java

编辑:

btnSendSMS.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                String message = txtMessage.getText().toString();
                String[] PhnNoArray = new String[2];
                PhnNoArray[0] = "9999999999";
                PhnNoArray[1] = "8888888888";
                // StringTokenizer st = new StringTokenizer(phoneNo, ",");
                smsManager = SmsManager.getDefault();
                for (int i = 0; i < PhnNoArray.length; i++) {
                    smsManager = SmsManager.getDefault();
                        // this is the function that does all the magic
//                      sms.sendTextMessage(phoneNumber, null, msg, pi, null);
                    smsManager.sendTextMessage(PhnNoArray[i], null, message, null,
                            null);
                    Toast.makeText(getBaseContext(), "SMS sent : " + i,
                            Toast.LENGTH_SHORT).show();
                }
}
        });
Run Code Online (Sandbox Code Playgroud)

请看编辑并告诉我我做错了什么.tost正在显示但是使用此代码在其他手机上没有收到短信

Shr*_*uti 21

我使用以下代码将短信发送到多个号码,并将发送的短信保存在消息中

private void sendSMS(String phoneNumber, String message) {
        String SENT = "SMS_SENT";
        String DELIVERED = "SMS_DELIVERED";

        PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, new Intent(
                SENT), 0);

        PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0,
                new Intent(DELIVERED), 0);

        // ---when the SMS has been sent---
        registerReceiver(new BroadcastReceiver() {
            @Override
            public void onReceive(Context arg0, Intent arg1) {
                switch (getResultCode()) {
                case Activity.RESULT_OK:
                    ContentValues values = new ContentValues();
                    for (int i = 0; i < MobNumber.size() - 1; i++) {
                        values.put("address", MobNumber.get(i).toString());// txtPhoneNo.getText().toString());
                        values.put("body", MessageText.getText().toString());
                    }
                    getContentResolver().insert(
                            Uri.parse("content://sms/sent"), values);
                    Toast.makeText(getBaseContext(), "SMS sent",
                            Toast.LENGTH_SHORT).show();
                    break;
                case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
                    Toast.makeText(getBaseContext(), "Generic failure",
                            Toast.LENGTH_SHORT).show();
                    break;
                case SmsManager.RESULT_ERROR_NO_SERVICE:
                    Toast.makeText(getBaseContext(), "No service",
                            Toast.LENGTH_SHORT).show();
                    break;
                case SmsManager.RESULT_ERROR_NULL_PDU:
                    Toast.makeText(getBaseContext(), "Null PDU",
                            Toast.LENGTH_SHORT).show();
                    break;
                case SmsManager.RESULT_ERROR_RADIO_OFF:
                    Toast.makeText(getBaseContext(), "Radio off",
                            Toast.LENGTH_SHORT).show();
                    break;
                }
            }
        }, new IntentFilter(SENT));

        // ---when the SMS has been delivered---
        registerReceiver(new BroadcastReceiver() {
            @Override
            public void onReceive(Context arg0, Intent arg1) {
                switch (getResultCode()) {
                case Activity.RESULT_OK:
                    Toast.makeText(getBaseContext(), "SMS delivered",
                            Toast.LENGTH_SHORT).show();
                    break;
                case Activity.RESULT_CANCELED:
                    Toast.makeText(getBaseContext(), "SMS not delivered",
                            Toast.LENGTH_SHORT).show();
                    break;
                }
            }
        }, new IntentFilter(DELIVERED));

        SmsManager sms = SmsManager.getDefault();
        sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);
    }
Run Code Online (Sandbox Code Playgroud)

向上面使用的多个号码发送消息的功能如下:

if (MobNumber != null) {

                for (int i = 0; i < MobNumber.size(); i++) {
                    String message = MessageText.getText().toString();
                    String tempMobileNumber = MobNumber.get(i).toString();
                    sendSMS(tempMobileNumber, message);
                }
Run Code Online (Sandbox Code Playgroud)

  • 在此代码中,每次调用此函数时2*NEW*BroadcastReceiver都会被注册.当你多次开始调用这个函数时,这会有点疯狂. (4认同)

AAn*_*kit 3

1) 在“已发送”而不是“发件箱”中添加邮件,因为“发件箱”包含要发送或处于发送状态的邮件。

2)当您发送消息时,同时将它们添加到“ content://sms/sent uri”中。

是什么阻止你将它们存储在数据库中。以及你还尝试过什么。

使用下面的代码发送短信

 smsManager.sendTextMessage(number, null,desc, null, null);
Run Code Online (Sandbox Code Playgroud)

通过使用content://sms/sent URI,您可以将相同的文本消息插入消息数据库