3

私はこれをプロセスの少し遅い時間にやっています。インターネットへの接続が必要な画面/アクティビティがかなりありますが、Wi-Fiまたはネットワークが機能しているかどうかは関係ありません。接続を正常に検出できますが、すべてのアクティビティでこのチェックを実行する必要がありますか、またはアプリケーションでこれを行うグローバルな方法はありますか?

たくさんのコードを追加する前に聞いてみようと思いました。

4

4 に答える 4

8

Activityのようなものでサブクラス化できInternetActivity、その中でonResume接続を確認できます。次に、アプリでインターネットを必要とするすべてのアクティビティは のサブクラスである必要があり、呼び出すか、まったくオーバーライドしないInternetActivityことで、自動的にチェックを行います。super.onResume()onResume

于 2013-03-30T02:10:09.657 に答える
4
public class CheckNetwork {


private static final String TAG = CheckNetwork.class.getSimpleName();



public static boolean isInternetAvailable(Context context)
{
    NetworkInfo info = (NetworkInfo) ((ConnectivityManager)
    context.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();

    if (info == null)
    {
         Log.d(TAG,"no internet connection");
         return false;
    }
    else
    {
        if(info.isConnected())
        {
            Log.d(TAG," internet connection available...");
            return true;
        }
        else
        {
            Log.d(TAG," internet connection");
            return true;
        }

    }
}
 }

ネットワークを確認するには

あなたの活動で

  if(CheckNetwork.isInternetAvailable(MainActivtiy.this))  //if connection available
  {

  }

インターネットパスを確認するたびに、アクティビティコンテキストは、利用可能な場合は true を返し、それ以外の場合は false を返します。

Android で利用可能なインターネット接続があるかどうかを検出します

Androidでインターネットアクセスを確認する方法は? InetAddress はタイムアウトしません

于 2013-03-30T04:02:39.147 に答える
0

考えられるもう 1 つの興味深い解決策があります。BroadcastReceiver を使用することです。だから今、あなたは何度もチェックすることを計画しています。そうする代わりに、ネットワーク接続が変更されたときだけチェックし、それに応じてネットワーク モジュールに通知します。

IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);        
registerReceiver(YOUR_RECEIVER, filter);
于 2013-03-30T03:11:31.460 に答える
-1

Tushar がで答えたように、次のようなものからの継承は問題ありませんが、常にインターネット接続を必要とするサービスを使用していない限りInternetActivity、チェックインしないでください。onResume代わりに、ボタン クリックなどのイベントが発生して次のアクティビティに進むときにチェックします。そのため、別のアクティビティを開始することなく、トーストを表示してインターネット接続を確認できます。アクティビティ全体で継続的なインターネット接続が必要になることはめったにないため、インターネットを必要とするすべてのイベントに対してこれを行う必要があります。

このメソッドをそのスーパー クラスに追加できます。

private boolean isInternetConnected() {
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    return cm.getActiveNetworkInfo() != null
            && cm.getActiveNetworkInfo().isConnectedOrConnecting();

}

それで:

if(isInternetConnected())
     //to the internet thing
else
     //display toast
于 2013-03-30T02:55:45.083 に答える