假设在设备上启用了WIFI和Data/3G,我如何检查用户当前是否通过wifi或数据计划使用互联网,假设它们都已启用.所以我不需要检查它们是启用还是禁用,我想检测用户实际使用的是哪一个.
我一直在做以下,这是唯一的解决方案吗?
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
if (WifiInfo.getDetailedStateOf(wifiInfo.getSupplicantState()) == NetworkInfo.DetailedState.CONNECTED) {
String ssid = wifiInfo.getSSID();
}
Run Code Online (Sandbox Code Playgroud)
Aas*_*gar 27
void chkStatus() {
final ConnectivityManager connMgr = (ConnectivityManager)
this.getSystemService(Context.CONNECTIVITY_SERVICE);
final android.net.NetworkInfo wifi = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
final android.net.NetworkInfo mobile = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (wifi.isConnectedOrConnecting ()) {
Toast.makeText(this, "Wifi", Toast.LENGTH_LONG).show();
} else if (mobile.isConnectedOrConnecting ()) {
Toast.makeText(this, "Mobile 3G ", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(this, "No Network ", Toast.LENGTH_LONG).show();
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用以下方法每次检查网络状态:
public static String checkNetworkStatus(final Context context) {
String networkStatus = "";
// Get connect mangaer
final ConnectivityManager connMgr = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
// check for wifi
final android.net.NetworkInfo wifi = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
// check for mobile data
final android.net.NetworkInfo mobile = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if( wifi.isAvailable() ) {
networkStatus = "wifi";
} else if( mobile.isAvailable() ) {
networkStatus = "mobileData";
} else {
networkStatus = "noNetwork";
}
return networkStatus;
} // end checkNetworkStatus
Run Code Online (Sandbox Code Playgroud)
// vKj
| 归档时间: |
|
| 查看次数: |
17347 次 |
| 最近记录: |