【发布时间】:2014-06-18 12:07:55
【问题描述】:
我的 Android 项目中有一个实用程序类。但是,每当我调用它的一个辅助方法时,应用程序就会崩溃。例如,当我这样称呼时:
public boolean IsNetworkAvailable(Context context){
ConnectivityManager connectivity = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity == null) {
Toast.makeText(context, "None Available", Toast.LENGTH_SHORT).show();
} else {
NetworkInfo[] info = connectivity.getAllNetworkInfo();
for(NetworkInfo inf : info){
if(inf.getTypeName().contains("WIFI"))
if(inf.isConnected())
return true;
}
}
return false;
}
...来自 MainActivity 像这样:
SteinbeckCityUtils SteinbeckCityUtils = new SteinbeckCityUtils();
boolean networkAvailable = SteinbeckCityUtils.IsNetworkAvailable(MainActivity.this);
if (networkAvailable) {
Toast tostito = Toast.makeText(MainActivity.this, "Network is available", Toast.LENGTH_SHORT);
tostito.setGravity(Gravity.CENTER, 0, 0);
tostito.show();
}
即使我将 IsNetworkAvailable() 的中间更改为此它也会失败:
if (null == connectivity) {
//Toast.makeText(context, "None Available", Toast.LENGTH_SHORT).show();
Log.i("czechNetwork", "no signs of life");
} else {
Log.i("czechNetwork", "some sign of life");
以下是该类的更多代码以获取更多上下文:
package hhs.app;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.WifiManager;
import android.widget.Toast;
public class HHSUtils {
private Context _context;
public void ConnectionDetector(Context context) {
this._context = context;
}
// Found this here: http://www.androidsnippets.com/enable-and-disable-wifi
public void enableWiFi(boolean enable) {
WifiManager wifi = (WifiManager) _context.getSystemService(Context.WIFI_SERVICE);
wifi.setWifiEnabled(enable);
}
// Found this here: http://www.androidsnippets.com/checking-for-wifi-access
public boolean IsNetworkAvailable(Context context){
ConnectivityManager connectivity = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity == null) {
Toast.makeText(context, "None Available", Toast.LENGTH_SHORT).show();
} else {
NetworkInfo[] info = connectivity.getAllNetworkInfo();
for(NetworkInfo inf : info){
if(inf.getTypeName().contains("WIFI"))
if(inf.isConnected())
return true;
}
}
return false;
}
}
我也尝试直接调用该方法而不实例化该类(使用 HHS.IsNetworkAvailable()),但是这样做,甚至无法识别该方法...
【问题讨论】:
-
清单中可能缺少权限,但如果没有 logcat 输出则无法确定。
-
发布堆栈跟踪。