• 好记性不如烂笔杆android学习笔记<八> Broadcase简单用法


    //Broadcase用法
    <!--使用SMS_ACTION时需要在 manifest.xml中 添加用户权限 -->

    1 <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>

    //发送广播的TestBCActivity,文件如下:

     1 public class TestBCActivity extends Activity {
     2     /** Called when the activity is first created. */
     3     private Button registerButton = null;
     4     private Button unregisterButton = null;
     5     private SMSReceiver smsReceiver = null;
     6     
     7     private static final String SMS_ACTION = "android.provider.Telephony.SMS_RECEIVED";
     8     @Override
     9     public void onCreate(Bundle savedInstanceState) {
    10         super.onCreate(savedInstanceState);
    11         setContentView(R.layout.main);
    12         registerButton = (Button)findViewById(R.id.registerButton);
    13         registerButton.setOnClickListener(new RegisterButtonListener());
    14         unregisterButton = (Button)findViewById(R.id.unregisterButton);
    15         unregisterButton.setOnClickListener(new UnregisterButtonListener());
    16     }
    17     //绑定监听器
    18     class RegisterButtonListener implements OnClickListener{
    19         @Override
    20         public void onClick(View v) {
    21             //生成一个BroadcastReceiver对象
    22             smsReceiver = new SMSReceiver();
    23             //生成一个IntentFilter对象
    24             IntentFilter filter = new IntentFilter();
    25             //为InterntFilter添加一个Action
    26             filter.addAction(SMS_ACTION);
    27             //将BroadcastReceiver对象注册到系统当中
    28             TestBCActivity.this.registerReceiver(smsReceiver, filter);
    29         }    
    30     }
    31     //解除绑定监听器
    32     class UnregisterButtonListener implements OnClickListener{
    33         @Override
    34         public void onClick(View v) {
    35             TestBCActivity.this.unregisterReceiver(smsReceiver);
    36         }
    37     }
    38 } 


    //接收广播的 SMSReceiver

     1 public class SMSReceiver extends BroadcastReceiver {
     2     public SMSReceiver() {
     3         super();
     4     }
     5     @Override
     6     public void onReceive(Context context, Intent intent) {
     7         System.out.println("receive message !");
     8         //解析收到的信息具体内容
     9         //接收Intent对象当中的数据,
    10         Bundle bundle = intent.getExtras();
    11         //在Bundle对象当中有一个属性,为pdus,这个属性的值是一个Object数组
    12         Object[] myOBJpdus = (Object[])bundle.get("pdus");
    13         //创建一个SmsMessage类型的数组
    14         SmsMessage[] messages = new SmsMessage[myOBJpdus.length];
    15         System.out.println(messages.length);
    16         for(int i = 0; i<myOBJpdus.length;i++)
    17         {
    18             //使用Object数组当中的对象创建SmsMessage对象
    19             messages[i]= SmsMessage.createFromPdu((byte[])myOBJpdus[i]);
    20             //调用SmsMessage对象的getDisplayMessageBody()方法,就可以得到消息的内容
    21             System.out.println(messages[i].getDisplayMessageBody());
    22         }
    23     }   
    24 }
  • 相关阅读:
    真-关闭win10安全中心(windows defender)
    HOOK IDT频繁蓝屏(Window 正确 HOOK IDT)
    windows 驱动开发 MDL 内核层 用户层共享内存
    C++将时间格式转换成秒数
    关于HOOK KiPageFault需要用到自旋锁研究
    提高VS2010/VS2012编译速度
    apache2.2服务无法启动 发生服务特定错误:1 的解决办法 (windows服务错误 日志查看方法)
    内核同步对象
    C++/MFC-线程优先级
    python xml转excel
  • 原文地址:https://www.cnblogs.com/zjqlogs/p/2779254.html
Copyright © 2020-2023  润新知