在Android的短信送达报告 [英] SMS Delivery Report in Android

查看:142
本文介绍了在Android的短信送达报告的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想获得的短信送达报告我想很多例子,但是,一个流量不显示传递报告一样,如果我的余额为0时,发送短信在我的code未显示的短信送达报告失败,否则显示一样,没有报告服务等等。我想找到短信发送失败送达报告时,我的余额为0。

帮助我与任何code!

在此先感谢!

解决方案

 的BroadcastReceiver sendBroadcastReceiver =新sentReceiver();
    BroadcastReceiver的deliveryBroadcastReciever =新deliverReceiver();;

    @覆盖
    保护无效的onPause(){
        // TODO自动生成方法存根
        super.onPause();

        尝试 {
            unregisterReceiver(sendBroadcastReceiver);
            unregisterReceiver(deliveryBroadcastReciever);
        }赶上(例外五){
            // TODO自动生成的catch块
            e.printStackTrace();
        }
    }
@覆盖
保护无效的onDestroy(){
    // TODO自动生成方法存根
    super.onDestroy();
    尝试 {
        unregisterReceiver(sendBroadcastReceiver);
        unregisterReceiver(deliveryBroadcastReciever);
    }赶上(例外五){
        // TODO自动生成的catch块
        e.printStackTrace();
    }
}

    send_sms.setOnClickListener(新OnClickListener(){

            @覆盖
            公共无效的onClick(视图v){
                // TODO自动生成方法存根
                如果(textView.getText()。的toString()。等于()
                        | textView.getText()的toString()。等于(空)){
                    Toast.makeText(SendSMS.this,enter_ph_no,Toast.LENGTH_LONG)
                            。显示();
                } 其他 {


                        sendSMS(textView.getText()的toString(),sms_content。);
                        完();


                }

            }
        });
私人无效sendSMS(字符串phoneNumber的,字符串消息){
        字符串SENT =SMS_SENT;
        字符串DELIVERED =SMS_DELIVERED;

        PendingIntent sentPI = PendingIntent.getBroadcast(此,0,新的意向(
                SENT),0);

        PendingIntent deliveredPI = PendingIntent.getBroadcast(此,0,
                新的意图(交付),0);

        registerReceiver(sendBroadcastReceiver,新的IntentFilter(发送));

        registerReceiver(deliveryBroadcastReciever,新的IntentFilter(交付));
        SmsManager的短信= SmsManager.getDefault();
        sms.sendTextMessage(phoneNumber的,空,消息,sentPI,deliveredPI);


    }

    类deliverReceiver扩展的BroadcastReceiver {
        @覆盖
        公共无效的onReceive(上下文的背景下,意图ARG1){
            开关(的getResult code()){
            案例Activity.RESULT_OK:
                Toast.makeText(getBaseContext(),sms_delivered,
                        Toast.LENGTH_SHORT).show();
                打破;
            案例Activity.RESULT_CANCELED:
                Toast.makeText(getBaseContext(),sms_not_delivered,
                        Toast.LENGTH_SHORT).show();
                打破;
            }

        }
    }

    类sentReceiver扩展的BroadcastReceiver {
        @覆盖
        公共无效的onReceive(上下文的背景下,意图ARG1){
            开关(的getResult code()){
            案例Activity.RESULT_OK:
                Toast.makeText(getBaseContext(),sms_sent,Toast.LENGTH_SHORT)
                        。显示();
                startActivity(新意图(SendSMS.this,ChooseOption.class));
                overridePendingTransition(R.anim.animation,R.anim.animation2);
                打破;
            案例SmsManager.RESULT_ERROR_GENERIC_FAILURE:
                Toast.makeText(getBaseContext(),一般故障,
                        Toast.LENGTH_SHORT).show();
                打破;
            案例SmsManager.RESULT_ERROR_NO_SERVICE:
                Toast.makeText(getBaseContext(),无服务,
                        Toast.LENGTH_SHORT).show();
                打破;
            案例SmsManager.RESULT_ERROR_NULL_PDU:
                Toast.makeText(getBaseContext(),空的PDU,Toast.LENGTH_SHORT)
                        。显示();
                打破;
            案例SmsManager.RESULT_ERROR_RADIO_OFF:
                Toast.makeText(getBaseContext(),无线电关
                        Toast.LENGTH_SHORT).show();
                打破;
            }

        }
    }
 

I want to get SMS delivery report I am trying many examples but, one flow not displaying delivery report like if my balance is 0 when SMS sending in my code is not displaying SMS delivery report failed otherwise shows report like no service etc.. I want to find SMS sending failed delivery report when my balance is 0.

Help me with any code!

Thanks in Advance!

解决方案

BroadcastReceiver sendBroadcastReceiver = new sentReceiver();
    BroadcastReceiver deliveryBroadcastReciever = new deliverReceiver();;

    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();

        try {
            unregisterReceiver(sendBroadcastReceiver);
            unregisterReceiver(deliveryBroadcastReciever);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
@Override
protected void onDestroy() {
    // TODO Auto-generated method stub
    super.onDestroy();
    try {
        unregisterReceiver(sendBroadcastReceiver);
        unregisterReceiver(deliveryBroadcastReciever);
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

    send_sms.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                if (textView.getText().toString().equals("")
                        | textView.getText().toString().equals(null)) {
                    Toast.makeText(SendSMS.this, enter_ph_no, Toast.LENGTH_LONG)
                            .show();
                } else {


                        sendSMS(textView.getText().toString(), "sms_content");
                        finish();


                }

            }
        });
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);

        registerReceiver(sendBroadcastReceiver, new IntentFilter(SENT));

        registerReceiver(deliveryBroadcastReciever, new IntentFilter(DELIVERED));
        SmsManager sms = SmsManager.getDefault();
        sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);


    }

    class deliverReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, 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;
            }

        }
    }

    class sentReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent arg1) {
            switch (getResultCode()) {
            case Activity.RESULT_OK:
                Toast.makeText(getBaseContext(), sms_sent, Toast.LENGTH_SHORT)
                        .show();
                startActivity(new Intent(SendSMS.this, ChooseOption.class));
                overridePendingTransition(R.anim.animation, R.anim.animation2);
                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;
            }

        }
    }

这篇关于在Android的短信送达报告的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆