Сценарий оболочки ниже также хорошо работал для меня ... определенно пришлось использовать перенаправление, о котором Антонин упомянул вначале ... это дало мне идею протестировать здесь документ.
function testMongoScript {
mongo <<EOF
use mydb
db.leads.findOne()
db.leads.find().count()
EOF
}
Я использую этот код вместо 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();
}
Взгляните на класс 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();
Не стоит усложнять. Самый простой и фреймворковый способ - это использовать 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" />
в вашем манифесте андроида.
.