0

いくつかの質問をしたいのですが、それはあなた方の中にはとても簡単かもしれません。

アプリケーションがインターネットに接続されているかどうかを確認するにはどうすればよいですか?

MySQL データベースに接続したいのですが、インターネットがない場合、AlertDialog が必要です。

    new AsyncTask() {
        ProgressDialog dialog = ProgressDialog.show(AppActivity.this, "Lade", "Daten werden abgerufen...", true);
        @Override
        protected void onPostExecute(Object result) {
            // TODO Auto-generated method stub
            super.onPostExecute(result);
            dialog.dismiss();
            max = Name.size()-1;
            kontrolle = new boolean [max*2];

            pb.setMax(max/2);

            java.util.Arrays.fill(kontrolle, false);

            bilder();
        }

        @Override
        protected Object doInBackground(Object... arg0) 
        {
            // TODO Auto-generated method stub
               dialog.show();
               getData();
            return null;
        }
    }.execute();

 private void getData() 
{
    String result = "";
    ArrayList<NameValuePair> nameValuePair = new ArrayList<NameValuePair>();

    try
    {
        HttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost("http://.../read.php");
        httpPost.setEntity(new UrlEncodedFormEntity(nameValuePair));
        HttpResponse response = httpClient.execute(httpPost);
        HttpEntity entity = response.getEntity();
        is=entity.getContent();
    }
    catch(Exception e)
    {
        Log.e("log-tag","Keine Verbindung"+e.toString());
        Toast.makeText(getApplicationContext(), "Keine Verbindung!", Toast.LENGTH_SHORT).show();
    }

    try
    {

        BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
        StringBuilder sb = new StringBuilder();
        String line = "";

        while((line= reader.readLine())!=null)
                {
                    sb.append(line+"n");
                }
        is.close();
        result = sb.toString();
         result.trim();
    }
    catch(Exception e)
    {
        Log.e("log-tag","Error"+e.toString());
    }
    try
    {
        JSONArray jArray = new JSONArray(result);
        for(int i=0;i<jArray.length();i++)
        {
            JSONObject json_data = jArray.getJSONObject(i);


            ID.add((String) json_data.get("id"));
            Name.add((String) json_data.get("name"));
            Pts.add((String)json_data.get("pts"));
        }
    }
    catch(Exception e)
    {
        Log.e("log-tag","Error2"+e.toString());
    }
}

どうすればそれを達成できますか? 私はこれを考えたのかわかりません

catch(Exception e)
{
    Log.e("log-tag","Keine Verbindung"+e.toString());
    Toast.makeText(getApplicationContext(), "Keine Verbindung!", Toast.LENGTH_SHORT).show();
}

仕事をしますが、接続がない場合(電話をフライトモードに設定したため)、無限のProgressDialogがあります:(

4

1 に答える 1

1

Jon Taylorが述べたように、これは重複した質問です

これを行うには、次のコードを使用できます

このメソッドは、モバイルがインターネットに接続されているかどうかを確認し、接続されている場合は true を返し、接続されていない場合は警告ボックスを表示します。

private boolean isNetworkConnected() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo ni = cm.getActiveNetworkInfo();
if (ni == null) {
// There are no active networks.
AlertDialog.Builder altDialog= new AlertDialog.Builder(this);
altDialog.setMessage("No network connection!");
return false;
} else
return true;
}

これをマニフェスト ファイルに追加し、

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

編集: ネットワークの種類を取得するには、次のコード スニペットを使用できます。

ConnectivityManager conMan = (ConnectivityManager)  getSystemService(Context.CONNECTIVITY_SERVICE);

//mobile
State mobile = conMan.getNetworkInfo(0).getState();

//wifi
State wifi = conMan.getNetworkInfo(1).getState();

そして、そのように使用します:

if (mobile == NetworkInfo.State.CONNECTED || mobile == NetworkInfo.State.CONNECTING) {
//mobile
} else if (wifi == NetworkInfo.State.CONNECTED || wifi == NetworkInfo.State.CONNECTING) {
//wifi
}
于 2012-07-06T09:55:31.713 に答える