Android內置了很多廣播,例如手機開機,電量充滿,關機等各種廣播。
1.聲明廣播的過濾器
private IntentFilter intentFilter;
2.聲明廣播接受類並且重寫onReceive方法
private NetworkChangeReceiver networkChangeReceiver;//自定義接受類
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(getApplicationContext(),"網絡連接成功",Toast.LENGTH_LONG).show();;
}
else
{
Toast.makeText(getApplicationContext(),"網絡連接失敗",Toast.LENGTH_LONG).show();;
}
Toast.makeText(getApplicationContext(),"NETWORD",Toast.LENGTH_LONG).show();;
}
}
3.註冊監聽事件
intentFilter=new IntentFilter();
intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
networkChangeReceiver=new NetworkChangeReceiver();
registerReceiver(networkChangeReceiver,intentFilter);//註冊監聽事件
4.結束註冊監聽事件
unregisterReceiver(networkChangeReceiver);
全部代碼如下
package com.example.broadcasttext;
import androidx.appcompat.app.AppCompatActivity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.Network;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private IntentFilter intentFilter;
private NetworkChangeReceiver networkChangeReceiver;//自定義接受類
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
intentFilter=new IntentFilter();
intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
networkChangeReceiver=new NetworkChangeReceiver();
registerReceiver(networkChangeReceiver,intentFilter);//註冊監聽事件
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(networkChangeReceiver);
}
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(getApplicationContext(),"網絡連接成功",Toast.LENGTH_LONG).show();;
}
else
{
Toast.makeText(getApplicationContext(),"網絡連接失敗",Toast.LENGTH_LONG).show();;
}
Toast.makeText(getApplicationContext(),"NETWORD",Toast.LENGTH_LONG).show();;
}
}
}