我已经构建了一个应用程序,该应用程序曾经设置为设备所有者转身并使用 setRecommendedGlobalProxy() 函数设置全局代理设置,如下所示:
String pacUrl = "http://my-proxy-server.com:65011/proxy.pac?a=ZGtyZWl89xyy1qAZW15";
Uri pacUrl = Uri.parse(proxyPacUrl);
ProxyInfo newProxy = ProxyInfo.buildPacProxy(pacUrl);
try {
Log.i("ADMIN", "Setting global proxy to " + newProxy.toString());
mDPM.setRecommendedGlobalProxy(adminComponent, newProxy);
} catch (Exception e) {
Log.w("ADMIN", "Caught exception while setting global proxy: " + e.toString());
}
在我重新启动手机然后全局代理设置消失之前,这一切都很好。如果我通过ConnectivityManager.getDefaultProxy()检查全局代理设置,它会返回应用程序之前设置的代理 pac url,但即便如此,也没有网络流量被代理。
有趣的是,如果我转到设置 -> Google -> 安全 -> 验证应用程序,禁用“扫描设备以查找安全威胁”,重新启动设备,清除全局代理设置,然后重置全局代理设置,它们将一直有效,直到我重新-启用“扫描设备以查找安全威胁”并重新启动它。这对我来说毫无意义,因为它明确指出,如果发现任何安全风险,我会收到通知,而且我肯定还没有看到任何通知。
有几点值得一提:
我已经在各种设备上进行了测试,并且可以在所有设备上重现该问题。
正确签署 apk 然后安装它并不能解决问题。
一旦全局代理设置被破坏,我必须先清除然后重置它们,然后它们才能再次正常工作。
任何关于我做错了什么的建议或可能的想法都将受到欢迎!