Android: истекло время ожидания, когда веб-служба вызвала диалоговое окно предупреждения - PullRequest
0 голосов
/ 12 декабря 2011

Я хочу показать диалоговое окно с предупреждением, если подключение к Интернету мало. Я использую следующий код:

    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();
            }

, но он не работает?В чем может быть проблема.Может ли кто-нибудь помочь мне в этом?спасибо

Ответы [ 3 ]

1 голос
/ 12 декабря 2011

Я использовал это

            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
            }
1 голос
/ 12 декабря 2011

Вы можете проверить доступность сети. Надеюсь, что это поможет вам.

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;
    }

Если он возвращает false, вы можете использовать dialog.show();

0 голосов
/ 12 декабря 2011

Убедитесь, что вы показываете диалог из потока пользовательского интерфейса.Если вы выполняете сетевую операцию в фоновом потоке (как вы должны это сделать), вам необходимо явно вызвать метод show в потоке пользовательского интерфейса.

Существует несколько способов доступа к потоку пользовательского интерфейса из фоновых потоков:

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

Также см. Документацию по процессам и потокам для получения дополнительной информации по этому вопросу: http://developer.android.com/guide/topics/fundamentals/processes-and-threads.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...