有没有办法检查用户是否正在使用手机连接的设备(这主要适用于平板电脑)?也就是说,智能手机通常带有内置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");问题是,这两种比较总是返回true,即使它是一台没有电池的平板电脑。
我只需要知道设备是否有SIM卡插槽(型号带有蜂窝),或者它是一个只有WiFi的型号,这是可能的吗?
提前谢谢。
发布于 2013-06-07 02:41:09
下面是我的代码的摘录(到目前为止它是有效的):
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();发布于 2014-12-03 01:06:59
如果目标是确定是否对连接进行了计量,则应致电ConnectivityManager.isActiveNetworkMetered(),或者如果需要旧设备支持,请致电ConnectivityManagerCompat.isActiveNetworkMetered()。
有关响应不同连接类型的背景知识,请参阅Managing Network Usage (尽管要注意该文档的problem of not using isActiveNetworkMetered())。
https://stackoverflow.com/questions/16969636
复制相似问题