【发布时间】:2016-04-20 09:33:16
【问题描述】:
我需要检测互联网连接是否可用并且在 android 中工作正常。在我开始任何 WebView 活动之前,我需要调用此条件检查。
到目前为止,我已经设法实现了这个答案中的 isAvailable() 功能: Class which check for connectivity
但是,如果 wifi 开启但未连接以太网插头,上述方法会失败。 有人说使用 ping 是个好主意。但我无法成功实现此功能。
- 如何在link 中给出的代码中实现 ping 功能
- 我的 android 应用程序使用 Retrofit API 来发送和接收 PHP 内容。 Retrofit 能否帮助检查互联网连接?
- 您能否建议任何其他简单且易于实施的方法来检查实时互联网连接?
我使用的代码来自this link :-
-
类名:AppStatus
import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.util.Log; public class AppStatus { private static AppStatus instance = new AppStatus(); static Context context; ConnectivityManager connectivityManager; NetworkInfo wifiInfo, mobileInfo; boolean connected = false; public static AppStatus getInstance(Context ctx) { context = ctx.getApplicationContext(); return instance; } public boolean isOnline() { try { connectivityManager = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); connected = networkInfo != null && networkInfo.isAvailable() && networkInfo.isConnected(); return connected; } catch (Exception e) { System.out.println("CheckConnectivity Exception: " + e.getMessage()); Log.v("connectivity", e.toString()); } return connected;}
-
此代码有助于检查互联网连接,但在前面提到的情况下失败:-
if (AppStatus.getInstance(this).isOnline()) { Toast.makeText(this,"You are online!!!!",8000).show(); } else { Toast.makeText(this,"Internet Connection is required !",8000).show(); Log.v("Home", "############################You are not online!!!!"); finish(); }
【问题讨论】:
-
它似乎有我需要的 PING 码。我会尝试将它与我的代码集成并查看。
-
感谢@camelCaseCoder。我集成了我在您提供的链接中找到的代码。我也在我的答案中添加了它。