2011-12-12 15 views
0

を示されていないと呼ばれる動作時間外、私は低インターネットconnectivity.Iはそれのために次のコードを使用していますがある場合に警告ダイアログを表示したい:アンドロイド:Webサービスが警告ダイアログが

try{ 

      DefaultHttpClient hc = new DefaultHttpClient(); 
      ResponseHandler<String> res = new BasicResponseHandler(); 
      HttpPost httppost = new HttpPost(Constants.getHostString() + "/apps_templates.jsp"); 
      List<NameValuePair> NVP = new ArrayList<NameValuePair>(); 
      NVP.add(new BasicNameValuePair("requester", "android")); 
      NVP.add(new BasicNameValuePair("device", device)); 
      httppost.setEntity(new UrlEncodedFormEntity(NVP)); 
      String response = hc.execute(httppost, res); 
      //long t2 = System.currentTimeMillis(); 
      //long elapse = t2 - t1; 
      //System.out.println("elapse time is"+elapse); 
       HttpConnectionParams.setConnectionTimeout(hc.getParams(), 30000); 
       int timeoutSocket = 30*1000; 
       HttpConnectionParams.setSoTimeout(hc.getParams(), timeoutSocket); 
       System.out.println("timeout socket"+timeoutSocket); 
       Log.e("Response", response); 
       } 
      catch(ConnectTimeoutException e){ 
       System.out.println(e); 
       alertDialog = new AlertDialog.Builder(this).create(); 
       //alertDialog.setTitle("Reset..."); 
       System.out.println("internet not available"); 
       alertDialog.setMessage("Low internet connectivity?"); 
       alertDialog.setButton("OK", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int which) { 
         alertDialog.cancel(); 
        } 
       }); 
       //alertDialog.setIcon(R.drawable.icon); 
       alertDialog.show(); 
       //alertDialog.cancel(); 
      } 

をしかし、それはないですが、ワーキング? 何が問題か。 誰もがこれ以上私を助けることができますか? ありがとう

答えて

1

あなたがネットワークの可用性をチェックできます。私はこれがあなたに役立つことを願っています。

public static boolean isNetworkAvailable(Context context) { 
     Context mContext = context; 
     try{ 
     ConnectivityManager connectivity = (ConnectivityManager)mContext.getSystemService(Context.CONNECTIVITY_SERVICE); 
     if (connectivity == null) { 
     } else { 
      NetworkInfo[] info = connectivity.getAllNetworkInfo(); 
      if (info != null) { 
      for (int i = 0; i < info.length; i++) { 
       if (info[i].getState() == NetworkInfo.State.CONNECTED) { 
        return true; 
       } 
      } 
      } 
     } 
     }catch(Exception e){ 
      e.printStackTrace(); 
     } 
     return false; 
    } 

それは、あなたがdialog.show();

1

を使用することができます偽retuns場合、私はこの

  ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
      android.net.NetworkInfo wifi = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 
      android.net.NetworkInfo data = cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 
      if ((wifi != null & data != null) && (wifi.isConnected() | data.isConnected())) { 
       //use the connectivity 
      } else { 

       //show alert that cannot connect to internet 
      } 
+0

しかし、インターネットconnecctionが可能ですので、私はカント

は、バックグラウンドスレッドからUIスレッドにアクセスするには、いくつかの方法があります。このコードを使用しますが、インターネット接続が遅い場合にのみアラートを表示する必要があります – ekjyot

0

を使用しているあなたは、UIスレッドからダイアログを表示していることを確認します。バックグラウンドスレッドでネットワーク操作を実行している場合は、UIスレッドでshowメソッドを明示的に呼び出す必要があります。

Activity.runOnUiThread(Runnable) 
View.post(Runnable) 
View.postDelayed(Runnable, long) 

はまた、この方法の詳細についてはプロセスとスレッドのdocumentaionを参照してください:http://developer.android.com/guide/topics/fundamentals/processes-and-threads.html

関連する問題