• Android之BroadcastReceiver(转载)


    转载自-----http://blog.csdn.net/wustrive_2008/article/details/6580956

    一提起广播,我们首先想到的是收音机,当我们想要收听某个广播台时只需要将收音机的频率调至广播台所在的频率即可!而Android中的广播其实和收音机非常相似,不过它没有所谓的频率,它是由系统广播一个事件,然后由其他满足某一条件的程序接收并处理这个事件!!

      要在Android中实现广播,首先我们要在Manifest.xml文件中配置一个<receiver/>标签,这个标签必须有一个android:name属性,值为继承自BroadcastReceiver类的接收器类!这个标签还有一个子标签为<intent-filter/>,这个标签很重要,是指定接收器需要接收哪种广播。另外,还有配置一个用户权限:<uses-permission/>,具体的值可以参考官方API文档。

    另外一个比较重要的步骤是必须有一个类继承自BroadcastReceiver类,并复写onReceiver方法,在该方法中处理接收到广播后需要处理的事情!

    下面来看一个具体的例子,有助于更好的理解广播机制是怎么一回事。

    UI部分就不说了,Activity上就加了一个按钮,点击后发送广播。接收器接收到广播后在终端输出一句话。

    首先看AndroidManifest.xml文件:

     

     

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

     

    下面是Activity:

     

    1.   
    1. package com.gufengxiachen.broadcast;  
    2. import android.app.Activity;  
    3. import android.content.Intent;  
    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 BroadCast extends Activity {  
    11.     /** Called when the activity is first created. */  
    12.       
    13.     private Button sendBroadCast =null;   
    14.       
    15.     @Override  
    16.     public void onCreate(Bundle savedInstanceState) {  
    17.         super.onCreate(savedInstanceState);  
    18.         setContentView(R.layout.main);  
    19.          
    20.         sendBroadCast = (Button)findViewById(R.id.sendBroadCast);  
    21.          
    22.         sendBroadCast.setOnClickListener(new SendBroadCast());  
    23.     }  
    24.     class SendBroadCast implements OnClickListener{  
    25.         @Override  
    26.         public void onClick(View v) {  
    27.             // TODO Auto-generated method stub  
    28.               
    29.             Intent intent = new Intent(Intent.ACTION_EDIT);  
    30.             BroadCast.this.sendBroadcast(intent);  
    31.         }  
    32.     }  
    33.         
    34. }  

     

    下面是接收器类:

     

    1. package com.gufengxiachen.broadcast;  
    2.   
    3. import android.content.BroadcastReceiver;  
    4. import android.content.Context;  
    5. import android.content.Intent;  
    6.   
    7. public class MyBroadCastReceiver extends BroadcastReceiver{  
    8.     public MyBroadCastReceiver(){  
    9.           
    10.     }  
    11.     @Override  
    12.     public void onReceive(Context context, Intent intent) {  
    13.           
    14.         System.out.println("message receiver");  
    15.     }  
    16.   
    17. }  
  • 相关阅读:
    【bzoj3158】千钧一发 最小割
    【bzoj2186】[Sdoi2008]沙拉公主的困惑 欧拉函数
    【bzoj1221】[HNOI2001] 软件开发 费用流
    【bzoj4176】Lucas的数论 莫比乌斯反演+杜教筛
    【bzoj4916】神犇和蒟蒻 杜教筛
    【bzoj3944/bzoj4805】Sum/欧拉函数求和 杜教筛
    【bzoj4869】[Shoi2017]相逢是问候 扩展欧拉定理+并查集+树状数组
    【bzoj3926】[Zjoi2015]诸神眷顾的幻想乡 广义后缀自动机
    【bzoj2555】SubString 后缀自动机+LCT
    【bzoj3277/bzoj3473】串/字符串 广义后缀自动机
  • 原文地址:https://www.cnblogs.com/zqq965774513/p/3485354.html
Copyright © 2020-2023  润新知