【问题标题】:Set Android IP,DNS,GATEWAY setting programmatically以编程方式设置 Android IP、DNS、GATEWAY 设置
【发布时间】:2011-05-05 14:59:28
【问题描述】:

如何从android java设置wifi ip地址、dns地址、网关,即以编程方式,我没有找到任何能够存储值的方法。

【问题讨论】:

    标签: android set wifi ip


    【解决方案1】:

    您无法通过应用程序执行此操作。

    您希望手机上的应用程序随意更改手机设置吗?

    【讨论】:

    • 是的,我希望我的应用程序更改 wifi ip 设置.. 这不可能?
    • 我认为彼得试图说明的一点是,您不应该希望任意应用程序更改这些设置。
    • 好的,我想创建一个更改这些 n/w 设置(ip、dns、网关)的应用程序。创建不同的 wifi 配置配置文件。并且单击它会更改配置..我的应用程序的 60% 已完成,只需要一种方法或任何东西来更改这些设置
    • 是的,我们理解您想要做什么 - 这是不可能的。应用程序无法更改手机设置。
    • 这是有道理的。您可以使用 NDK - 这使您可以在 Android 下对 Linux 进行低级访问。警告:不要期望这会被记录或支持。他们甚至可能禁止你进入 Android Market(我知道我会的)。 developer.android.com/sdk/ndk/index.html
    【解决方案2】:

    不确定它是否会有所帮助,但可以在无线设置中为特定接入点手动设置替代 ip、网关、dns 等。您是否可以自动执行此操作或使用意图是另一个问题?

    我刚看到这个可能会有所帮助

    How can i call Wi-Fi settings screen from my application using Android

    【讨论】:

    • 谢谢,通过intent可以改变wifi设置吗?
    【解决方案3】:

    您可以通过编程方式更改系统设置。

    首先,您需要在“AndroidManifest.xml”中请求“WRITE_SETTINGS”权限:

    <uses-permission android:name="android.permission.WRITE_SETTINGS"/>
    

    然后您需要使用以下代码实际更改设置:

        android.provider.Settings.System.putString(getContentResolver(), android.provider.Settings.System.WIFI_USE_STATIC_IP, "0");
        android.provider.Settings.System.putString(getContentResolver(), android.provider.Settings.System.WIFI_STATIC_DNS1, "192.168.0.2");
        android.provider.Settings.System.putString(getContentResolver(), android.provider.Settings.System.WIFI_STATIC_DNS2, "192.168.0.3");
        android.provider.Settings.System.putString(getContentResolver(), android.provider.Settings.System.WIFI_STATIC_GATEWAY, "192.168.0.1");
        android.provider.Settings.System.putString(getContentResolver(), android.provider.Settings.System.WIFI_STATIC_NETMASK, "255.255.255.0");
        android.provider.Settings.System.putString(getContentResolver(), android.provider.Settings.System.WIFI_STATIC_IP, "1");
    

    可以通过相同的方法访问当前设置,但使用“getString”而不是“putString”。

    有关设置选项的信息,请访问此处的参考: Settings.System | Android Developers

    【讨论】:

    • @Flexiweb,兄弟。它不适用于 Android OS Ver 3 及更高版本。你也可以帮忙吗?
    • 这可能适用于“putString”,但我正在尝试 5.1.1 到“getString”,它为每一个都返回 null。
    【解决方案4】:

    下面的代码也可以做到这一点:

        WifiManager mWifiManager = (WifiManager)mContext.getSystemService(Context.WIFI_SERVICE);
        DhcpInfo dhcpInfo = mWifiManager.getDhcpInfo();
        int dns1 = dhcpInfo.dns1;
        int dns2 = dhcpInfo.dns2;
    

    【讨论】:

    • 这如何设置DNS值?
    【解决方案5】:

    android.provider.Settings.System.putString 现已弃用 这是新方法 https://developer.android.com/reference/android/net/wifi/WifiManager 我也不知道怎么用这个新方法,如果有人知道也请教给我

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-06
      • 2011-03-26
      • 2022-11-18
      • 2011-04-28
      • 2015-05-29
      • 2011-12-16
      相关资源
      最近更新 更多