zoukankan      html  css  js  c++  java
  • ANDROID_MARS学习笔记_S01原始版_013_广播机制二

    一、代码
    1.xml
    (1)main.xml

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     3     android:orientation="vertical"
     4     android:layout_width="fill_parent"
     5     android:layout_height="fill_parent"
     6     >
     7 <Button
     8     android:id="@+id/register"
     9     android:layout_width="fill_parent" 
    10     android:layout_height="wrap_content" 
    11     android:text="绑定监听器"
    12     />
    13 <Button
    14     android:id="@+id/unregister"
    15     android:layout_width="fill_parent" 
    16     android:layout_height="wrap_content" 
    17     android:text="解除监听器绑定"
    18     />
    19     
    20 </LinearLayout>

    (2)AndroidManifest.xml.xml

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     3     package="com.broadcast2"
     4     android:versionCode="1"
     5     android:versionName="1.0" >
     6 
     7     <uses-sdk
     8         android:minSdkVersion="8"
     9         android:targetSdkVersion="21" />
    10 
    11     <application
    12         android:allowBackup="true"
    13         android:icon="@drawable/ic_launcher"
    14         android:label="@string/app_name"
    15         android:theme="@style/AppTheme" >
    16         <activity
    17             android:name=".TestBC2Activity"
    18             android:label="@string/app_name" >
    19             <intent-filter>
    20                 <action android:name="android.intent.action.MAIN" />
    21 
    22                 <category android:name="android.intent.category.LAUNCHER" />
    23             </intent-filter>
    24         </activity>
    25     </application>
    26     <uses-permission android:name="android.permission.RECEIVE_SMS"/>
    27 </manifest>

    2.java
    (1)TestBC2Activity.java

     1 package com.broadcast2;
     2 
     3 import android.app.Activity;
     4 import android.content.IntentFilter;
     5 import android.os.Bundle;
     6 import android.view.View;
     7 import android.view.View.OnClickListener;
     8 import android.widget.Button;
     9 
    10 public class TestBC2Activity extends Activity {
    11     /** Called when the activity is first created. */
    12     private Button registerButton = null;
    13     private Button unregisterButton = null;
    14     private SMSReceiver smsReceiver = null;
    15     
    16     private static final String SMS_ACTION = "android.provider.Telephony.SMS_RECEIVED";
    17     @Override
    18     public void onCreate(Bundle savedInstanceState) {
    19         super.onCreate(savedInstanceState);
    20         setContentView(R.layout.main);
    21         registerButton = (Button)findViewById(R.id.register);
    22         registerButton.setOnClickListener(new RegisterReceiverListener());
    23         unregisterButton = (Button)findViewById(R.id.unregister);
    24         unregisterButton.setOnClickListener(new UnRegisterReceiverListener());
    25     }
    26     
    27     class RegisterReceiverListener implements OnClickListener{
    28 
    29         @Override
    30         public void onClick(View v) {
    31             //生成一个BroiadcastReceiver对象
    32             smsReceiver = new SMSReceiver();
    33             //生成一个IntentFilter对象
    34             IntentFilter filter = new IntentFilter();
    35             //为IntentFilter添加一个Action,决定了reciver能接收什么类型的请求
    36             filter.addAction(SMS_ACTION);
    37             //将BroadcastReceiver对象注册到系统当中
    38             TestBC2Activity.this.registerReceiver(smsReceiver, filter);
    39         }
    40         
    41     }
    42     
    43     class UnRegisterReceiverListener implements OnClickListener{
    44 
    45         @Override
    46         public void onClick(View v) {
    47             //解除BroadcastReceiver对象的注册
    48             TestBC2Activity.this.unregisterReceiver(smsReceiver);
    49         }
    50         
    51     }
    52 }

    (2)SMSReceiver.java

     1 package com.broadcast2;
     2 
     3 import android.content.BroadcastReceiver;
     4 import android.content.Context;
     5 import android.content.Intent;
     6 import android.os.Bundle;
     7 import android.telephony.SmsMessage;
     8 
     9 public class SMSReceiver extends BroadcastReceiver{
    10 
    11     @Override
    12     public void onReceive(Context context, Intent intent) {
    13         // TODO Auto-generated method stub
    14         System.out.println("receive message");
    15         
    16         //此例子是获取短信内容
    17         //接受Intent对象当中的数据
    18         Bundle bundle = intent.getExtras();
    19         //在Bundle对象当中有一个属性名为pdus,这个属性的值是一个Object数组
    20         Object[] myOBJpdus = (Object[]) bundle.get("pdus"); 
    21         //创建一个SmsMessage类型的数组
    22         SmsMessage[] messages = new SmsMessage[myOBJpdus.length];  
    23         System.out.println(messages.length);
    24         for (int i = 0; i<myOBJpdus.length; i++) 
    25         {  
    26           //使用Object数组当中的对象创建SmsMessage对象
    27           messages[i] = SmsMessage.createFromPdu((byte[]) myOBJpdus[i]);  
    28           //调用SmsMessage对象的getDisppalyMessageBody()方法,就可以得到消息的内容
    29           System.out.println(messages[i].getDisplayMessageBody());
    30         }
    31         try {
    32             Thread.sleep(30 * 1000);
    33             System.out.println("-------------------------------");
    34         } catch (InterruptedException e) {
    35             // TODO Auto-generated catch block
    36             e.printStackTrace();
    37         }
    38     }
    39 
    40 }
  • 相关阅读:
    给“file”类型的input框赋值的问题
    bootstrap-paginator分页插件的两种使用方式
    开发中使用UEditor编辑器的注意事项
    java图形界面设计
    ArrayList 、LinkList区别以及速度对比
    java中的ArrayList 、List、LinkedList、Collection关系详解
    Josephus问题的不同实现方法与总结
    浅谈JAVA中字符串常量的储存位置
    linux安装vmware出现Gtk-Message: Failed to load module pk-gtk-module canberra-gtk-module的解决方法
    ubuntu安装搜狗输入法的相关问题
  • 原文地址:https://www.cnblogs.com/shamgod/p/5191501.html
Copyright © 2011-2022 走看看