1

我收到了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();
    }
4

2 回答 2

2

根据getActiveNetworkInfo()的文档:

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

所以你没有任何活动网络,检查它是否null是这样的:

if(networkInfo != null && networkInfo.isConnected())
于 2013-02-19T17:44:39.327 回答
2

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

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

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

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

确保已将其添加到您的清单中。

于 2013-02-19T17:47:37.493 回答