zoukankan      html  css  js  c++  java
  • Android开发 广播监听系统的各种状态

    前言

      此篇博客用于记录系统的各种广播状态

    广播监听开机

      注册静态广播

            <receiver android:name=".receiver.MyReceiver">
                <intent-filter>
                    <action android:name="android.intent.action.BOOT_COMPLETED"/>
                </intent-filter>
            </receiver>

      添加权限

       <!-- 接收开机广播的权限,开机是很危险的行为,所以需要此权限 -->
        <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

      接收广播

    public class MyReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")){
                L.e("设备开机了");
            }
        }
    }

    广播监听关机

      注册静态广播

            <receiver android:name=".receiver.ShutdownReceiver">
                <intent-filter>
                    <action android:name="android.intent.action.ACTION_SHUTDOWN"/>
                </intent-filter>
            </receiver>

      接收广播

    public class ShutdownReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction().equals("android.intent.action.ACTION_SHUTDOWN")){
                L.e("设备关机了...");
            }
        }
    }

    网络变化广播

    注册

            IntentFilter networkChangeFilter = new IntentFilter();
            networkChangeFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
            NetWorkChangeReceiver netWorkChangeReceiver = new NetWorkChangeReceiver();//网络变化广播
            registerReceiver(netWorkChangeReceiver, networkChangeFilter);

    接收

    public class NetWorkChangeReceiver extends BroadcastReceiver {
    
        @Override
        public void onReceive(Context context, Intent intent) {
    
            if (intent == null) {
                return;
            }
            String action = intent.getAction();
            if (TextUtils.isEmpty(action)) {
                return;
            }
    
    
            if (!TextUtils.equals(action, ConnectivityManager.CONNECTIVITY_ACTION)) {
                return;
            }
            // 监听网络连接,包括wifi和移动数据的打开和关闭,以及连接上可用的连接都会接到监听
    
            Log.i("hcz", " CONNECTIVITY_ACTION ");
            //获取联网状态的NetworkInfo对象
            NetworkInfo info = intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
            if (info == null) {
                return;
            }
            if (NetworkInfo.State.CONNECTED != info.getState() || !info.isAvailable()) {
                EventBus.getDefault().post(new NetChangerEvent(false));
                return;
            }
    
            int type = info.getType();
            //如果当前的网络连接成功并且网络连接可用
            if (type == ConnectivityManager.TYPE_WIFI || type == ConnectivityManager.TYPE_MOBILE) {
                Log.i("hcz", getConnectionType(info.getType()) + "连上");
                EventBus.getDefault().post(new NetChangerEvent(true));
            }
        }
    
        /**
         * 获取连接类型
         *
         * @param type type
         * @return String
         */
        private String getConnectionType(int type) {
            String connType = "";
            if (type == ConnectivityManager.TYPE_MOBILE) {
                connType = "3G网络数据";
            } else if (type == ConnectivityManager.TYPE_WIFI) {
                connType = "WIFI网络";
            }
            return connType;
        }
    
    }

    时间变化广播

    注册

            IntentFilter intentFilter = new IntentFilter();
            intentFilter.addAction(Intent.ACTION_TIME_TICK);                            //时间变化广播
            registerReceiver(new TimeChangeReceiver(), intentFilter);

    接收

    public class TimeChangeReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            if (action.equals(Intent.ACTION_TIME_TICK)) {
                LogUtils.d("时间变化");
            }
        }
    }

    end

  • 相关阅读:
    XPATH基本语法
    为博客园添加目录、导航的方法总结
    性能测试学习之路 (三)jmeter常见性能指标(相关术语、聚合报告 && 服务器性能监控配置 && 图形结果 && 概要报告)
    性能测试学习之路 (二)jmeter详解(jmeter执行顺序 && 作用域 && 断言 && 事务 &&集合点 )
    性能测试学习之路 (一)认识jmeter(性能测试流程 && 性能测试通过标准 &&jmeter体系结构)
    Mysql基础知识
    索引优化之Explain 及慢查询日志
    shell 编程 && bash 简介(shell 变量、shell操作环境、数据流重导向、管线命令、shell script)
    Mysql 逻辑架构图及日志系统
    react ,ant Design UI中table组件合并单元格并展开详情的问题
  • 原文地址:https://www.cnblogs.com/guanxinjing/p/12111619.html
Copyright © 2011-2022 走看看