日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android通过使用系统广播监听网络状态的改变

發(fā)布時間:2023/12/15 Android 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android通过使用系统广播监听网络状态的改变 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Android通過使用廣播監(jiān)聽網(wǎng)絡(luò)狀態(tài)的改變

得先添加權(quán)限

//查看網(wǎng)絡(luò)狀態(tài)<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />//網(wǎng)絡(luò)狀態(tài)改變的權(quán)限<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />

先看代碼:

我們可以通過系統(tǒng)廣播:android.net.conn.CONNECTIVITY_CHANGE

來實(shí)現(xiàn)手機(jī)網(wǎng)絡(luò)的變化

package cn.xiayiye.networkchange;import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.os.Bundle; import android.provider.Settings; import android.telephony.TelephonyManager; import android.text.TextUtils; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast;import java.lang.reflect.Method;public class MainActivity extends Activity implements View.OnClickListener {private NetworkChange networkChange;boolean isNetWork = true;//默認(rèn)有網(wǎng)絡(luò)private TextView change;private Button set_network;private EditText message;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);change = (TextView) findViewById(R.id.change);Button send_broadcast = (Button) findViewById(R.id.send_broadcast);set_network = (Button) findViewById(R.id.set_network);message = (EditText) findViewById(R.id.message);change.setFocusable(true);change.setClickable(true);listenerNetWorkChange();send_broadcast.setOnClickListener(this);change.setOnClickListener(this);set_network.setOnClickListener(MainActivity.this);}private void listenerNetWorkChange() { /* IntentFilter intentFilter = new IntentFilter();intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");//一樣的效果intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);//一樣的效果和下面*/IntentFilter intentFilter = new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE");//網(wǎng)絡(luò)狀態(tài)改變的廣播networkChange = new NetworkChange();registerReceiver(networkChange, intentFilter);}class NetworkChange extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();//獲取網(wǎng)絡(luò)狀態(tài)if (activeNetworkInfo != null && activeNetworkInfo.isAvailable()) {Toast.makeText(MainActivity.this, "已連網(wǎng)!", Toast.LENGTH_LONG).show();change.setText("網(wǎng)絡(luò)已連接!");set_network.setVisibility(View.GONE);} else {Toast.makeText(MainActivity.this, "已斷網(wǎng)!", Toast.LENGTH_LONG).show();set_network.setVisibility(View.VISIBLE);change.setText("網(wǎng)絡(luò)已斷開!");} // isNetWork = !isNetWork;}} }

Android10 API29以后最新方法

val broadcastReceiver = object : BroadcastReceiver() {@SuppressLint("MissingPermission")override fun onReceive(context: Context?, intent: Intent?) {val connectivityManager =context!!.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManagerval networkCapabilities =connectivityManager.getNetworkCapabilities(connectivityManager.activeNetwork)when {networkCapabilities == null -> {Toast.makeText(context, "已斷網(wǎng)!", Toast.LENGTH_LONG).show()}networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) -> {Toast.makeText(context, "已連網(wǎng)當(dāng)前使用移動網(wǎng)絡(luò)!", Toast.LENGTH_LONG).show()}networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) -> {Toast.makeText(context, "已連網(wǎng)當(dāng)前使用WIFI網(wǎng)絡(luò)!", Toast.LENGTH_LONG).show()}}}} val broadcastReceiver = object : BroadcastReceiver() {@SuppressLint("MissingPermission")override fun onReceive(context: Context?, intent: Intent?) {val connectivityManager1 = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManagerval networkCapabilities = connectivityManager.getNetworkCapabilities(connectivityManager.activeNetwork)if (networkCapabilities == null) {System.out.println("請打開網(wǎng)絡(luò)");} else if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {System.out.println("當(dāng)前使用移動網(wǎng)絡(luò)");} else if (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) {System.out.println("當(dāng)前使用WIFI網(wǎng)絡(luò)");}}

上面兩個方法是一樣的都是kotlin的寫法哈,非常感謝原博主:Android29以后獲取網(wǎng)絡(luò)狀態(tài)的方法https://blog.csdn.net/weixin_40920751/article/details/114374799https://blog.csdn.net/weixin_40920751/article/details/114374799

提供源碼下載:

點(diǎn)擊下載源碼

總結(jié)

以上是生活随笔為你收集整理的Android通过使用系统广播监听网络状态的改变的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。