Состояние сети, обнаружение проблемы с ConnectivityManager в Android - PullRequest
0 голосов
/ 28 мая 2018

Я хочу выяснить, является ли этот мобильный телефон подключенным к Интернету или нет (Wi-Fi и мобильные данные). Я использую приведенный ниже код, и он работает нормально на всех устройствах, кроме одного примечания 4. Я нахожу проблему, когда не отображается false, когда он не подключен к Интернету.пожалуйста, помогите мне.

  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) {
                    return true;
                }
        }
    }
    return false;
}
}

ConnectionDetector cd = new ConnectionDetector(ViewOrder.this);
Boolean isInternetPresent = cd.isConnectingToInternet();
if (isInternetPresent) {
           // its giving true when its in offline only in mi note 4 device. all the mobiles which i checked its working fine
}
else {
}

1 Ответ

0 голосов
/ 28 мая 2018

Попробуйте,

public class NetworkUtility {

/**
 * Provides whether internet is connected or not
 * @param context
 * @return true if connected , 
 * else false
 */
public static boolean isInternetOn(Context context) {
    if (context == null) 
        return false;

        ConnectivityManager conn = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo = conn.getActiveNetworkInfo();
        if (networkInfo != null) {
            return networkInfo.isConnected();
        }

    return false;
}
}
...