在Android的短信送达报告 [英] SMS Delivery Report in Android
本文介绍了在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屋!
查看全文