Android之BroadcastReceiver

BroadcastReceiver也是Android的四大组件之一。

先说说我对BroadcastReceiver的一点理解吧:BroadcastReceiver主要是用来收消息的,包括系统的电量提示不足或者是收到短信时做的事情。

比较官方的理解:在Android中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制。而BroadcastReceiver是对发送出来的 Broadcast进行过滤接受并响应的一类组件。

写点例子吧。

关于接收系统的Broadcast的一个小例子。

例子是关于断网以后的一个提示。

1.自己写一个类,继承BroadcastReceiver

package zf.receiver;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.widget.Toast;

public class MyReceiver extends BroadcastReceiver {

	@Override
	public void onReceive(Context context, Intent intent) {
		// TODO Auto-generated method stub
		if(!isNetworkAvailable(context)){
			Toast.makeText(context, "亲,断网了!", Toast.LENGTH_SHORT).show();
		}
	}
	// 判断是否断网了
	public static boolean isNetworkAvailable(Context context) {  
        ConnectivityManager mgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);  
        NetworkInfo[] info = mgr.getAllNetworkInfo();  
        if (info != null) {  
            for (int i = 0; i < info.length; i++) {  
                if (info[i].getState() == NetworkInfo.State.CONNECTED) {  
                    return true;  
                }  
            }  
        }  
        return false;  
    } 

}

2.在AndroidManifext.xml的文件里面注册

<receiver
	    android:name="zf.receiver.MyReceiver" >
	    <intent-filter>
	        <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
	        <category android:name="android.intent.category.DEFAULT" />
	    </intent-filter>
	</receiver>

同时允许联网的操作

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

这样当运行时断网就可以了。

自己注册一个Broadcast然后BroadcastReceiver接收的一个小例子。

1.在Activity中

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        btn = (Button)findViewById(R.id.Button01);
        btn.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				Intent intent= new Intent();
				intent.setAction(MY_ACTION);
				//为Intent添加附加信息
				intent.putExtra("msg", "日,我草啊");
				//发出广播
				sendBroadcast(intent);
				
			}
		});
    }

2.在AndroidManifext.xml文件中注册

<receiver
              android:name="MyReceive" >
              <intent-filter>
                 <action android:name="com.chaowen.action.MY_ACTION" />
              </intent-filter>
           </receiver>

3.创建一个类继承BroadcastReceiver,实现其onReceiver

package com.chaowen;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
/**
 * 接收广播
 * @author chaowen
 *
 */
public class MyReceive extends BroadcastReceiver {

	@Override
	public void onReceive(Context context, Intent intent) {
	     //从Intent中获得信息
		String msg = intent.getStringExtra("msg");
        //使用Toast显示
		Toast.makeText(context, msg, Toast.LENGTH_LONG).show();
	}

}

这样就行了。

应该还有比较多的地方需要补充。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。