Domanda

Ho un lavoro su di applicazioni che utilizzano Internet.

  • Esso contiene analisi XML da URL. di
  • Mostra finestra di avanzamento Durante l'analisi tempo.
  • finestra di arresto, quando l'analisi viene eseguita.
  • Imposta testo (dati) nel ListView.

Il mio problema è che, quando dispositivo è connesso a Internet che la mia Apps funziona bene, ma quando il dispositivo non è collegato a Internet "finestra di dialogo Progress" è in corsa per un tempo infinito.

Voglio smettere di dialogo se il dispositivo non è connesso a internet o wifi. come fare questo?
Qualche idea?  Scusate ragazzi .... ho cambiare idea voglio controllare connessione a Internet quando clicco sul pulsante. quello che ho provato finora è ..

public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.homelayout);
        mclip = (ImageButton) findViewById(R.id.clip);
        mclip.setClickable(true);
        mclip.setFocusable(true);

        mclip.setOnClickListener(new OnClickListener() {

            public void onClick(View view) {
                ConnectivityManager cm = (ConnectivityManager)              getSystemService(Context.CONNECTIVITY_SERVICE);
                NetworkInfo netInfo = cm.getActiveNetworkInfo();
                if (netInfo != null && netInfo.isConnectedOrConnecting()) {
               //if it is connected to internet than start Another Activity.
                startActivity(new Intent(ListViewExample.this, ClipOfDay.class));
                } else if (netInfo == null) {
                    AlertDialog alertDialog = new AlertDialog.Builder(ListViewExample.this).create();
                    alertDialog.setTitle("Connection Problem");
                    alertDialog.setMessage("You are not connected to Internet");
                    alertDialog.setButton("OK", new DialogInterface.OnClickListener() {

                        public void onClick(DialogInterface dialog, int which) {
                            return;
                        }
                    });
                    alertDialog.show();
                }

            }
        });
       }

Ma questo non è dispositivo working.if non è collegato a Internet che voglio mostrare AlertDialog. altrimenti avrà inizio attività. Qualcuno può dirmi cosa fare?
Grazie.

È stato utile?

Soluzione

Controllare la connessione di rete
Un semplice codice per la verifica di collegamento

ConnectivityManager cMgr = (ConnectivityManager) con.getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo netInfo = cMgr.getActiveNetworkInfo();
            String status = netInfo.getState().toString();
            if (status.equals("CONNECTED")) {
               //DO you work
            } else {
                Log.e("error", "No connection available ");
            }

Altri suggerimenti

Usare questi due metodi per controllare la connettività:

Context.getSystemService(Context.CONNECTIVITY_SERVICE).getNetworkInfo(ConnectivityManager.TYPE_MOBILE)
Context.getSystemService(Context.CONNECTIVITY_SERVICE).getNetworkInfo(ConnectivityManager.TYPE_WIFI)

quindi analizzare i risultati restituiti per sapere se la connessione è disponibile. Se è disponibile, allora solo fare le cose e mettere la finestra di dialogo.

In alternativa, si potrebbe anche pop nella finestra di dialogo, e prima di fare qualsiasi azione di rete, controllo per la connettività con questi metodi, e se la connessione non è disponibile, nascondere / annullare la finestra di dialogo e visualizzare un messaggio di errore. altrimenti, andare per l'azione di rete. e sì, hanno sempre un blocco try-catch.

  •  In primo luogo verificare se è collegato a internet o wifi, quindi eseguire il codice
  • Usa try, catch, nel caso in cui qualche eccezione si verifica a causa di errore di connessione, dialogo rimuovere in blocco catch.


Questo può essere un modo per fare questo ..............
Speranza che aiuta .......

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top