Index: src/org/adblockplus/android/ProxySettings.java |
diff --git a/src/org/adblockplus/android/ProxySettings.java b/src/org/adblockplus/android/ProxySettings.java |
deleted file mode 100644 |
index 5f08503bbc35381417a18d6cb8e9b7de1f0bd87f..0000000000000000000000000000000000000000 |
--- a/src/org/adblockplus/android/ProxySettings.java |
+++ /dev/null |
@@ -1,248 +0,0 @@ |
-/* |
- * This file is part of Adblock Plus <http://adblockplus.org/>, |
- * Copyright (C) 2006-2014 Eyeo GmbH |
- * |
- * Adblock Plus is free software: you can redistribute it and/or modify |
- * it under the terms of the GNU General Public License version 3 as |
- * published by the Free Software Foundation. |
- * |
- * Adblock Plus is distributed in the hope that it will be useful, |
- * but WITHOUT ANY WARRANTY; without even the implied warranty of |
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
- * GNU General Public License for more details. |
- * |
- * You should have received a copy of the GNU General Public License |
- * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. |
- */ |
- |
-package org.adblockplus.android; |
- |
-import java.lang.reflect.Constructor; |
-import java.lang.reflect.Method; |
- |
-import android.content.Context; |
-import android.content.Intent; |
-import android.net.ConnectivityManager; |
-import android.net.NetworkInfo; |
-import android.os.Parcelable; |
-import android.util.Log; |
- |
-public class ProxySettings |
-{ |
- private static final String TAG = Utils.getTag(ProxySettings.class); |
- |
- public static Object getActiveLinkProxy(final ConnectivityManager connectivityManager) throws Exception |
- { |
- /* |
- * LinkProperties lp = connectivityManager.getActiveLinkProperties() |
- */ |
- final Method method = connectivityManager.getClass().getMethod("getActiveLinkProperties"); |
- final Object lp = method.invoke(connectivityManager); |
- |
- final 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(final Object linkProperties) throws Exception |
- { |
- /* |
- * linkProperties.getHttpProxy(); |
- */ |
- final Method method = linkProperties.getClass().getMethod("getHttpProxy"); |
- final 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(final Context context) |
- { |
- Method method = null; |
- try |
- { |
- /* |
- * ProxyProperties proxyProperties = ConnectivityManager.getProxy(); |
- */ |
- method = ConnectivityManager.class.getMethod("getProxy"); |
- } |
- catch (final NoSuchMethodException e) |
- { |
- // This is normal situation for pre-ICS devices |
- return null; |
- } |
- catch (final Exception e) |
- { |
- // This should not happen |
- Log.e(TAG, "getProxy failure", e); |
- return null; |
- } |
- |
- try |
- { |
- final ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); |
- final Object pp = method.invoke(connectivityManager); |
- if (pp == null) |
- return null; |
- |
- return getUserProxy(pp); |
- } |
- catch (final Exception e) |
- { |
- // This should not happen |
- Log.e(TAG, "getProxy failure", e); |
- return null; |
- } |
- } |
- |
- /** |
- * Reads system proxy settings on Android 3.1+ using Java reflection. |
- * |
- * @param pp |
- * ProxyProperties object |
- * @return string array of host, port and exclusion list |
- * @throws Exception |
- */ |
- protected static String[] getUserProxy(final Object pp) throws Exception |
- { |
- final String[] userProxy = new String[3]; |
- |
- final String className = "android.net.ProxyProperties"; |
- final Class<?> c = Class.forName(className); |
- Method method; |
- |
- /* |
- * String proxyHost = pp.getHost() |
- */ |
- method = c.getMethod("getHost"); |
- userProxy[0] = (String) method.invoke(pp); |
- |
- /* |
- * int proxyPort = pp.getPort(); |
- */ |
- method = c.getMethod("getPort"); |
- userProxy[1] = String.valueOf(method.invoke(pp)); |
- |
- /* |
- * String proxyEL = pp.getExclusionList() |
- */ |
- method = c.getMethod("getExclusionList"); |
- userProxy[2] = (String) method.invoke(pp); |
- |
- if (userProxy[0] != null) |
- return userProxy; |
- else |
- return null; |
- } |
- |
- /** |
- * 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(final Context context, final String host, final int port, final String excl) |
- { |
- Method method = null; |
- try |
- { |
- /* |
- * android.net.LinkProperties lp = |
- * ConnectivityManager.getActiveLinkProperties(); |
- */ |
- method = ConnectivityManager.class.getMethod("getActiveLinkProperties"); |
- } |
- catch (final NoSuchMethodException e) |
- { |
- // This is normal situation for pre-ICS devices |
- return false; |
- } |
- catch (final Exception e) |
- { |
- // This should not happen |
- Log.e(TAG, "setHttpProxy failure", e); |
- return false; |
- } |
- try |
- { |
- final ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); |
- final Object lp = method.invoke(connectivityManager); |
- // There is no active link now, but device has native proxy support |
- if (lp == null) |
- return true; |
- |
- final String className = "android.net.ProxyProperties"; |
- final Class<?> c = Class.forName(className); |
- method = lp.getClass().getMethod("setHttpProxy", c); |
- if (host != null) |
- { |
- /* |
- * ProxyProperties pp = new ProxyProperties(host, port, excl); |
- */ |
- final Class<?>[] parameter = new Class[] { String.class, int.class, String.class }; |
- final Object args[] = new Object[3]; |
- args[0] = host; |
- args[1] = Integer.valueOf(port); |
- args[2] = excl; |
- final Constructor<?> cons = c.getConstructor(parameter); |
- final Object pp = cons.newInstance(args); |
- /* |
- * lp.setHttpProxy(pp); |
- */ |
- method.invoke(lp, pp); |
- } |
- else |
- { |
- /* |
- * lp.setHttpProxy(null); |
- */ |
- method.invoke(lp, new Object[] { null }); |
- } |
- |
- Intent intent = null; |
- final NetworkInfo ni = connectivityManager.getActiveNetworkInfo(); |
- switch (ni.getType()) |
- { |
- case ConnectivityManager.TYPE_WIFI: |
- intent = new Intent("android.net.wifi.LINK_CONFIGURATION_CHANGED"); |
- break; |
- case ConnectivityManager.TYPE_MOBILE: |
- // TODO We leave it here for future, it does not work now |
- // intent = new Intent("android.intent.action.ANY_DATA_STATE"); |
- break; |
- } |
- if (intent != null) |
- { |
- if (lp != null) |
- { |
- intent.putExtra("linkProperties", (Parcelable) lp); |
- } |
- context.sendBroadcast(intent); |
- } |
- |
- return true; |
- } |
- catch (final SecurityException e) |
- { |
- // This is ok for 4.1.2+, 4.2.2+ and later |
- return false; |
- } |
- catch (final Exception e) |
- { |
- // This should not happen |
- Log.e(TAG, "setHttpProxy failure", e); |
- return false; |
- } |
- } |
-} |