Android 判断手机是否联网时异常闪退

本文介绍了在Android开发中遇到的一个问题:当尝试判断手机是否联网时,如果手机断网,应用会出现异常并导致闪退。问题根源在于在断网状态下,`getActiveNetworkInfo()`返回的`NetworkInfo`实例为null,调用`isAvailable()`方法时引发空指针异常。解决方案是对`NetworkInfo`实例进行非空判断,确保在调用`isAvailable()`之前不会出现空指针情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写了个函数来判断手机是否联网,但是发现,在手机联网状态下一切正常,而当手机断网时则会发现闪退。

首先第一反应是会不会是没在AndroidManifest.xml文件中设置联网权限:

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

发现有这段语句,那么是在哪里出错呢,我最初的代码是这样的:

    /**判断网络是否可用
     * @param context
     * @return
     */
    public static boolean isNetworkAvailable(Context context) {   
        ConnectivityManager cm = (ConnectivityManager) context   
                .getSystemService(Context.CONNECTIVITY_SERVICE);  
        return cm.getActiveNetworkInfo().isAvailable();
    }


经过调试,发现当我断网状态下,我在cm.getActiveNetworkInfo()中返回的NetworkInfo实例是个空指针,此时调用isAvailable()发生错误。所以要对NetworkInfo实例进行判断。


    public static boolean isNetworkAvailable(Context context) {   
    	try {
			ConnectivityManager manger = (ConnectivityManager) context
	                .getSystemService(Context.CONNECTIVITY_SERVICE); 
	        NetworkInfo info = manger.getActiveNetworkInfo();
	        //return (info!=null && info.isConnected());//
	        if(info != null){
	        	return info.isConnected();
	        }else{
	        	return false;
	        }
		} catch (Exception e) {
	        return false;
		}
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值