1. package lab.sodino.servicecenteraddress;
  2. import android.app.Activity;
  3. import android.app.PendingIntent;
  4. import android.content.BroadcastReceiver;
  5. import android.content.Context;
  6. import android.content.Intent;
  7. import android.content.IntentFilter;
  8. import android.os.Bundle;
  9. import android.telephony.gsm.SmsManager;
  10. import android.telephony.gsm.SmsMessage;
  11. import android.view.Gravity;
  12. import android.view.View;
  13. import android.widget.Button;
  14. import android.widget.LinearLayout;
  15. import android.widget.TextView;
  16. import android.widget.LinearLayout.LayoutParams;
  17. public class ServiceCenterAddressAct extends Activity {
  18. private static final String ACTION_SMS_SEND = "lab.sodino.sms.send";
  19. private static final String ACTION_SMS_DELIVERY = "lab.sodino.sms.delivery";
  20. private static final String ACTION_SMS_RECEIVER = "android.provider.Telephony.SMS_RECEIVED";
  21. private TextView serviceCenterAddressText;
  22. private SMSReceiver sendReceiver;
  23. private SMSReceiver deliveryReceiver;
  24. private SMSReceiver smsReceiver;
  25. /** Called when the activity is first created. */
  26. @Override
  27. public void onCreate(Bundle savedInstanceState) {
  28. super.onCreate(savedInstanceState);
  29. LinearLayout.LayoutParams layParams = new LinearLayout.LayoutParams(
  30. LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
  31. LinearLayout linearLay = new LinearLayout(this);
  32. linearLay.setOrientation(LinearLayout.VERTICAL);
  33. linearLay.setLayoutParams(layParams);
  34. TextView textView = new TextView(this);
  35. textView.setBackgroundColor(0xffffffff);
  36. textView.setTextColor(0xff0000ff);
  37. textView.setTextSize(20);
  38. textView.setText("点击发送按钮将发送自定义字符串至10086");
  39. textView.setGravity(Gravity.CENTER);
  40. linearLay.addView(textView);
  41. Button btnSend = new Button(this);
  42. // LinearLayout.LayoutParams btnParams = new LinearLayout.LayoutParams(
  43. // LinearLayout.LayoutParams.FILL_PARENT,
  44. // LinearLayout.LayoutParams.WRAP_CONTENT);
  45. btnSend.setText("发送");
  46. btnSend.setOnClickListener(new Button.OnClickListener() {
  47. public void onClick(View v) {
  48. serviceCenterAddressText.setText("正在等待发送短信...");
  49. sendSms();
  50. }
  51. });
  52. linearLay.addView(btnSend);
  53. serviceCenterAddressText = new TextView(this);
  54. serviceCenterAddressText.setText("正在等待发送短信...");
  55. serviceCenterAddressText.setBackgroundColor(0xffffffff);
  56. serviceCenterAddressText.setTextColor(0xff0000ff);
  57. serviceCenterAddressText.setTextSize(20);
  58. serviceCenterAddressText.setGravity(Gravity.LEFT);
  59. linearLay.addView(serviceCenterAddressText);
  60. setContentView(linearLay);
  61. // 注册send
  62. sendReceiver = new SMSReceiver();
  63. IntentFilter sendFilter = new IntentFilter(ACTION_SMS_SEND);
  64. registerReceiver(sendReceiver, sendFilter);
  65. // 注册delivery
  66. deliveryReceiver = new SMSReceiver();
  67. IntentFilter deliveryFilter = new IntentFilter(ACTION_SMS_DELIVERY);
  68. registerReceiver(deliveryReceiver, deliveryFilter);
  69. // 注册接收下行receiver
  70. smsReceiver = new SMSReceiver();
  71. IntentFilter receiverFilter = new IntentFilter(ACTION_SMS_RECEIVER);
  72. registerReceiver(smsReceiver, receiverFilter);
  73. }
  74. protected void onPause() {
  75. unregisterReceiver(sendReceiver);
  76. unregisterReceiver(deliveryReceiver);
  77. unregisterReceiver(smsReceiver);
  78. }
  79. private void sendSms() {
  80. String smsBody = "lab.sodino.sms.test";
  81. String smsAddress = "10086";
  82. SmsManager smsMag = SmsManager.getDefault();
  83. Intent sendIntent = new Intent(ACTION_SMS_SEND);
  84. PendingIntent sendPI = PendingIntent.getBroadcast(this, 0, sendIntent,
  85. 0);
  86. Intent deliveryIntent = new Intent(ACTION_SMS_DELIVERY);
  87. PendingIntent deliveryPI = PendingIntent.getBroadcast(this, 0,
  88. deliveryIntent, 0);
  89. smsMag.sendTextMessage(smsAddress, null, smsBody, sendPI, deliveryPI);
  90. }
  91. public class SMSReceiver extends BroadcastReceiver {
  92. public void onReceive(Context context, Intent intent) {
  93. String actionName = intent.getAction();
  94. int resultCode = getResultCode();
  95. if (actionName.equals(ACTION_SMS_SEND)) {
  96. switch (resultCode) {
  97. case Activity.RESULT_OK:
  98. serviceCenterAddressText
  99. .append("\n[Send]SMS Send:Successed!");
  100. break;
  101. case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
  102. serviceCenterAddressText
  103. .append("\n[Send]SMS Send:RESULT_ERROR_GENERIC_FAILURE!");
  104. break;
  105. case SmsManager.RESULT_ERROR_NO_SERVICE:
  106. serviceCenterAddressText
  107. .append("\n[Send]SMS Send:RESULT_ERROR_NO_SERVICE!");
  108. break;
  109. case SmsManager.RESULT_ERROR_NULL_PDU:
  110. serviceCenterAddressText
  111. .append("\n[Send]SMS Send:RESULT_ERROR_NULL_PDU!");
  112. break;
  113. case SmsManager.RESULT_ERROR_RADIO_OFF:
  114. break;
  115. }
  116. } else if (actionName.equals(ACTION_SMS_DELIVERY)) {
  117. switch (resultCode) {
  118. case Activity.RESULT_OK:
  119. serviceCenterAddressText
  120. .append("\n[Delivery]SMS Delivery:Successed!");
  121. break;
  122. case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
  123. serviceCenterAddressText
  124. .append("\n[Delivery]SMS Delivery:RESULT_ERROR_GENERIC_FAILURE!");
  125. break;
  126. case SmsManager.RESULT_ERROR_NO_SERVICE:
  127. serviceCenterAddressText
  128. .append("\n[Delivery]SMS Delivery:RESULT_ERROR_NO_SERVICE!");
  129. break;
  130. case SmsManager.RESULT_ERROR_NULL_PDU:
  131. serviceCenterAddressText
  132. .append("\n[Delivery]SMS Delivery:RESULT_ERROR_NULL_PDU!");
  133. break;
  134. case SmsManager.RESULT_ERROR_RADIO_OFF:
  135. serviceCenterAddressText
  136. .append("\n[Delivery]SMS Delivery:RESULT_ERROR_RADIO_OFF!");
  137. break;
  138. }
  139. serviceCenterAddressText.append("\n正在等待下行短信...");
  140. } else if (actionName.equals(ACTION_SMS_RECEIVER)) {
  141. System.out.println("[Sodino]result = " + resultCode);
  142. Bundle bundle = intent.getExtras();
  143. if (bundle != null) {
  144. Object[] myOBJpdus = (Object[]) bundle.get("pdus");
  145. SmsMessage[] messages = new SmsMessage[myOBJpdus.length];
  146. for (int i = 0; i < myOBJpdus.length; i++) {
  147. messages[i] = SmsMessage
  148. .createFromPdu((byte[]) myOBJpdus[i]);
  149. }
  150. SmsMessage message = messages[0];
  151. serviceCenterAddressText.append("\n短信服务中心号码为:"
  152. + message.getServiceCenterAddress());
  153. }
  154. }
  155. }
  156. }
  157. }

更多相关文章

  1. Android实现开机自启动Service
  2. android 发送短信的两种方式
  3. android之同一wifi下两台设备通过UDP进行通讯
  4. android 发送短信的两种方式
  5. Android(安卓)Intent 常见用法总结
  6. android中的广播接收器
  7. 1.5 Android(安卓)入门实例 后台循环发短信
  8. Android发送短信
  9. Android短信发送器实现方法

随机推荐

  1. Android基础控件使用指南
  2. Service的xml属性解析
  3. 说说 Android 的常见 UI 控件
  4. Android事件分发/传递机制总结
  5. (一)Android事件分发机制 - View篇
  6. Android系列之浅谈Android 3D旋转
  7. 【Android Studio使用教程1】Android Stu
  8. Flash Android ANE打包之基本流程
  9. android - 为安全而设计 - 1 - 开发文档
  10. Android数据储存