-1

我有一个在 android 手机上运行良好的应用程序,但是当我尝试在没有手机的 Nexus7 上运行它时,代码失败并在指示的位置强制停止。解决办法是什么?如何检查该功能是否存在,我应该怎么做才能解决这个问题?

  ConnectivityManager connMgr = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
  NetworkInfo networkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 
  boolean isWifiConn = networkInfo.isConnected();
  printi("oopsA",6);
  networkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
  printi("oopsB",6);
  boolean isMobileConn = networkInfo.isConnected();  //<<<<FAILS HERE ON NEXUS 7
4

4 回答 4

4

您的 networkInfo 可能为空。你必须先测试一下。这意味着您无法访问这种类型的连接管理器。

尝试这个:

networkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

boolean isMobileConn = false;
if(networkInfo != null)
    isMobileConn = networkInfo.isConnected();  
于 2012-07-23T12:00:53.270 回答
2

我在使用 Motorola Xoom 时遇到了同样的问题,因为它不支持 ConnectivityManager.TYPE_MOBILE。

以下代码对我来说工作正常:

ConnectivityManager connMngr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
try {
    return connMngr.getActiveNetworkInfo().isConnected();
}
catch (NullPointerException npe) {
    return false;
}
于 2012-11-19T14:04:29.507 回答
0

检查 AndroidManifest.xml 中的权限

 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
 <user-permission android:name="android.permission.ACCESS_WIFI_STATE" />
于 2012-07-23T11:58:26.330 回答
0

更正的代码如下:

IsAPhone=0;
try{
    boolean isMobileConn = false;
    if(networkInfo != null){ isMobileConn = networkInfo.isConnected();IsAPhone=1;}  
   }
catch (Exception e) {}
于 2012-07-23T12:21:21.030 回答