2019-08-18(android广播的接收器实现)
16lz
2021-01-23
Android 的广播实现(Java);
Android的广播分为两类:
第一类:动态广播需要实现BroadcastReceiver接口;进行注册。
实例:
class guangbos extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { ConnectivityManager connectivityManager=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo=connectivityManager.getActiveNetworkInfo(); if (networkInfo!=null&&networkInfo.isAvailable()){ }else{ Toast.makeText(context,"无网络",Toast.LENGTH_SHORT).show(); } } }
上面代码就是继承了BroadcastReceiver,需要在这里面添加IntentFilter添加拦截器,系统发出了什么广播,可以拦截到。全部代码如下:
public class MainActivity extends AppCompatActivity { private IntentFilter intentFilter; public guangbos mguangbos; private static final String TAG="TAG"; private boolean mCharge; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);// intentFilter=new IntentFilter();// intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");//connectivity_change intentFilter=new IntentFilter(Intent.ACTION_BATTERY_CHANGED); mguangbos=new guangbos(); registerReceiver(mguangbos,intentFilter); } @Override protected void onDestroy() { super.onDestroy(); unregisterReceiver(mguangbos); } class guangbos extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { ConnectivityManager connectivityManager=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo=connectivityManager.getActiveNetworkInfo(); if (networkInfo!=null&&networkInfo.isAvailable()){ }else{ Toast.makeText(context,"无网络",Toast.LENGTH_SHORT).show(); } } }}
第二种是静态注册,也就是在Androidmanfest.xml中直接注册,
需要的材料:
1.一个实现了BroadcastReceiver的类
2.在Androidmanfest添加如下代码
更多相关文章
- android代码编写布局和控件
- Android 隔一段时间重复执行某代码
- [CSDN]Android系统进程Zygote启动过程的源代码分析
- Android有用代码片段(二)
- Android 代码当中动态改变某个控件的位置
- android 获取本机号码及应加的权限 代码
- Android自定义Dialog网络加载等待弹窗
- android判断当前网络状态及跳转到设置界面