| Index: src/org/adblockplus/android/ProxySettings.java |
| =================================================================== |
| --- a/src/org/adblockplus/android/ProxySettings.java |
| +++ b/src/org/adblockplus/android/ProxySettings.java |
| @@ -31,9 +31,40 @@ |
| { |
| private static final String TAG = "ProxySettings"; |
| + public static Object getActiveLinkProxy(ConnectivityManager connectivityManager) throws Exception |
| + { |
| + /* |
| + * LinkProperties lp = connectivityManager.getActiveLinkProperties() |
| + */ |
| + Method method = connectivityManager.getClass().getMethod("getActiveLinkProperties"); |
| + Object lp = method.invoke(connectivityManager); |
| + |
| + Object pp = ProxySettings.getLinkProxy(lp); |
| + return pp; |
| + } |
| + |
| + /** |
| + * Reads proxy settings from link properties on Android 3.1+ using Java |
| + * reflection. |
| + * |
| + * @param linkProperties |
| + * android.net.LinkProperties |
| + * @return ProxyProperties |
| + * @throws Exception |
| + */ |
| + public static Object getLinkProxy(Object linkProperties) throws Exception |
| + { |
| + /* |
| + * linkProperties.getHttpProxy(); |
| + */ |
| + Method method = linkProperties.getClass().getMethod("getHttpProxy"); |
| + Object pp = method.invoke(linkProperties); |
| + return pp; |
| + } |
| + |
| /** |
| * Reads system proxy settings on Android 3.1+ using Java reflection. |
| - * |
| + * |
| * @return string array of host, port and exclusion list |
| */ |
| public static String[] getUserProxy(Context context) |
| @@ -77,7 +108,7 @@ |
| /** |
| * Reads system proxy settings on Android 3.1+ using Java reflection. |
| - * |
| + * |
| * @param pp |
| * ProxyProperties object |
| * @return string array of host, port and exclusion list |
| @@ -118,7 +149,7 @@ |
| /** |
| * Tries to set local proxy in system settings via native call on Android 3.1+ |
| * devices using Java reflection. |
| - * |
| + * |
| * @return true if device supports native proxy setting |
| */ |
| public static boolean setConnectionProxy(Context context, String host, int port, String excl) |
| @@ -147,7 +178,8 @@ |
| { |
| ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); |
| Object lp = method.invoke(connectivityManager); |
| - if (lp == null) // There is no active link now, but device has native proxy support |
| + if (lp == null) // There is no active link now, but device has native |
| + // proxy support |
| return true; |
| String className = "android.net.ProxyProperties"; |
| @@ -201,6 +233,11 @@ |
| return true; |
| } |
| + catch (SecurityException e) |
| + { |
| + // This is ok for 4.1.2+, 4.2.2+ and later |
| + return false; |
| + } |
| catch (Exception e) |
| { |
| // This should not happen |