我想检查网络状态,但它给我nullPointerException为什么?

时间:2013-02-19 17:42:34

标签: java android

我收到的NullPointerException代码如下。有谁知道可能导致这种情况的原因?

public void clickMe(View v) //the view is button
    {   

        ConnectivityManager conMgr = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo = conMgr.getActiveNetworkInfo();

        String b;

        if(networkInfo.isConnected())
            b="on";
        else
            b="off";

        Toast.makeText(MainActivity.this, b , Toast.LENGTH_SHORT).show();
    }

2 个答案:

答案 0 :(得分:2)

根据getActiveNetworkInfo()的文件:

  

返回有关当前活动数据网络的详细信息。连接时,此网络是传出连接的默认路由。在启动网络流量之前,您应该始终检查isConnected()。当没有网络可用时,这可能会返回null

因此,您没有任何有效网络,请检查null是否如此:

if(networkInfo != null && networkInfo.isConnected())

答案 1 :(得分:2)

查看https://developer.android.com/reference/android/net/ConnectivityManager.html#getActiveNetworkInfo()

  

此方法要求调用者持有权限ACCESS_NETWORK_STATE。

如果还没有,您需要将此权限添加到您的应用中。如果不这样做,您可能会得不到任何结果,并且意外地得到一个空结果。

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

确保已在清单中添加。