4

ネットワークが利用可能かどうかを確認しようとしています。
しかし、私のエミュレータでは常に表示されますconnected(インターネットを切断した後も)

コードに間違いはありますか? wifiで接続しています。

コード:

public class AndroidConnectivityActivity extends Activity
{
Button checkBtn;

/** Called when the activity is first created. */
@Override

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
      checkBtn = (Button) findViewById(R.id.button1);

      checkBtn.setOnClickListener(new View.OnClickListener()
      {
       public void onClick(View v)
       {
        if(isInternetOn())
        {
         Toast.makeText(getBaseContext(), "Connected",
           Toast.LENGTH_SHORT).show();
        }
        else
        {
         Toast.makeText(getBaseContext(), "Not connected",
           Toast.LENGTH_SHORT).show();
        }
       }});
     }

     public final boolean isInternetOn()
     {
      ConnectivityManager connec = (ConnectivityManager) getSystemService
      (Context.CONNECTIVITY_SERVICE);

      if ((connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED)
        ||(connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTING)
        ||(connec.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTING)
        ||(connec.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTED))
      {
       return true;
      }

      else if ((connec.getNetworkInfo(0).getState() == NetworkInfo.State.DISCONNECTED)
        || (connec.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED))
      {
       return false;
      }

      return false;
     }
    }
4

3 に答える 3

2

以下のコードを使用

public static boolean isInternetAvailable(Context context)
    {
        boolean isInternetAvailable = false;

        try
        {  
            ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();

            if(networkInfo != null && (networkInfo.isConnected()))
            {
                isInternetAvailable  = true;
            }    
        }
        catch(Exception exception)
        {
            // Do Nothing
        }

        return isInternetAvailable;
    }

また、実際のデバイスで試してください

アクティビティの onCreate メソッドでコードを使用する

if(isInternetAvailable(this))
{
Toast toast = Toast.makeText(this, "internet available", Toast.LENGTH_SHORT);
        toast.show();
}
else
{
Toast toast = Toast.makeText(this, "internet not available", Toast.LENGTH_SHORT);
        toast.show();
}

必要なマニフェスト許可

<uses-permission
        android:name="android.permission.INTERNET" />

    <uses-permission
        android:name="android.permission.ACCESS_NETWORK_STATE" />
于 2012-06-15T08:47:55.020 に答える
2

以下のメソッドshoenを使用してください

public static boolean isInternetAvailable(Context context) {
            ConnectivityManager cm =
                (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo netInfo = cm.getActiveNetworkInfo();
            if (netInfo != null && netInfo.isConnectedOrConnecting()) {
                return true;
            }
            return false;
        }

そしてマニフェストセットパーミッションで

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
于 2012-06-15T08:50:18.243 に答える
0

これを使って:

private boolean getOnlineState() {
        ConnectivityManager myConnectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo myNetworkInfo = myConnectivityManager
                .getActiveNetworkInfo();
        if (myNetworkInfo != null
                && myNetworkInfo.isConnectedOrConnecting())
            return true;
        return false;

    }

そしてところで:

if ((connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED)
    ||(connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTING)
    ||(connec.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTING)
    ||(connec.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTED))
  {
   return true;
  }

  else if ((connec.getNetworkInfo(0).getState() == NetworkInfo.State.DISCONNECTED)
    || (connec.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED))
  {
   return false;
  }

  return false;
 }

は次のように同じです:

    if ((connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED)
    ||(connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTING)
    ||(connec.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTING)
    ||(connec.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTED))
         return true;
         return false;

このようなハードウェア操作は、エミュレーターではなく実際の電話で試してください。

于 2012-06-15T08:55:21.467 に答える