Android以编程方式发送短信

阿尼班

我正在尝试以编程方式发送短信,但在某些情况下无法正常工作。

如果我这样打电话-sendSMS("+918444380502", "BAL");短信发送成功没有问题,但是如果我尝试这样发送-sendSMS("+918444380502", "El teléfono no está registrado o ligado a un usuario, favor de registrarlo");它没有发送任何线索!

发送短信代码如下-

//---sends an SMS message to another device---
public 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:
                    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;
            }
            stopSelf();
        }
    }, new IntentFilter(DELIVERED));

    SmsManager sms = SmsManager.getDefault();
    sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);
}
阿尼班

感谢Mike M,代码对我来说像这样工作-

private void sendSMS(String number, String msg)
{
    SmsManager sm = SmsManager.getDefault();
    ArrayList<String> parts = sm.divideMessage(msg);

    Intent iSent = new Intent(ACTION_SMS_SENT);
    PendingIntent piSent = PendingIntent.getBroadcast(this, 0, iSent, 0);
    Intent iDel = new Intent(ACTION_SMS_DELIVERED);
    PendingIntent piDel = PendingIntent.getBroadcast(this, 0, iDel, 0);

    if (parts.size() == 1)
    {
        msg = parts.get(0);
        sm.sendTextMessage(number, null, msg, piSent, piDel);
    }
    else
    {
        ArrayList<PendingIntent> sentPis = new ArrayList<PendingIntent>();
        ArrayList<PendingIntent> delPis = new ArrayList<PendingIntent>();

        int ct = parts.size();
        for (int i = 0; i < ct; i++)
        {
            sentPis.add(i, piSent);
            delPis.add(i, piDel);
        }

        sm.sendMultipartTextMessage(number, null, parts, sentPis, delPis);
        stopSelf();
    }
}

public class SmsReceiver extends BroadcastReceiver
{
    @Override
    public void onReceive(Context context, Intent intent)
    {
        String action = intent.getAction();

        if (action.equals(ACTION_SMS_SENT))
        {
            switch (getResultCode())
            {
                case Activity.RESULT_OK:
                    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;
            }
        }
        else if (action.equals(ACTION_SMS_DELIVERED))
        {
            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;
            }
        }
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法在Android中以编程方式发送短信

来自分类Dev

在 android 8 上以编程方式发送短信

来自分类Dev

以编程方式发送短信而无需打开短信应用

来自分类Dev

在android中,如何以编程方式检查我是否有足够的数量发送短信?

来自分类Dev

以编程方式发送的短信未在“消息”应用中显示

来自分类Dev

以编程方式在Android上发送Ping

来自分类Dev

在用户授予权限后,如何以编程方式发送短信?

来自分类Dev

android从webinterface发送短信

来自分类Dev

从Android App发送短信

来自分类Dev

无法以编程方式删除短信(默认短信应用集)

来自分类Dev

Android-如何以编程方式使我的应用程序默认为短信应用程序

来自分类Dev

从android和eclipse发送短信

来自分类Dev

Android发送短信加载JS

来自分类Dev

在Android中发送多个短信

来自分类Dev

从android和eclipse发送短信

来自分类Dev

Android发送短信加载JS

来自分类Dev

Android:如何使用WhatsApp,微信以编程方式发送消息?

来自分类Dev

在Android jellyBean中以编程方式发送太多消息

来自分类Dev

android编程中的传入短信列表

来自分类Dev

使用Android 4.4上的非默认短信应用发送短信

来自分类Dev

Android会在收到短信后自动发送短信

来自分类Dev

截图并以编程方式发送

来自分类Dev

Android删除发送框中的短信

来自分类Dev

如何在Qt for Android中发送短信?

来自分类Dev

Android-关机前发送短信

来自分类Dev

无法在Android应用中发送短信

来自分类Dev

在Android中以PDU模式发送短信

来自分类Dev

Android应用发送字符错误的短信

来自分类Dev

如何使用TextLocal在Android中发送短信

Related 相关文章

热门标签

归档