3 回答
TA贡献1946条经验 获得超3个赞
T-Mobile的“我的帐户”应用会执行此操作,如果您已连接到WiFi连接,它将告诉您他们的程序无法通过WiFi运行,然后询问用户是否要关闭WiFi连接。如果您选择“否”,则应用程序退出;如果您选择“是”,则该应用程序将关闭您的WiFi连接,然后继续启动。
我认为这是一个很好的模型,它将确保您的应用程序不通过WiFi运行,并允许用户决定是否要关闭WiFi。此模型的一个改进是当用户离开您的应用时重新打开wifi。
我尚未测试以下代码,但看起来应该可以工作(从此处修改)
在清单中使用以下权限
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
这是一些打开/关闭WiFi的实际代码
private WifiManager wifiManager;
@Override
public void onCreate(Bundle icicle)
{
....................
wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
if(wifiManager.isWifiEnabled())
{
wifiManager.setWifiEnabled(false);
}
else
{
wifiManager.setWifiEnabled(true);
}
}
如果您不想沿着那条路线走,您似乎可以告诉电话您更喜欢使用移动数据网络而不是wifi网络。
Android ConnectivityManager提供了setNetworkPreference函数。确实没有记录此功能,因为您可以确定是否单击链接。我会尽量解决,因为定义的常量似乎暗示您可以将其设置为TYPE_MOBILE或TYPE_WIFI,并且还有一个DEFAULT_NETWORK_PREFERENCE常量,它也定义为0x00000001,与TYPE_WIFI相同。因此,尝试通过调用以下方式访问ConnectivityManager
Context.getSystemService(Context.CONNECTIVITY_SERVICE);
然后尝试使用setNetworkPreference()函数。
它似乎不需要清单中的任何权限,但可能需要CHANGE_NETWORK_STATE权限或类似的内容。
如果您起诉setNetworkPreference函数,则最好将网络首选项也设置回其原始值(从getNetworkPreference接收)
我希望这有帮助。
- 3 回答
- 0 关注
- 454 浏览
添加回答
举报