【问题标题】:Android proxy wifi vs mobile [closed]Android代理wifi与移动[关闭]
【发布时间】:2012-02-04 07:04:20
【问题描述】:

我知道 Android 中的代理支持一团糟,也很沮丧。我阅读了关于 SO 的大部分帖子,但我仍然感到困惑。

我想同时支持 Wifi 代理和移动代理,并且我知道在 Honeycomb 和 posthoneycomb 之前的代理支持有一些变化。我还读到,即使您拥有 android.permission.WRITE_SECURE_SETTINGS 权限,您也需要成为系统应用才能设置代理。

那么我可以从我的应用程序中为 wifi 和移动网络设置系统代理吗?蜂窝前和蜂窝后有什么区别?

获取 wifi 和移动网络的代理设置的首选方法是什么?蜂窝前后有什么区别?如果我想在我的应用程序中使用它,是否像在 httpClient 对象上设置代理参数一样简单?还有什么我需要做的吗?还是应该使用系统属性?

请考虑 Wifi 和移动代理可能不同的情况。

任何指向一个好的文档的指针(更新以反映自蜂窝以来的变化)都会非常有帮助。我没有找到任何好的。

【问题讨论】:

    标签: android mobile proxy wifi android-3.0-honeycomb


    【解决方案1】:

    通过反射,您可以获得每个 Wi-Fi 接入点的代理设置。这就是this library 所做的。您可以使用它轻松访问当前配置的代理设置。

    【讨论】:

    • 谢谢,LeChuck!抱歉,直到现在我才注意到我有一个新的答案。我刚刚下载了您最新的 APL 并尝试了您的测试应用程序。它列出了所有的 AP,但都说 NOT SET。我知道其中一个有代理设置。所以我需要仔细看看你的代码,看看为什么它不起作用。顺便说一句,我正在使用 Moto Xoom 对其进行测试,因为我认为 APL 仅适用于 API 级别 >=11。任何建议,将不胜感激。你的博客内容也很丰富。谢谢!
    • 另外,我刚刚发布了另一个关于代理的问题,如果你能看一下并提供一些启发,不胜感激*.com/questions/9544582/…
    • 是的,你是对的。从 API 级别 >= 11 开始引入每个 AP 的代理设置。对于 API 版本低于 *.com/questions/9446871/…。我希望一些谷歌人会回答(如果你对这个话题感兴趣,就投票吧!)
    • 刚刚投了赞成票。我加倍任何谷歌人都会回答这个问题:-) 我认为他们都是从他们的大老板那里得到命令的,而不是评论任何不在 sdk 中的东西。
    • 嗯,实际上 ProxySelector 类已进入 SDK。我们只需要了解它在 API 级别
    【解决方案2】:

    那么我可以从我的应用程序中为 wifi 和移动网络设置系统代理吗?

    不,除非您的应用是固件的一部分。

    蜂窝前和蜂窝后有什么区别?

    不是关于你是否可以设置它们。

    获取 wifi 和移动网络代理设置的首选方式是什么?

    AFAIK,只有一个可访问的代理设置,Settings.Secure.HTTP_PROXY,您可以通过在Settings.Secure 上调用getString() 获得。

    蜂窝前后有什么区别?

    我不知道。

    【讨论】:

    • 谢谢,CommonWare!那么使用 Setting.Secure 你会得到 Wifi 代理还是移动代理?我的理解是它仅适用于移动网络。在 Honeycomb 和 ICS 上,您可以为每个 wifi 热点设置 wifi 代理甚至 wifi 代理。你知道如何在我的代码中处理它吗?找不到任何好的文档。
    • @HowardLi:“在 Honeycomb 和 ICS 上,您可以为每个 wifi 热点设置 wifi 代理甚至 wifi 代理”——我在 SDK 或实际硬件上没有看到这方面的证据。
    • 我有安卓平板电脑,它正在运行 3.2(我没有尝试过 ICS)。因此,如果您进入 wifi 设置,长按热点/SSID,然后您会看到一个弹出窗口,选择手动修改(列表中的第二个),然后您可以为其设置 wifi 代理。我现在没有设备,所以我根据我的记忆输入它。有些细节可能会有些偏差,但我相信你可以做到。
    • @HowardLi:这些都没有记录;我不知道这意味着什么。对不起。