使用System.Global方法以编程方式设置Android代理设置

pej*_*jit 6 java settings proxy android android-4.4-kitkat

我正在处理一个应用程序,我可以访问ROM签名密钥.我想以编程方式更改Android的全局代理设置,并且碰到了"Settings.Global.HTTP_PROXY".我的应用程序将在Android KitKat设备上运行(4.4+)

现在我的代码中有:

WifiManager manager = (WifiManager)mContext.getSystemService(Context.WIFI_SERVICE);

if (!manager.isWifiEnabled()){
    Log.d(LOG_TAG, "Wifi not enabled.");
}
else{
    if (Settings.Global.putString(mContext.getContentResolver(), Settings.Global.HTTP_PROXY, proxySettings)){
        Log.d(LOG_TAG, "New Proxy Settings set");
    }
    else {
        Log.d(LOG_TAG, "New Proxy Settings failed to be written.");
    }
}
Run Code Online (Sandbox Code Playgroud)

并写在应用程序的清单文件中:

<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
Run Code Online (Sandbox Code Playgroud)

如前所述,我的应用程序使用系统密钥签名,因此没有权限问题.我已经在WIFI连接上手动设置代理设置到一些随机值,以测试代码执行时是否会发生变化.Logcat将返回:

08-25 21:27:57.595: V/Provider/Settings(7302): Global.putString(name=http_proxy, value=localhost:8008 for 0
Run Code Online (Sandbox Code Playgroud)

这意味着设置正在保存在数据库中,但是当我再次从"设置"应用程序检查代理设置时,先前设置的代理设置仍会显示,并且应用程序仍将使用较旧的代理设置.

还有什么我在这里缺少以编程方式设置全局Android代理设置?

谢谢!