首页 > 代码库 > Android之BroadcastReceiver
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(); }}
这样就行了。
应该还有比较多的地方需要补充。
Android之BroadcastReceiver
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。