Android~BroadcastReceiver

一、广播注册
1.动态注册监听网络变化
当网络状态发生变化时,系统发出值为android.net.conn.CONNECTIVITY_CHANGE的广播,广播接收器想要监听什么广播,就在这里添加相应的action;然后调用registerReceiver()方法注册广播,即可实现监听网络变化的功能
1】修改MainActivity文件

public class MainActivity extends AppCompatActivity {
    
    

    private IntentFilter mIntentFilter;

    private NetworkChangeReceiver mNetworkChangeReceiver;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    
    
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mIntentFilter = new IntentFilter();
        mIntentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
        mNetworkChangeReceiver = new NetworkChangeReceiver();
        registerReceiver(mNetworkChangeReceiver, mIntentFilter);

    }

    @Override
    protected void onDestroy() {
    
    
        super.onDestroy();
        unregisterReceiver(mNetworkChangeReceiver);
    }

    class NetworkChangeReceiver 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()) {
    
    
                Toast.makeText(context, "network is available", Toast.LENGTH_SHORT).show();
            } else {
    
    
                Toast.makeText(context, "network is unAvailable", Toast.LENGTH_SHORT).show();
            }
        }
    }
}

定义一个内部类,继承 BroadcastReceiver,该类重写onReceive()方法,该方法中通过getSystemService()得到ConnectivityManager 实例,这是一个系统服务类,专门用于管理网络连接的;获取NetworkInfo 实例,调用其isAvailable()方法就可以判断出当前是否有网络
2】修改配置文件添加权限

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

在手机中安装该apk,打开流量,滑动任何页面,弹出 “network is available”;否则弹出"network is unAvailable"
2.静态注册开机广播
1】直接创建BroadcastReceiver ,new->other->BroadcastReceiver

public class MyReceiver extends BroadcastReceiver {
    
    

    @Override
    public void onReceive(Context context, Intent intent) {
    
    
        Toast.makeText(context, "Boot complete", Toast.LENGTH_SHORT).show();
    }
}

2】在配置文件中注册广播,并添加权限

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

    <receiver
            android:name=".broadcast.MyReceiver"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
        </receiver>
</application>

在手机中安装apk,并重启手机,就可接收到该广播

Supongo que te gusta

Origin blog.csdn.net/weixin_44495678/article/details/120877086
Recomendado
Clasificación