我想看看某个特定的设备是否对4G网络有硬件支持,。
我会详细说明这个问题..。
在应用程序中,我们有一个设置页面,用户可以在其中进行选择,并允许应用程序仅在选定的网络中运行。例如:用户可以选择该应用程序将只运行在WiFi网络或仅在3G网络等。
所有网络都有checkbox首选项WiFi、2G、3G 4G等。现在如果设备不支持4G网络,我想隐藏4G选择复选框。
所有剩下的功能都完成了。我对如何检测设备是否支持4G这一问题感到惊讶?
请注意,我想在设备上检测到对4G的硬件支持,而不是4G连接。
任何帮助都是非常感谢的。
发布于 2011-11-01 11:30:43
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo[] info = cm.getAllNetworkInfo();
for(int i=0; i <info.length; i++){
Log.i("netinfo"+i, info[i].getType()+"");
Log.i("netinfo"+i, info[i].getTypeName());
Log.i("netinfo"+i, info[i].getSubtype()+"");
Log.i("netinfo"+i, info[i].getSubtypeName());
}使用这段代码并获取设备上的所有可用选项。我认为你应该能够获得设备的所有功能。
网络类型信息存在于http://developer.android.com/reference/android/telephony/TelephonyManager.html中。
我认为从API级别11添加的网络类型是用于4g的。你自己去查。
发布于 2011-10-25 14:04:14
这也许能行。它应该检查一下WiMax 4g:
private boolean is4gavailable() {
ConnectivityManager connec = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mobileInfo = connec.getNetworkInfo(0);
NetworkInfo wifiInfo = connec.getNetworkInfo(1);
NetworkInfo wimaxInfo = connec.getNetworkInfo(6);
if (wimaxInfo!=null) {
return mobileInfo.isConnectedOrConnecting() || wifiInfo.isConnectedOrConnecting() || wimaxInfo.isConnectedOrConnecting();
}
else {
return mobileInfo.isConnectedOrConnecting() || wifiInfo.isConnectedOrConnecting();
}
}试着看看这,以获得更多的澄清。
发布于 2012-01-07 04:53:11
Context context = MainActivity.this;
public synchronized static boolean isNetAvailable(Context context){
boolean isNetAvailable=false;
if ( context != null ){
ConnectivityManager mgr = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
if ( mgr != null )
{
boolean mobileNetwork = false;
boolean wifiNetwork = false;
boolean wiMaxNetwork = false;
boolean mobileNetworkConnecetd = false;
boolean wifiNetworkConnecetd = false;
boolean wiMaxNetworkConnected = false;
NetworkInfo mobileInfo = mgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
NetworkInfo wifiInfo = mgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
NetworkInfo wiMaxInfo = mgr.getNetworkInfo(ConnectivityManager.TYPE_WIMAX);
if ( mobileInfo != null )
mobileNetwork = mobileInfo.isAvailable();
if ( wifiInfo != null )
wifiNetwork = wifiInfo.isAvailable();
if(wiMaxInfo != null)
wiMaxNetwork = wiMaxInfo.isAvailable();
if(wifiNetwork == true || mobileNetwork == true || wiMaxNetwork == true){
mobileNetworkConnecetd = mobileInfo.isConnectedOrConnecting();
wifiNetworkConnecetd = wifiInfo.isConnectedOrConnecting();
wiMaxNetworkConnected = wiMaxInfo.isConnectedOrConnecting();
}
isNetAvailable = ( mobileNetworkConnecetd || wifiNetworkConnecetd || wiMaxNetworkConnected );
}
}
return isNetAvailable;
}检查isNetAvailable的值在所有3种情况下都是对我有用的,也希望为你工作。
注意: 4G可用性将引入API级别8以后。
https://stackoverflow.com/questions/7887840
复制相似问题