BroadcastReceiver的基本使用

 BroadcastReceiver: 广播的一种实现  

        个人理解: 当我们需要判断电池是否没电、收到短信、等一系列动作的时候,系统会发送相应的广播,

 通知系统中所有捕获该广播的软件,软件可以做相应的动作 

1 静态注册方式,就是在AndroidManifest.xml直接注册

代码: 1) 创建一个类 并实现BroadcastReceiver 

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
/**
 * 静态广播测试
 * @author root
 *
 */
public class BroadcastReceiverHelper2 extends BroadcastReceiver {
 
    @Override
    public void onReceive(Context context, Intent intent) {
    	
    	String action = intent.getAction();
    	 Log.e( action, action );
        if(action!=null && "com.android.broadcast.RECEIVER_ACTION".equals( action) ){
        	System.out.println( "11111111");
        	//则输出日志  
            Log.e("com.android.broadcast.RECEIVER_ACTION", "com.android.broadcast.RECEIVER_ACTION");  
        }
        if(action!=null && "com.android.broadcast.RECEIVER_ACTION2".equals( action) ){
        	System.out.println( "222222222");
        	//则输出日志  
            Log.e("com.android.broadcast.RECEIVER_ACTION2", "com.android.broadcast.RECEIVER_ACTION2");  
        }
    }
}

  2 注册 静态广播对象,包含两个action,任何一个action命中,这个广播都会执行 

  

        <!-- 静态注册广播 -->
        <receiver android:name="me.zhangls.tabsfragment.broadcastReceiver.BroadcastReceiverHelper2" >
            <intent-filter>
                <action android:name="com.android.broadcast.RECEIVER_ACTION" />
                <action android:name="com.android.broadcast.RECEIVER_ACTION2" />
            </intent-filter>
        </receiver>

 3 发送测试广播的按钮布局

	    <LinearLayout
	        android:layout_width="wrap_content"
	        android:layout_height="wrap_content"
	        android:orientation="horizontal" >
	
	        <Button
	            android:id="@+id/send_button1"
	            android:layout_width="wrap_content"
	            android:layout_height="wrap_content"
	            android:layout_marginTop="5dp"
	            android:onClick="sendReceive"
	            android:text="发送广播1" />
	        <Button
	            android:id="@+id/send_button2"
	            android:layout_width="wrap_content"
	            android:layout_height="wrap_content"
	            android:layout_marginTop="5dp"
	            android:onClick="sendReceive2"
	            android:text="发送广播2" />
	        
	    </LinearLayout>

 4 执行按钮的方法 

	/**
	 * 测试   ACTION = "com.android.broadcast.RECEIVER_ACTION";是否可以执行广播
	 * @param view
	 */
    public void  sendReceive(View  view ){
        //实例化Intent  
        Intent intent=new Intent();  
        //设置Intent的action属性  
        intent.setAction(ACTION);  
        //发出广播  
        sendBroadcast(intent);  
    }  

    /**
     * 测试 ACTION2 = "com.android.broadcast.RECEIVER_ACTION";是否可以执行广播 
     * @param view
     */
    public void  sendReceive2(View  view ){
        //实例化Intent  
        Intent intent=new Intent();  
        //设置Intent的action属性  
        intent.setAction(ACTION2);  
        //发出广播  
        sendBroadcast(intent);  
    }

 二、动态广播使用

        1 注册  2 发送   3 接触注册 

  1、创建广播类

    

/**
 * 动态广播测试
 * @author root
 */
public class BroadcastReceiverHelper extends BroadcastReceiver {
	//定义日志标签  
    private static final String TAG = "TestDTBroadcast"; 
    
    @Override
    public void onReceive(Context context, Intent intent) {
    	Log.e(TAG, "dynamic  broadcast 。。。。。。。。"+TAG);
    }
}

 2、广播类的注册、发送、解除注册的方法

  

    /**
     * 测试 ACTION2 = "com.android.broadcast.RECEIVER_ACTION";是否可以执行广播 
     * @param view
     */
    public void  sendReceive2(View  view ){
        //实例化Intent  
        Intent intent=new Intent();  
        //设置Intent的action属性  
        intent.setAction(ACTION2);  
        //发出广播  
        sendBroadcast(intent);  
    }

    /**
     * 动态注册的广播  ,用此方法发送 
     * @param view
     */
    public void  sendReceive1(View  view ){
    	  Intent intent=new Intent();  
          intent.setAction(ACTION3);  
          sendBroadcast(intent);
    } 
    
    /**
     * 动态注册广播 
     * @param view
     */
    public void  addListener(View  view ){
        receiver=new BroadcastReceiverHelper();  
        IntentFilter filter=new IntentFilter();  
        filter.addAction(ACTION3);  
        //动态注册BroadcastReceiver  
        registerReceiver(receiver, filter); 
    } 
    
    /**
     * 移除注册的动态广播
     * @param view
     */
    public void  remListener(View  view ){
        unregisterReceiver(receiver); 
  }

   

猜你喜欢

转载自username2.iteye.com/blog/2186702
今日推荐