为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Android应用程序中代替Wi-fi使用3G连接?

如何在Android应用程序中代替Wi-fi使用3G连接?

慕娘9325324 2019-10-08 14:54:07
如何在Android应用程序中代替Wi-fi使用3G连接?我想连接3G连接,是否有示例代码可以连接3G而不是Wi-fi?
查看完整描述

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接收)


我希望这有帮助。


查看完整回答
反对 回复 2019-10-08
  • 3 回答
  • 0 关注
  • 454 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信