Android的WIFI和以太网连接状态

2023-07-10 16:41:33 浏览数 (2)

在一些 Android 设备上同时具有以太网和Wifi网络连接

我们可以使用 ConnectivityManager 类来判断设备的网络状态。以下是一个 Kotlin 示例,说明了如何检查网络连接状态以及连接类型(例如 Wi-Fi 或移动数据):

代码语言:javascript复制
首先,确保在我们的 AndroidManifest.xml 文件中添加网络状态访问权限:
代码语言:javascript复制
   <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
代码语言:javascript复制
/**
     * 判断移动网络是否连接成功
     *
     * @param context
     * @return
     */
    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
    }

    /**
     * 判断WIFI是否连接成功
     *
     * @param context
     * @return
     */
    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",该文件可以返回正确的以太网状态

代码语言:javascript复制
 //检查以太网状态
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;
}

0 人点赞