判断发送短信后的状态……BroadcastReceiver聆听PendingIntent

  1. package irdc.ex06_14;

  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.view.View;
  11. import android.widget.Button;
  12. import android.widget.EditText;
  13. import android.widget.TextView;
  14. import android.widget.Toast;

  15. public class EX06_14 extends Activity
  16. {
  17. /* 创建两个mServiceReceiver对象,作为类成员变量 */
  18. private mServiceReceiver mReceiver01, mReceiver02;
  19. private Button mButton1;
  20. private TextView mTextView01;
  21. private EditText mEditText1, mEditText2;

  22. /* 自定义ACTION常数,作为广播的Intent Filter识别常数 */
  23. private String SMS_SEND_ACTIOIN = "SMS_SEND_ACTIOIN";
  24. private String SMS_DELIVERED_ACTION = "SMS_DELIVERED_ACTION";
  25.     
  26. /** Called when the activity is first created. */
  27. @Override
  28. public void onCreate(Bundle savedInstanceState)
  29. {
  30.     super.onCreate(savedInstanceState);
  31.     setContentView(R.layout.main);
  32.     
  33.     mTextView01 = (TextView)findViewById(R.id.myTextView1);
  34.     
  35.     /* 电话号码 */
  36.     mEditText1 = (EditText) findViewById(R.id.myEditText1);
  37.     
  38.     /* 短信内容 */
  39.     mEditText2 = (EditText) findViewById(R.id.myEditText2);
  40.     mButton1 = (Button) findViewById(R.id.myButton1);
  41.     
  42.     //mEditText1.setText("+886935123456");
  43.     /* 设置默认为5556表示第二个模拟器的Port */
  44.     mEditText1.setText("5556");
  45.     mEditText2.setText("Hello DavidLanz!");
  46.     
  47.     /* 发送SMS短信按钮事件处理 */
  48.     mButton1.setOnClickListener(new Button.OnClickListener()
  49.     {
  50.       @Override
  51.       public void onClick(View arg0)
  52.       {
  53.         // TODO Auto-generated method stub
  54.         
  55.         /* 欲发送的电话号码 */
  56.         String strDestAddress = mEditText1.getText().toString();
  57.         
  58.         /* 欲发送的短信内容 */
  59.         String strMessage = mEditText2.getText().toString();
  60.         
  61.         /* 创建SmsManager对象 */
  62.         SmsManager smsManager = SmsManager.getDefault();
  63.         
  64.         // TODO Auto-generated method stub
  65.         try
  66.         {
  67.           /* 创建自定义Action常数的Intent(给PendingIntent参数之用) */
  68.           Intent itSend = new Intent(SMS_SEND_ACTIOIN);
  69.           Intent itDeliver = new Intent(SMS_DELIVERED_ACTION);
  70.           
  71.           /* sentIntent参数为传送后接受的广播信息PendingIntent */
  72.           PendingIntent mSendPI = PendingIntent.getBroadcast
  73.           (getApplicationContext(), 0, itSend, 0);
  74.           
  75.           /* deliveryIntent参数为送达后接受的广播信息PendingIntent */
  76.           PendingIntent mDeliverPI = PendingIntent.getBroadcast
  77.           (getApplicationContext(), 0, itDeliver, 0);
  78.           
  79.           /* 发送SMS短信,注意倒数的两个PendingIntent参数 */
  80.           smsManager.sendTextMessage
  81.           (strDestAddress, null, strMessage, mSendPI, mDeliverPI);
  82.           
  83.           mTextView01.setText(R.string.str_sms_sending);
  84.         }
  85.         catch(Exception e)
  86.         {
  87.           mTextView01.setText(e.toString());
  88.           e.printStackTrace();
  89.         }
  90.       }
  91.     });
  92. }

  93. /* 自定义mServiceReceiver覆盖BroadcastReceiver聆听短信状态信息 */
  94. public class mServiceReceiver extends BroadcastReceiver
  95. {
  96.     @Override
  97.     public void onReceive(Context context, Intent intent)
  98.     {
  99.       // TODO Auto-generated method stub
  100.       
  101.       try
  102.       {
  103.         /* android.content.BroadcastReceiver.getResultCode()方法 */
  104.         switch(getResultCode())
  105.         {
  106.           case Activity.RESULT_OK:
  107.             /* 发送短信成功 */
  108.             //mTextView01.setText(R.string.str_sms_sent_success);
  109.             mMakeTextToast
  110.             (
  111.               getResources().getText
  112.               (R.string.str_sms_sent_success).toString(),
  113.               true
  114.             );
  115.             break;
  116.           case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
  117.             /* 发送短信失败 */
  118.             //mTextView01.setText(R.string.str_sms_sent_failed);
  119.             mMakeTextToast
  120.             (
  121.               getResources().getText
  122.               (R.string.str_sms_sent_failed).toString(),
  123.               true
  124.             );
  125.             break;
  126.           case SmsManager.RESULT_ERROR_RADIO_OFF:
  127.             break;
  128.           case SmsManager.RESULT_ERROR_NULL_PDU:
  129.             break;
  130.         }        
  131.       }
  132.       catch(Exception e)
  133.       {
  134.         mTextView01.setText(e.toString());
  135.         e.getStackTrace();
  136.       }
  137.     }
  138. }

  139. public void mMakeTextToast(String str, boolean isLong)
  140. {
  141.     if(isLong==true)
  142.     {
  143.       Toast.makeText(EX06_14.this, str, Toast.LENGTH_LONG).show();
  144.     }
  145.     else
  146.     {
  147.       Toast.makeText(EX06_14.this, str, Toast.LENGTH_SHORT).show();
  148.     }
  149. }

  150. @Override
  151. protected void onResume()
  152. {
  153.     // TODO Auto-generated method stub
  154.     
  155.     /* 自定义IntentFilter为SENT_SMS_ACTIOIN Receiver */
  156.     IntentFilter mFilter01;
  157.     mFilter01 = new IntentFilter(SMS_SEND_ACTIOIN);
  158.     mReceiver01 = new mServiceReceiver();
  159.     registerReceiver(mReceiver01, mFilter01);
  160.     
  161.     /* 自定义IntentFilter为DELIVERED_SMS_ACTION Receiver */
  162.     mFilter01 = new IntentFilter(SMS_DELIVERED_ACTION);
  163.     mReceiver02 = new mServiceReceiver();
  164.     registerReceiver(mReceiver02, mFilter01);
  165.     
  166.     super.onResume();
  167. }

  168. @Override
  169. protected void onPause()
  170. {
  171.     // TODO Auto-generated method stub
  172.     
  173.     /* 取消注册自定义Receiver */
  174.     unregisterReceiver(mReceiver01);
  175.     unregisterReceiver(mReceiver02);
  176.     
  177.     super.onPause();
  178. }
  179. }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值