Android:如何检测设备是WiFi还是WiFi+;细胞的

Android:如何检测设备是WiFi还是WiFi+;细胞的,android,networking,network-programming,android-wifi,cellular-network,Android,Networking,Network Programming,Android Wifi,Cellular Network,是否有办法检查用户是否使用带有蜂窝连接的设备(这主要适用于平板电脑)?。也就是说,智能手机配备内置Wi-Fi和手机(通常),但一些平板电脑只配备Wi-Fi。如何知道运行我的应用程序的设备类型 我尝试了以下方法,但没有结果: cell = ConnectivityManager.isNetworkTypeValid(ConnectivityManager.TYPE_MOBILE); wifi = ConnectivityManager.isNetworkTypeValid(Connectivity

是否有办法检查用户是否使用带有蜂窝连接的设备(这主要适用于平板电脑)?。也就是说,智能手机配备内置Wi-Fi和手机(通常),但一些平板电脑只配备Wi-Fi。如何知道运行我的应用程序的设备类型

我尝试了以下方法,但没有结果:

cell = ConnectivityManager.isNetworkTypeValid(ConnectivityManager.TYPE_MOBILE);
wifi = ConnectivityManager.isNetworkTypeValid(ConnectivityManager.TYPE_WIFI);

if (cell) tv_1.setText("The tablet has cellular");
   else tv_1.setText("The tablet does not have cellular");
if (wifi) tv_2.setText("The tablet has wifi");
   else tv_2.setText("The tablet does not have wifi");
问题是,即使是没有手机的平板电脑,这两种比较结果总是正确的

我只需要知道该设备是否有SIM卡插槽(带蜂窝电话的型号)或是只有WiFi的型号,这可能吗


提前感谢。

这里是我的代码摘录(到目前为止仍然有效):


如果目标是确定连接是否按流量计费,则应调用,或者如果需要旧设备支持


有关对各种连接类型做出反应的背景信息,请参阅(尽管请注意该文档的内容)。

我在一些设备上试用过它,至少在我需要的方面,它似乎工作得很好。想想看,这是很合乎逻辑的。谢谢你的帮助。如果你有一个有效的3G连接,但数据连接已关闭,这将不起作用。嗯,也许我不理解你的观点,但我需要的是检测设备是否具有蜂窝数据功能,并根据这一点,启动一个或其他活动。我在您描述的情况下尝试过,似乎没有问题。@Manish据我所知Daniel的需求,对于他来说,关闭数据连接的3G设备是一样的,好像根本没有3G功能一样。我的申请表也一样。
ConnectivityManager connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
NetworkInfo mEthernet = connManager.getNetworkInfo(ConnectivityManager.TYPE_ETHERNET);
NetworkInfo m3G = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (mWifi!=null) isOnWifi = mWifi.isConnected();
if (mEthernet!=null) isOnEthernet = mEthernet.isConnected();
if (m3G!=null) is3G = m3G.isConnected();