Wi-Fiがワイヤレスモデムに接続されている場合、インターネットカバレッジは存在するかどうかにかかわらず、常に「はい」と表示されます。インターネット接続ではなく、Wi-Fi接続のみをチェックするので、このような状況に対処するにはどうすればよいですか。
質問する
6076 次
7 に答える
3
1.)uはそれを次のようにチェックできます
URL url = new URL("YOUR urlString");
HttpURLConnection conn= (HttpURLConnection) url.openConnection();
.
.
int responseCode = conn.getResponseCode();
//if responseCode = 200 - THEn CONN is connected
また
2.)uはdisのような何かをすることができます
public static boolean isNetworkAvailable(Activity activity) {
ConnectivityManager connectivity = (ConnectivityManager) activity
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity == null) {
return false;
} else {
NetworkInfo[] info = connectivity.getAllNetworkInfo();
if (info != null) {
for (int i = 0; i < info.length; i++) {
if (info[i].getState() == NetworkInfo.State.CONNECTED) {
return true; //<-- -- -- Connected
}
}
}
}
return false; //<-- -- -- NOT Connected
}
于 2012-05-30T13:26:13.653 に答える
1
これを試して。
private boolean haveNetworkConnection(Context context)
{
boolean haveConnectedWifi = false;
boolean haveConnectedMobile = false;
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo[] netInfo = cm.getAllNetworkInfo();
for (NetworkInfo ni : netInfo)
{
if (ni.getTypeName().equalsIgnoreCase("WIFI"))
{
if (ni.isConnected())
{
haveConnectedWifi = true;
Log.v("WIFI CONNECTION ", "AVAILABLE");
} else
{
Log.v("WIFI CONNECTION ", "NOT AVAILABLE");
}
}
if (ni.getTypeName().equalsIgnoreCase("MOBILE"))
{
if (ni.isConnected())
{
haveConnectedMobile = true;
Log.v("MOBILE INTERNET CONNECTION ", "AVAILABLE");
} else
{
Log.v("MOBILE INTERNET CONNECTION ", "NOT AVAILABLE");
}
}
}
return haveConnectedWifi || haveConnectedMobile;
}
それがお役に立てば幸いです。
于 2012-05-30T14:05:01.037 に答える
1
このコードを使用する
final ConnectivityManager connectivityManager = (ConnectivityManager)context.
getSystemService(Context.CONNECTIVITY_SERVICE);
final Network network = connectivityManager.getActiveNetwork();
final NetworkCapabilities capabilities = connectivityManager
.getNetworkCapabilities(network);
return capabilities != null
&& capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED);
于 2016-07-25T11:21:16.403 に答える
0
これを試しましたか?
http://developer.android.com/reference/android/net/NetworkInfo.html#isConnected()
説明は言う:
ネットワーク接続が存在し、接続を確立してデータを渡すことが可能かどうかを示します。
于 2012-05-30T13:29:42.030 に答える
0
そうです、ConnectivityManagerを使用する場合は、接続(WiFi、モバイル、WiMaxなど)と接続されているかどうかの情報のみを提供します。
データ接続を確実にするには、pingを実行できます。
public static boolean ping() {
try {
SocketAddress addr = new InetSocketAddress("www.example.com", 80); // Set IP/Host and Port
Socket socket = new Socket();
//Connect socket to address, and set a time-out to 5 sec
socket.connect(addr, 5000);
//If network isn't conecctet then throw a IOException else socket is connected successfully
socket.close();
return true;
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return true;
}
于 2012-05-30T13:42:19.800 に答える
0
これを使用して、Androidのインターネット接続でwifiまたはモバイルデータの接続を確認できます
public boolean isConnected() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean NisConnected = activeNetwork != null && activeNetwork.isConnected();
if (NisConnected) {
// if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE || activeNetwork.getType() == ConnectivityManager.TYPE_WIFI)
if (activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) {
return true;
} else if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE)
return true;
else
return false;
}
return false;
}
于 2015-06-07T05:11:41.670 に答える
0
また、このように
public static boolean isNetworkAvailable(Context context)
{
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
return networkInfo != null && networkInfo.isConnectedOrConnecting();
}
于 2017-02-22T13:36:57.070 に答える