0

我创建了一个示例项目,我可以获取我发送的短信的发送报告。但是我已经在android源代码中注册了接收器。任何人都可以帮我在清单文件中注册广播接收器,并且通过使用该接收器,我只需要获取交付报告。请帮我。谢谢。

4

1 回答 1

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

    }
}
于 2013-11-13T08:18:38.657 回答