2013-10-15 4 views
0

Я только что создал приложение, которое делает подключение к веб-сервису. Но я замечаю, что когда он находится на устройстве. Если на пользовательском устройстве нет активного интернета. Мое приложение вылетает из-за того, что он не может подключиться к интернет-сервису. Хотя в моем коде я смог проверить, когда интернет отключен.Мое приложение вылетает, когда нет активного плана интернет-данных

Итак, я использую этот код, чтобы проверить, могу ли я подключиться к URL-адресу, прежде чем я свяжусь с ним. Пожалуйста, как лучше всего проверить, есть ли активный план данных на устройстве. Или я делаю правильный путь.

public ValidateUrlConnection(String urlAddress){ 

     try{ 
      url = new URL(urlAddress); 
      URLConnection connection = url.openConnection(); 
     } 
     catch(IOException e) 
     { 

     } 
    } 

ответ

0

хорошо вы не можете проверить, если устройство было план данных, однако вы можете проверить, если есть активное соединение с использованием ConnectivityManager

ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); 
    activeNetworkInfo.isConnected(); 
+0

Если нет активного плана данных. Сетевой провайдер будет препятствовать подключению вашего приложения. поэтому я думал, что сначала должен запросить Url, прежде чем делать GET или Post. Поэтому, если соединение прерывается, я показываю информацию, в которой пользователь говорит ему или ей, чтобы проверить скорость интернета или мегабайт. Может быть, лучший способ, почему я спрашиваю. – Jaido

+1

Я просто дал вам лучший способ использовать «ConnetivityManager», чтобы узнать, есть ли интернет – tyczj

0

Вы можете использовать этот код, чтобы проверить подключение к Интернету, прежде чем вызвать URL

Connectiondetecter.java

import android.content.Context; 
import android.net.ConnectivityManager; 
import android.net.NetworkInfo; 
import android.util.Log; 

public class ConnectionDetector { 

private Context _context; 

public ConnectionDetector(Context context){ 
    this._context = context; 
} 
public boolean isConnectingToInternet(){ 
    ConnectivityManager connectivity = (ConnectivityManager) _context.getSystemService(Context.CONNECTIVITY_SERVICE); 
     if (connectivity != null) 
     { 
      NetworkInfo[] info = connectivity.getAllNetworkInfo(); 
      if (info != null) 
       for (int i = 0; i < info.length; i++) 
        if (info[i].getState() == NetworkInfo.State.CONNECTED) 
        { 
         Log.d("Network", "NETWORKnAME: "+info[i].getTypeName()); 
         return true; 
        } 

     } 
     return false; 
}} 

коробка Shaow оповещения, если нет подключения к Интернету

Alert.java

import android.app.AlertDialog; 
import android.content.Context; 
import android.content.DialogInterface; 

public class AlertDialogManager { 

@SuppressWarnings("deprecation") 
public void showAlertDialog(Context context, String title, String message, Boolean status) { 
    AlertDialog alertDialog = new AlertDialog.Builder(context).create(); 

    // Setting Dialog Title 
    alertDialog.setTitle(title); 

    // Setting Dialog Message 
    alertDialog.setMessage(message); 

    if (status != null) 
     // Setting alert dialog icon 
     alertDialog.setIcon((status) ? R.drawable.success : R.drawable.fail); 

    // Setting OK Button 
    alertDialog.setButton("OK", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
     } 
    }); 

    // Showing Alert Message 
    alertDialog.show(); 
} 

}

, а затем проверьте подключение к интернету, как:

ConnectionDetector cd = new ConnectionDetector(getApplicationContext()); 


if (!cd.isConnectingToInternet()) { 
     alert.showAlertDialog(youractivity.this, "Internet Connection Error", 
       "Please connect to working Internet connection", false); 
     return; 
    } 
else 
{ 
do_your_internet_task() 
} 
Смежные вопросы