我想开发一个项目,在这个项目中我将一直使用互联网,当互联网连接消失时,用户会收到警告并暂停屏幕。当互联网可用时,用户将能够从应用程序的先前状态继续。我是 android 编程新手。我正在考虑使用 THREADS ,但我不确定。我应该使用线程还是您有什么建议?我会感谢你的意见。
问问题
1320 次
3 回答
3
例如,您需要检查是否Connection
在某些自定义间隔中可用。所以你可以使用这段代码:
private boolean isConnectionAvailable() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnectedOrConnecting()) {
return true;
}
return false;
}
检查连接是否可用。如果它会返回false
,那么你可以表现出意思AlertDialog
或其他东西。
然后你需要添加权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
并且为了在某些间隔内检查它,您可以将其用于您的目标AlarmManager
,这意味着Threads
,TimerTask
于 2012-07-08T13:43:50.210 回答
1
更好的解决方案是为ConnectivityManager.CONNECTIVITY_ACTION
. onReceive()
每次连接发生任何变化时都会调用。有一个ConnectivityManager.EXTRA_NO_CONNECTIVITY
字段告诉您该连接目前不可用。您可以检查其值并按照您的逻辑要求继续。希望这可以帮助。
于 2012-07-08T13:52:18.330 回答
0
这是您通常检查 Internet 连接的方式Android
private boolean checkInternetConnection()
{
ConnectivityManager manager = (ConnectivityManager) getSystemService (Context.CONNECTIVITY_SERVICE);
boolean is3g = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnectedOrConnecting();
boolean isWifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting();
boolean gprs=manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnectedOrConnecting();
if (is3g || isWifi)
{
Log.v(TAG,"3G/WIFI connection is present");
return true;
}
else if(gprs)
{
Log.v(TAG,"gprs connection is present");
return true;
}
return false;
}
您需要在您的AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
我认为你不需要Threads
为此使用。
有关更多信息,请参阅适用于 Android 的 ConnectivityManager。
于 2012-07-08T13:45:34.610 回答