Android SMS-在应用程序未运行时处理传递报告

Android SMS-在应用程序未运行时处理传递报告,android,smsmanager,Android,Smsmanager,我有一个应用程序,其中一条短信被发送到一个特定的号码和交付报告将被跟踪。我正在使用来自SO链接的代码,当应用程序运行时,交付报告会很好 我如何处理这种情况,例如,我发送短信的号码被关闭(或)不在网络区域(或)短信发送由于某种原因被延迟。现在当短信发送时,我会收到发送报告,但是,我不知道如何处理这种情况 有人能给我指一下这个方向吗 注意:此代码位于片段中 我的代码到现在为止: 发送SMS方法: private void sendSMS(JSONObject object, String sm

我有一个应用程序,其中一条短信被发送到一个特定的号码和交付报告将被跟踪。我正在使用来自SO链接的代码,当应用程序运行时,交付报告会很好

我如何处理这种情况,例如,我发送短信的号码被关闭(或)不在网络区域(或)短信发送由于某种原因被延迟。现在当短信发送时,我会收到发送报告,但是,我不知道如何处理这种情况

有人能给我指一下这个方向吗

注意:此代码位于片段中

我的代码到现在为止:

发送SMS方法:

   private void sendSMS(JSONObject object, String sms_message) {

        try {

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

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

            activity.registerReceiver(sendBroadcastReceiver, new IntentFilter(SENT));
            activity.registerReceiver(deliveryBroadcastReciever, new IntentFilter(DELIVERED));

            SmsManager sms = SmsManager.getDefault();
            sms.sendTextMessage(object.getString("official_mobile"), null, sms_message, sentPI, deliveredPI);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
广播接收机:

class sentReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent arg1) {
        switch (getResultCode()) {
            case Activity.RESULT_OK:
                Log.d(Const.DEBUG, "Message Sent Successfully");
                Toast.makeText(activity, "SMS Sent Successfully", Toast.LENGTH_SHORT)
                        .show();
                break;
            case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
                Log.d(Const.DEBUG, "Message Sending Failed");
                Toast.makeText(activity, "Generic failure",
                        Toast.LENGTH_SHORT).show();
                break;
            case SmsManager.RESULT_ERROR_NO_SERVICE:
                Log.d(Const.DEBUG, "Message Sending Failed");
                Toast.makeText(activity, "No service",
                        Toast.LENGTH_SHORT).show();
                break;
            case SmsManager.RESULT_ERROR_NULL_PDU:
                Log.d(Const.DEBUG, "Message Sending Failed");
                Toast.makeText(activity, "Null PDU", Toast.LENGTH_SHORT)
                        .show();
                break;
            case SmsManager.RESULT_ERROR_RADIO_OFF:
                Log.d(Const.DEBUG, "Message Sending Failed");
                Toast.makeText(activity, "Radio off",
                        Toast.LENGTH_SHORT).show();
                break;
        }

    }
}


class deliverReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent arg1) {
        switch (getResultCode()) {
            case Activity.RESULT_OK:
                Log.d(Const.DEBUG, "Message Delivered Successfully");
                Toast.makeText(activity, "SMS Delivered",
                        Toast.LENGTH_SHORT).show();
                break;
            case Activity.RESULT_CANCELED:
                Log.d(Const.DEBUG, "Message Delivery Failed");
                Toast.makeText(activity, "SMS Delivery Failed.",
                        Toast.LENGTH_SHORT).show();
                break;
        }

    }
}