有没有办法让Android的移动网络设置值为“仅使用2G网络”?检测“只使用2G网络”设置
正在开发的应用程序可以测量某个位置的网络速度,但为了使其与此相关,它必须知道用户是否有意将移动互联网限制为2G。
我查看了ConnectivityManager,但它只提供有关后台数据设置或所有网络的信息。通过他们迭代表明,尽管已启用该设置,HSPA和UMTS返回true
为isAvailable()
:
for (NetworkInfo netInfo : cm.getAllNetworkInfo()) {
Log.i(TAG, netInfo.getSubtypeName() + ": " + netInfo.isAvailable());
}
我发现在这一片全部唯一的暗示是,netInfo.getReason()
返回“connectionDisabled”在HSPA和UMTS时设置已启用。问题是,当设置被禁用时,这些网络类型不一定会出现在列表中。对于“connectionDisabled”,我特别在HSPA和UMTS上使用字符串比较似乎不太合适。
解决这个问题的正确方法是什么?
在有人尝试从上面的代码片段中获取有意义的信息之前,请不要打扰;我试过了。看起来,当启用“仅2G”模式或只有可用信号是GPRS时,3G网络返回“connectionDisabled”。换句话说,'getReason()'不提供任何有用的信息。 –
[Android issue#8753 address this。](http://code.google.com/p/android/issues/detail?id=8753)我已经尝试了那里提出的建议,但在测试过的设备上,无论实际设置或连接状态如何,Setting.Secure.getInt()总是返回1。 –
后续:问题#8753表明'Settings.Secure.NETWORK_PREFERENCE'反映了这个设置。这个设置没有记录,但是当两个连接都可用时,似乎反映了'TYPE_WIFI'优先于'TYPE_MOBILE',而不是我正在寻找的。 –