2

Webサーバーに接続してデータを取得するアプリケーションを作成しようとしていますが、いくつかの機能を実行したい

  1. アプリケーションをクリックすると、最初にインターネットアクセスが有効になっているかどうかが確認されますか?有効になっている場合はアプリケーションを起動し、有効になっていない場合はインターネットアクセス設定を開きます。その後、アプリケーションにリダイレクトします。
  2. アプリケーションがWebサーバーに接続しているときに、接続が成功しなかった場合、特定の時間が経過すると接続がタイムアウトになります。
4

3 に答える 3

11

私のアプリケーションでは、次のように定義されたクラスがあります。

    public class ConnectionDetector {

        private Context _context;

        public ConnectionDetector(Context context){
            this._context = context;
        }

        /**
         * Checking for all possible internet providers
         * **/
        public boolean isConnectingToInternet(){
            ConnectivityManager connectivity = (ConnectivityManager) _context.getSystemService(Context.CONNECTIVITY_SERVICE);
              if (connectivity != null)
              {
                  NetworkInfo[] info = connectivity.getAllNetworkInfo();
                  if (info != null)
                      for (int i = 0; i < info.length; i++)
                          if (info[i].getState() == NetworkInfo.State.CONNECTED)
                          {
                              return true;
                          }

              }
              return false;
        }
    }

また、接続ステータスを確認する必要があるアクティビティでは、次を使用します。

    // DEFINE THIS AS A GLOBAL VARIABLE
    AlertDialogManager alert = new AlertDialogManager();

onCreate()

    ConnectionDetector cd = new ConnectionDetector(getApplicationContext());
    // Check if Internet present
    if (!cd.isConnectingToInternet()) {
        // Internet Connection is not present
        alert.showAlertDialog(MainActivity.this, "Internet Connection Error",
            "Please connect to working Internet connection", false);
        // stop executing code by return
        return;
    }

おー。ほとんど忘れてしまった。インターネットをアクティブ化するためにユーザーを設定パネルにリダイレクトする必要がある場合は、次のようなインテントを使用できます。

AlertDialogでユーザーにプロンプ​​トを表示し、必要に応じてユーザーに選択させることができます。はいの場合は、このコードを実行します。

Intent intent = new Intent(Settings.ACTION_WIFI_SETTINGS);
startActivity(intent);

編集:

私は明白なことを見逃しました(Commonswareは彼のコメントでそれを指摘しました)。

マニフェストファイルにACCESS_NETWORK_STATE権限を追加する必要があります。

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
于 2013-02-17T14:41:13.380 に答える
4

この方法を使用できます。

public boolean isConn() {
        ConnectivityManager connectivity = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        if (connectivity.getActiveNetworkInfo() != null) {
            if (connectivity.getActiveNetworkInfo().isConnected())
                return true;
        }
        return false;
    }

そして、マニフェストファイルにこの権限を追加します。

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
于 2013-02-17T14:41:50.333 に答える
2

これは私がインターネット接続をチェックするために使用する機能です

// Checks Internet Status
public boolean isOnline() {
    if(cm == null)
        return false;

    final NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
    if (activeNetwork != null && activeNetwork.getState() == NetworkInfo.State.CONNECTED) 
        return true;

    return false;
}

また、この権限をマニフェストファイルに追加します

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

ユーザーをWiFi設定ページに送るには、

startActivity(new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS));
于 2013-02-17T14:38:39.930 に答える