2017-02-21 3 views
0

Ici, il ya le code qui vérifie la connexion Internet et puis si le isconnected est faux afficher un message dans un dialogue d'allert. Le problème est que si isconnected est vrai et (j'ai essayé de mettre if (isconnected) à la place if (! Isconnected)) fonctionne tous. Mais si je mets de côté tous les réseaux sur mon téléphone quand VM exécute show() chaque gel. Pourquoi? Merci à tous:Alerte boîte de dialogue geler mon application

final AlertDialog.Builder dialog= new AlertDialog.Builder(this); 


    ((Button)findViewById(R.id.listabutton)).setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      AsyncTask asyncTask= new AsyncTask() { 
       boolean isconnected=true; 
       @Override 
       protected Object doInBackground(Object[] params) { 


         ConnectivityManager conMgr = (ConnectivityManager)getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE); 

         NetworkInfo activeNetwork = conMgr.getActiveNetworkInfo(); 
         isconnected = activeNetwork != null && 
           activeNetwork.isConnectedOrConnecting(); 
        Log.i("StateNet",isconnected+""); 


        return null; 
       } 

       @Override 
       protected void onPostExecute(Object o) { 
        if(!isconnected){ 

         dialog.setMessage("Controlla la tua conessione a internet") 
           .setTitle("Ops problemino con internet") 
           .setPositiveButton("Ok", ok) 
           .show(); 

        } 

        super.onPostExecute(o); 
       } 

      }; 
+0

Wow, vous acceptez que la réponse qui est une copie collée de moi. –

+0

Désolé j'ai vu d'abord l'autre –

+0

La justice est faite. –

Répondre

0

Vous n'avez pas besoin AsyncTask pour vérifier la connexion Internet, donc s'il vous plaît garder les choses simples.

Je pense que votre méthode onclick devrait ressembler à ceci:

@Override 
public void onClick(View v) { 
     if (isConnectionAvailable(context)) { 
      // connected 
     } else { 
      // not connected 
     } 
}; 

public static boolean isConnectionAvailable(Context context) { 
    ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo networkInfo = manager.getActiveNetworkInfo(); 
    return networkInfo != null && networkInfo.isAvailable() && networkInfo.isConnected(); 
} 

Ne pas oublier les ACCESS_NETWORK_STATE et les autorisations INTERNET dans votre Manifest.

0

Essayez avec cette ...

((Button)findViewById(R.id.listabutton)).setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

     if(isDeviceOnline(context)){ 
      //do something. 
     }else{ 
      AlertDialog.Builder dialog= new AlertDialog.Builder(context); 
      dialog.setMessage("Not connected"); 
      dialog.setTitle("Error!"); 
      dialog.setPositiveButton(.....); 
      dialog.create(); 
      dialog.show(); 
     } 

    } 
} 


public boolean isDeviceOnline(Context context) { 
    ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo networkInfo = manager.getActiveNetworkInfo(); 
    return networkInfo != null && networkInfo.isAvailable() && networkInfo.isConnected(); 
} 

Et oui, ajouter des autorisations de ACCESS_NETWORK_STATE et INTERNET dans le fichier manifeste