在一些 Android 设备上同时具有以太网和Wifi网络连接
我们可以使用 ConnectivityManager 类来判断设备的网络状态。以下是一个 Kotlin 示例,说明了如何检查网络连接状态以及连接类型(例如 Wi-Fi 或移动数据):
首先,确保在我们的 AndroidManifest.xml 文件中添加网络状态访问权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
fun isNetContected(context: Context): Boolean { val cm = context .getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager val info = cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE) if (cm != null && info != null && info.isConnected) { return true } return false } fun isWifiContected(context: Context): Boolean { val cm = context .getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager val info = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI) if (info != null && info.isConnected) { return true } return false }
在Android提供的"设置"菜单中有"以太网连接选项",从中可以配置设备的以太网连接。
为了检查以太网连接状态,我们读取系统文件" / sys / class / net / eth0",该文件可以返回正确的以太网状态
//检查以太网状态private boolean checkLan(){Process p=null;BufferedReader in=null;try { p = Runtime.getRuntime().exec("cat /sys/class/net/eth0/carrier"); in = new BufferedReader(new InputStreamReader(p.getInputStream())); String line = null; String value = ""; while ((line = in.readLine()) != null) {Log.i("tag", "carrier is "+line);if("0".equals(line)){return false;}if("1".equals(line)){return true;} } } catch (Exception e) { Log.e("tag", e.getMessage()); } finally{ if(in!=null){ try { in.close(); } catch (IOException e) { e.printStackTrace(); } } }return false;}
来源地址:https://blog.csdn.net/qq_25749749/article/details/131472417