実行時にアンドロイドでインターネット接続をチェックする際に問題があります。インターネット接続を確認するためにいくつかの異なる方法を使用していますが、どちらが優れているかわかりません。それぞれに問題があるからです。
方法 1 Google に pingを実行し てインターネット接続を確認します。
Runtime runtime = Runtime.getRuntime();
try {
Process mIpAddressProcess = runtime.exec("/system/bin/ping -c 1 8.8.8.8");
int mExitValue = mIpAddressProcess.waitFor();
return mExitValue == 0;
} catch (InterruptedException | IOException ignore) {
ignore.printStackTrace();
}
方法 2 ConnectivityManager によるインターネット接続の確認:
public boolean checkNetwork() {
ConnectivityManager internetManager = (ConnectivityManager) activity.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = internetManager.getActiveNetworkInfo();
return (networkInfo != null && networkInfo.isConnected() && networkInfo.isAvailable() && networkInfo.isConnectedOrConnecting());
}
非同期タスク内で方法 1 を使用していますが、正しく動作しないことがあり、アプリの速度が低下します。方法 2 (ConnectivityManager) はインターネット接続をチェックせず、ネットワーク接続のみをチェックします!