実行時にアンドロイドでインターネット接続をチェックする際に問題があります。 私はいくつかの異なる方法を使ってインターネット接続をチェックしていますが、どれが良いか分かりません。それぞれにいくつかの問題があるからです。アンドロイドでインターネット接続を確認する(ネットワーク接続ではない)
方法1 グーグルを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)はインターネット接続をチェックしません。ネットワーク接続のみをチェックします。
あなたは 'Aynch task'の代わりに' handler'を使うことができます...それは別のスレッドで動くのでUIは乱されません...非常に遅い場合でもハンドラを停止することができます – rafsanahmad007