Как проверить доступ в интернет на Android? InetAddress никогда не истекает

Сценарий оболочки ниже также хорошо работал для меня ... определенно пришлось использовать перенаправление, о котором Антонин упомянул вначале ... это дало мне идею протестировать здесь документ.

function testMongoScript {
    mongo <<EOF
    use mydb
    db.leads.findOne()
    db.leads.find().count()
EOF
}
620
задан Peter O. 26 July 2016 в 15:13
поделиться

3 ответа

Я использую этот код вместо InetAddress:

    try {

        URL url = new URL("http://"+params[0]);

        HttpURLConnection urlc = (HttpURLConnection) url.openConnection();
        urlc.setRequestProperty("User-Agent", "Android Application:"+Z.APP_VERSION);
        urlc.setRequestProperty("Connection", "close");
        urlc.setConnectTimeout(1000 * 30); // mTimeout is in seconds
        urlc.connect();
        if (urlc.getResponseCode() == 200) {
            Main.Log("getResponseCode == 200");
            return new Boolean(true);
        }
    } catch (MalformedURLException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
5
ответ дан 22 November 2019 в 21:51
поделиться

Взгляните на класс ConnectivityManager. Вы можете использовать этот класс для получения информации об активных соединениях на хосте. http://developer.android.com/reference/android/net/ConnectivityManager.html

РЕДАКТИРОВАТЬ: вы можете использовать

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

или

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

и проанализировать перечисление DetailState возвращенного объекта NetworkInfo

РЕДАКТИРОВАТЬ РЕДАКТИРОВАТЬ: чтобы узнать, можете ли вы получить доступ к хосту, вы можете использовать

Context.getSystemService(Context.CONNECTIVITY_SERVICE)
    .requestRouteToHost(TYPE_WIFI, int hostAddress)

Очевидно, я использую Context.getSystemService (Context.CONNECTIVITY_SERVICE) в качестве прокси, чтобы сказать

ConnectivityManager cm = Context.getSystemService(Context.CONNECTIVITY_SERVICE);
cm.yourMethodCallHere();
46
ответ дан 22 November 2019 в 21:51
поделиться

Не стоит усложнять. Самый простой и фреймворковый способ - это использовать ACCESS_NETWORK_STATE разрешение и просто сделать подключенный метод

public boolean isOnline() {
    ConnectivityManager cm =
        (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

    return cm.getActiveNetworkInfo() != null && 
       cm.getActiveNetworkInfo().isConnectedOrConnecting();
}

Вы также можете использовать requestRouteToHost, если вы имеете в виду узел particualr и тип соединения (wifi/mobile).

Вам также понадобится:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

в вашем манифесте андроида.

.
293
ответ дан 22 November 2019 в 21:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: