Android APN 凭据与 Network ProxyInfo 用途不同
通过 Android 支持的接口读取网络代理配置,并将运营商接入凭据与 HTTP 代理账号分开保存。
Android 应用可能需要当前的代理地址,却并不拥有连接设置。应先从网络代理接口入手,而不是去寻找名为 user 或 password 的数据库列。
电话 APN 配置描述的是运营商接入。它的账号字段属于该配置,并不是 Wi-Fi、受管网络或应用私有连接中所选 HTTP 代理的通用凭据库。
| 所需信息 | 相关配置 |
|---|---|
| 运营商数据接入账号 | APN 设置,以及平台的访问限制 |
| 当前网络 HTTP 代理 | ConnectivityManager 与 ProxyInfo |
| 所选代理要求的登录 | 客户端支持的认证流程与已批准的账号来源 |
在受支持的 Android 版本上,ConnectivityManager.getDefaultProxy() 会返回适用的代理信息。结果可能不存在。ProxyInfo 可能描述直连端点或 PAC 配置,因此在把每个结果都当作主机加端口之前,应先检查它的形式。
ProxyInfo 并不暴露通用的用户名/密码对。如果所选服务要求认证,请通过应用支持的凭据安排获取预期账号。代理质询和运营商登录可能使用完全不同的身份。
这同样把发现与使用分开。原生 socket 或自带传输层的 SDK 不会仅因应用能读取 ProxyInfo 就具备代理感知能力。请把所选路由交给支持其协议和认证方式的客户端。
较早的示例会查询电话内容提供者,它们描述的是特定 Android 版本和权限。这些是有用的历史背景,但无法把 APN 账号变成无关代理所缺的密码。