2017-02-21 7 views
0

Hier ist der Code, der die Internetverbindung überprüfen und dann, wenn die Verbindung ist falsch zeigt eine Nachricht in einem Allert-Dialog. Das Problem ist, wenn iseconnected wahr ist und (ich habe versucht, if (isconnected) clause statt if (! Isconnected)), funktioniert jeder. Aber wenn ich jedes Netzwerk auf meinem Telefon ausschalte, wenn VM show() bei jedem Einfrieren ausführt. Warum? Vielen Dank an alle:Alarmdialog einfrieren meine app

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, du einfach akzeptieren, die Antwort, die Kopie von mir eingefügt ist hinzuzufügen. –

+0

Sorry, ich sah zuerst das andere onr –

+0

Gerechtigkeit ist getan. –

Antwort

0

Sie nicht AsyncTask müssen die Internet-Verbindung zu überprüfen, so halten Sie es einfach.

Ich denke, dass Ihre onClick Methode sollte wie folgt aussieht:

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

Sie die ACCESS_NETWORK_STATE und INTERNET-Berechtigungen in Ihrem Manifest nicht vergessen.

0

mit Try this ...

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

Und ja, ACCESS_NETWORK_STATE und INTERNET-Berechtigungen in der Manifest-Datei