类android.net.Proxy源码实例Demo

下面列出了怎么用android.net.Proxy的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: cronet   文件: ProxyChangeListener.java
private void registerReceiver() {
    if (mProxyReceiver != null) {
        return;
    }
    IntentFilter filter = new IntentFilter();
    filter.addAction(Proxy.PROXY_CHANGE_ACTION);
    mProxyReceiver = new ProxyReceiver();
    ContextUtils.getApplicationContext().registerReceiver(mProxyReceiver, filter);
}
 
源代码2 项目: letv   文件: NetworkUtils.java
public static boolean checkIsProxyNet(Context context) {
    boolean isAboveICS;
    String proxyAddress;
    ((WifiManager) context.getSystemService("wifi")).getConnectionInfo();
    if (VERSION.SDK_INT >= 14) {
        isAboveICS = true;
    } else {
        isAboveICS = false;
    }
    if (isAboveICS) {
        proxyAddress = System.getProperty("http.proxyHost");
    } else {
        proxyAddress = Proxy.getHost(context);
    }
    if (TextUtils.isEmpty(proxyAddress)) {
        return false;
    }
    return true;
}
 
源代码3 项目: letv   文件: q.java
private static HttpURLConnection a(URL url, String str) throws IOException {
    String replaceFirst;
    int i = 80;
    String defaultHost = Proxy.getDefaultHost();
    int defaultPort = Proxy.getDefaultPort();
    if (defaultPort == -1) {
        defaultPort = 80;
    }
    String host = url.getHost();
    int port = url.getPort();
    if (port != -1) {
        i = port;
    }
    if (str.indexOf(new StringBuilder(String.valueOf(host)).append(NetworkUtils.DELIMITER_COLON).append(i).toString()) != -1) {
        replaceFirst = str.replaceFirst(new StringBuilder(String.valueOf(host)).append(NetworkUtils.DELIMITER_COLON).append(i).toString(), new StringBuilder(String.valueOf(defaultHost)).append(NetworkUtils.DELIMITER_COLON).append(defaultPort).toString());
    } else {
        replaceFirst = str.replaceFirst(host, new StringBuilder(String.valueOf(defaultHost)).append(NetworkUtils.DELIMITER_COLON).append(defaultPort).toString());
    }
    try {
        HttpURLConnection httpURLConnection = (HttpURLConnection) new URL(replaceFirst).openConnection();
        httpURLConnection.setRequestProperty("X-Online-Host", new StringBuilder(String.valueOf(host)).append(NetworkUtils.DELIMITER_COLON).append(i).toString());
        return httpURLConnection;
    } catch (MalformedURLException e) {
        return null;
    }
}
 
源代码4 项目: letv   文件: HttpUtils.java
private static int a(Context context) {
    int i = -1;
    if (VERSION.SDK_INT >= 11) {
        Object property = System.getProperty("http.proxyPort");
        if (TextUtils.isEmpty(property)) {
            return i;
        }
        try {
            return Integer.parseInt(property);
        } catch (NumberFormatException e) {
            return i;
        }
    } else if (context == null) {
        return Proxy.getDefaultPort();
    } else {
        i = Proxy.getPort(context);
        if (i < 0) {
            return Proxy.getDefaultPort();
        }
        return i;
    }
}
 
源代码5 项目: MiBandDecompiled   文件: HttpUtils.java
private static String b(Context context)
{
    if (android.os.Build.VERSION.SDK_INT < 11)
    {
        if (context != null)
        {
            String s = Proxy.getHost(context);
            if (TextUtils.isEmpty(s))
            {
                s = Proxy.getDefaultHost();
            }
            return s;
        } else
        {
            return Proxy.getDefaultHost();
        }
    } else
    {
        return System.getProperty("http.proxyHost");
    }
}
 
源代码6 项目: CapturePacket   文件: ProxyUtil.java
@TargetApi(Build.VERSION_CODES.KITKAT)
private static boolean setProxyLollipop(final Context context, String host, int port) {
    System.setProperty("http.proxyHost", host);
    System.setProperty("http.proxyPort", port + "");
    System.setProperty("https.proxyHost", host);
    System.setProperty("https.proxyPort", port + "");
    try {
        Context appContext = context.getApplicationContext();
        Class applictionClass = Class.forName("android.app.Application");
        Field mLoadedApkField = applictionClass.getDeclaredField("mLoadedApk");
        mLoadedApkField.setAccessible(true);
        Object mloadedApk = mLoadedApkField.get(appContext);
        Class loadedApkClass = Class.forName("android.app.LoadedApk");
        Field mReceiversField = loadedApkClass.getDeclaredField("mReceivers");
        mReceiversField.setAccessible(true);
        ArrayMap receivers = (ArrayMap) mReceiversField.get(mloadedApk);
        for (Object receiverMap : receivers.values()) {
            for (Object receiver : ((ArrayMap) receiverMap).keySet()) {
                Class clazz = receiver.getClass();
                if (clazz.getName().contains("ProxyChangeListener")) {
                    Method onReceiveMethod = clazz.getDeclaredMethod("onReceive", Context.class, Intent.class);
                    Intent intent = new Intent(Proxy.PROXY_CHANGE_ACTION);
                    onReceiveMethod.invoke(receiver, appContext, intent);
                }
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
        return false;
    }

    return true;
}
 
源代码7 项目: cronet   文件: ProxyChangeListener.java
@Override
@UsedByReflection("WebView embedders call this to override proxy settings")
public void onReceive(Context context, final Intent intent) {
    if (intent.getAction().equals(Proxy.PROXY_CHANGE_ACTION)) {
        runOnThread(new Runnable() {
            @Override
            public void run() {
                proxySettingsChanged(ProxyReceiver.this, extractNewProxy(intent));
            }
        });
    }
}
 
源代码8 项目: letv   文件: LeService.java
private String detectProxy() {
    String proxyUrl = null;
    if (!TextUtils.isEmpty(Proxy.getDefaultHost())) {
        proxyUrl = String.format(FORMAT_PROXY_URL, new Object[]{Proxy.getDefaultHost(), Integer.valueOf(Proxy.getDefaultPort())});
    }
    LogTool.i(TAG, "detectProxy. detected the proxy url(%s)", proxyUrl);
    return TextUtils.isEmpty(proxyUrl) ? "" : URLEncoder.encode(proxyUrl);
}
 
源代码9 项目: letv   文件: HttpUtils.java
private static String b(Context context) {
    if (VERSION.SDK_INT >= 11) {
        return System.getProperty("http.proxyHost");
    }
    if (context == null) {
        return Proxy.getDefaultHost();
    }
    String host = Proxy.getHost(context);
    if (TextUtils.isEmpty(host)) {
        return Proxy.getDefaultHost();
    }
    return host;
}
 
源代码10 项目: AndroidHttpCapture   文件: ProxyUtils.java
@TargetApi(Build.VERSION_CODES.KITKAT)
private static boolean setProxyLollipop(final Context context, String host, int port) {
    System.setProperty("http.proxyHost", host);
    System.setProperty("http.proxyPort", port + "");
    System.setProperty("https.proxyHost", host);
    System.setProperty("https.proxyPort", port + "");
    try {
        Context appContext = context.getApplicationContext();
        Class applictionClass = Class.forName("android.app.Application");
        Field mLoadedApkField = applictionClass.getDeclaredField("mLoadedApk");
        mLoadedApkField.setAccessible(true);
        Object mloadedApk = mLoadedApkField.get(appContext);
        Class loadedApkClass = Class.forName("android.app.LoadedApk");
        Field mReceiversField = loadedApkClass.getDeclaredField("mReceivers");
        mReceiversField.setAccessible(true);
        ArrayMap receivers = (ArrayMap) mReceiversField.get(mloadedApk);
        for (Object receiverMap : receivers.values()) {
            for (Object receiver : ((ArrayMap) receiverMap).keySet()) {
                Class clazz = receiver.getClass();
                if (clazz.getName().contains("ProxyChangeListener")) {
                    Method onReceiveMethod = clazz.getDeclaredMethod("onReceive", Context.class, Intent.class);
                    Intent intent = new Intent(Proxy.PROXY_CHANGE_ACTION);
                    onReceiveMethod.invoke(receiver, appContext, intent);
                }
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
        return false;
    }

    return true;
}
 
源代码11 项目: FaceSlim   文件: WebViewProxyUtil.java
/**
 * Set Proxy for Android 5.0 and above.
 */
@SuppressWarnings("all")
private static boolean setLollipopWebViewProxy(Context appContext, String host, int port) {
    System.setProperty("http.proxyHost", host);
    System.setProperty("http.proxyPort", port + "");
    System.setProperty("https.proxyHost", host);
    System.setProperty("https.proxyPort", port + "");
    try {
        Class applictionCls = Class.forName("android.app.Application");
        Field loadedApkField = applictionCls.getDeclaredField("mLoadedApk");
        loadedApkField.setAccessible(true);
        Object loadedApk = loadedApkField.get(appContext);
        Class loadedApkCls = Class.forName("android.app.LoadedApk");
        Field receiversField = loadedApkCls.getDeclaredField("mReceivers");
        receiversField.setAccessible(true);
        ArrayMap receivers = (ArrayMap) receiversField.get(loadedApk);
        for (Object receiverMap : receivers.values()) {
            for (Object rec : ((ArrayMap) receiverMap).keySet()) {
                Class clazz = rec.getClass();
                if (clazz.getName().contains("ProxyChangeListener")) {
                    Method onReceiveMethod = clazz.getDeclaredMethod("onReceive", Context.class, Intent.class);
                    Intent intent = new Intent(Proxy.PROXY_CHANGE_ACTION);
                    /***** In Lollipop, ProxyProperties went public as ProxyInfo *****/
                    final String CLASS_NAME = "android.net.ProxyInfo";
                    Class cls = Class.forName(CLASS_NAME);
                    /***** ProxyInfo lacks constructors, use the static buildDirectProxy method instead *****/
                    Method buildDirectProxyMethod = cls.getMethod("buildDirectProxy", String.class, Integer.TYPE);
                    Object proxyInfo = buildDirectProxyMethod.invoke(cls, host, port);
                    intent.putExtra("proxy", (Parcelable) proxyInfo);
                    onReceiveMethod.invoke(rec, appContext, intent);
                }
            }
        }
    } catch (Exception e) {
        Log.e(LOG_TAG, "Setting proxy with >= 5.0 API failed with", e);
        return false;
    }
    Log.d(LOG_TAG, "Setting proxy with >= 5.0 API successful!");
    return true;
}
 
源代码12 项目: 365browser   文件: ProxyChangeListener.java
@Override
public void onReceive(Context context, final Intent intent) {
    if (intent.getAction().equals(Proxy.PROXY_CHANGE_ACTION)) {
        runOnThread(new Runnable() {
            @Override
            public void run() {
                proxySettingsChanged(ProxyReceiver.this, extractNewProxy(intent));
            }
        });
    }
}
 
源代码13 项目: 365browser   文件: ProxyChangeListener.java
private void registerReceiver() {
    if (mProxyReceiver != null) {
        return;
    }
    IntentFilter filter = new IntentFilter();
    filter.addAction(Proxy.PROXY_CHANGE_ACTION);
    mProxyReceiver = new ProxyReceiver();
    ContextUtils.getApplicationContext().registerReceiver(mProxyReceiver, filter);
}
 
源代码14 项目: droidel   文件: MediaPlayer.java
private void setupProxyListener(Context context) {
    IntentFilter filter = new IntentFilter();
    filter.addAction(Proxy.PROXY_CHANGE_ACTION);
    mProxyReceiver = new ProxyReceiver();
    mProxyContext = context;

    Intent currentProxy =
        context.getApplicationContext().registerReceiver(mProxyReceiver, filter);

    if (currentProxy != null) {
        handleProxyBroadcast(currentProxy);
    }
}
 
源代码15 项目: droidel   文件: MediaPlayer.java
private void handleProxyBroadcast(Intent intent) {
    ProxyProperties props =
        (ProxyProperties)intent.getExtra(Proxy.EXTRA_PROXY_INFO);

    if (props == null || props.getHost() == null) {
        updateProxyConfig(null);
    } else {
        updateProxyConfig(props);
    }
}
 
源代码16 项目: android-chromium   文件: ProxyChangeListener.java
private void registerReceiver() {
    if (mProxyReceiver != null) {
        return;
    }
    IntentFilter filter = new IntentFilter();
    filter.addAction(Proxy.PROXY_CHANGE_ACTION);
    mProxyReceiver = new ProxyReceiver();
    mContext.getApplicationContext().registerReceiver(mProxyReceiver, filter);
}
 
源代码17 项目: android-chromium   文件: ProxyChangeListener.java
private void registerReceiver() {
    if (mProxyReceiver != null) {
        return;
    }
    IntentFilter filter = new IntentFilter();
    filter.addAction(Proxy.PROXY_CHANGE_ACTION);
    mProxyReceiver = new ProxyReceiver();
    mContext.getApplicationContext().registerReceiver(mProxyReceiver, filter);
}
 
源代码18 项目: AndroidComponentPlugin   文件: ActivityThread.java
public void setHttpProxy(String host, String port, String exclList) {
    Proxy.setHttpProxySystemProperty(host, port, exclList);
}
 
源代码19 项目: AndroidComponentPlugin   文件: ActivityThread.java
public void setHttpProxy(String host, String port, String exclList) {
    Proxy.setHttpProxySystemProperty(host, port, exclList);
}
 
源代码20 项目: letv   文件: NetworkUtils.java
public static boolean isProxy() {
    return !TextUtils.isEmpty(Proxy.getDefaultHost());
}
 
源代码21 项目: Common   文件: NetworkUtils.java
private static boolean isWapNetwork(NetworkInfo networkInfo) {
    return isMobileNetwork(networkInfo) && !TextUtils.isEmpty(Proxy.getDefaultHost());
}
 
源代码22 项目: Android-Application-ZJB   文件: NetworkUtil.java
public static String[] getProxyHostAndPort(Context context) {
    return getNetworkType(context) == NetworkType.WIFI ?
            new String[]{"", "-1"}
            : new String[]{Proxy.getDefaultHost(), "" + Proxy.getDefaultPort()};
}
 
源代码23 项目: FaceSlim   文件: WebViewProxyUtil.java
/**
 * Set Proxy for Android 4.4 and above.
 */
@SuppressWarnings("all")
private static boolean setKitKatWebViewProxy(Context appContext, String host, int port) {
    System.setProperty("http.proxyHost", host);
    System.setProperty("http.proxyPort", port + "");
    System.setProperty("https.proxyHost", host);
    System.setProperty("https.proxyPort", port + "");
    try {
        Class applictionCls = Class.forName("android.app.Application");
        Field loadedApkField = applictionCls.getDeclaredField("mLoadedApk");
        loadedApkField.setAccessible(true);
        Object loadedApk = loadedApkField.get(appContext);
        Class loadedApkCls = Class.forName("android.app.LoadedApk");
        Field receiversField = loadedApkCls.getDeclaredField("mReceivers");
        receiversField.setAccessible(true);
        ArrayMap receivers = (ArrayMap) receiversField.get(loadedApk);
        for (Object receiverMap : receivers.values()) {
            for (Object rec : ((ArrayMap) receiverMap).keySet()) {
                Class clazz = rec.getClass();
                if (clazz.getName().contains("ProxyChangeListener")) {
                    Method onReceiveMethod = clazz.getDeclaredMethod("onReceive", Context.class, Intent.class);
                    Intent intent = new Intent(Proxy.PROXY_CHANGE_ACTION);

                    /*********** optional, may be need in future *************/
                    final String CLASS_NAME = "android.net.ProxyProperties";
                    Class cls = Class.forName(CLASS_NAME);
                    Constructor constructor = cls.getConstructor(String.class, Integer.TYPE, String.class);
                    constructor.setAccessible(true);
                    Object proxyProperties = constructor.newInstance(host, port, null);
                    intent.putExtra("proxy", (Parcelable) proxyProperties);
                    /*********** optional, may be need in future *************/

                    onReceiveMethod.invoke(rec, appContext, intent);
                }
            }
        }
    } catch (ClassNotFoundException | NoSuchFieldException | IllegalAccessException |
            IllegalArgumentException | NoSuchMethodException | InvocationTargetException |
            InstantiationException e) {
        Log.e(LOG_TAG, "Setting proxy with >= 4.4 API failed with error: ", e);
        return false;
    }

    Log.d(LOG_TAG, "Setting proxy with >= 4.4 API successful!");
    return true;
}
 
源代码24 项目: droidel   文件: MediaPlayer.java
@Override
public void onReceive(Context context, Intent intent) {
    if (intent.getAction().equals(Proxy.PROXY_CHANGE_ACTION)) {
        handleProxyBroadcast(intent);
    }
}
 
源代码25 项目: syncthing-android   文件: WebGuiActivity.java
/**
 * Set webview proxy and sites that are not retrieved using proxy.
 * Compatible with KitKat or higher android version.
 * Returns boolean if successful.
 * Source: https://stackoverflow.com/a/26781539
 */
@SuppressLint("PrivateApi")
public static boolean setWebViewProxy(Context appContext, String host, int port, String exclusionList) {
    if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
        // Not supported on android version lower than KitKat.
        return false;
    }

    Properties properties = System.getProperties();
    properties.setProperty("http.proxyHost", host);
    properties.setProperty("http.proxyPort", Integer.toString(port));
    properties.setProperty("https.proxyHost", host);
    properties.setProperty("https.proxyPort", Integer.toString(port));
    properties.setProperty("http.nonProxyHosts", exclusionList);
    properties.setProperty("https.nonProxyHosts", exclusionList);

    try {
        Class applictionCls = Class.forName("android.app.Application");
        Field loadedApkField = applictionCls.getDeclaredField("mLoadedApk");
        loadedApkField.setAccessible(true);
        Object loadedApk = loadedApkField.get(appContext);
        Class loadedApkCls = Class.forName("android.app.LoadedApk");
        Field receiversField = loadedApkCls.getDeclaredField("mReceivers");
        receiversField.setAccessible(true);
        ArrayMap receivers = (ArrayMap) receiversField.get(loadedApk);
        for (Object receiverMap : receivers.values()) {
            for (Object rec : ((ArrayMap) receiverMap).keySet()) {
                Class clazz = rec.getClass();
                if (clazz.getName().contains("ProxyChangeListener")) {
                    Method onReceiveMethod = clazz.getDeclaredMethod("onReceive", Context.class, Intent.class);
                    Intent intent = new Intent(Proxy.PROXY_CHANGE_ACTION);

                    String CLASS_NAME;
                    if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.KITKAT) {
                        CLASS_NAME = "android.net.ProxyProperties";
                    } else {
                        CLASS_NAME = "android.net.ProxyInfo";
                    }
                    Class cls = Class.forName(CLASS_NAME);
                    Constructor constructor = cls.getConstructor(String.class, Integer.TYPE, String.class);
                    constructor.setAccessible(true);
                    Object proxyProperties = constructor.newInstance(host, port, exclusionList);
                    intent.putExtra("proxy", (Parcelable) proxyProperties);

                    onReceiveMethod.invoke(rec, appContext, intent);
                }
            }
        }
        return true;
    } catch (Exception e) {
        Log.w(TAG, "setWebViewProxy exception", e);
    }
    return false;
}
 
源代码26 项目: android-chromium   文件: ProxyChangeListener.java
@Override
public void onReceive(Context context, Intent intent) {
    if (intent.getAction().equals(Proxy.PROXY_CHANGE_ACTION)) {
        proxySettingsChanged(extractNewProxy(intent));
    }
}
 
源代码27 项目: android-chromium   文件: ProxyChangeListener.java
@Override
public void onReceive(Context context, Intent intent) {
    if (intent.getAction().equals(Proxy.PROXY_CHANGE_ACTION)) {
        proxySettingsChanged(extractNewProxy(intent));
    }
}
 
源代码28 项目: travelguide   文件: DownloadThread.java
/**
 * Returns the preferred proxy to be used by clients. This is a wrapper
 * around {@link android.net.Proxy#getHost()}. Currently no proxy will be
 * returned for localhost or if the active network is Wi-Fi.
 * 
 * @param context the context which will be passed to
 *            {@link android.net.Proxy#getHost()}
 * @param url the target URL for the request
 * @note Calling this method requires permission
 *       android.permission.ACCESS_NETWORK_STATE
 * @return The preferred proxy to be used by clients, or null if there is no
 *         proxy.
 */
public HttpHost getPreferredHttpHost(Context context,
        String url) {
    if (!isLocalHost(url) && !mService.isWiFi()) {
        final String proxyHost = Proxy.getHost(context);
        if (proxyHost != null) {
            return new HttpHost(proxyHost, Proxy.getPort(context), "http");
        }
    }

    return null;
}
 
源代码29 项目: Alite   文件: DownloadThread.java
/**
    * Returns the preferred proxy to be used by clients. This is a wrapper
    * around {@link android.net.Proxy#getHost()}. Currently no proxy will be
    * returned for localhost or if the active network is Wi-Fi.
    * 
    * @param context the context which will be passed to
    *            {@link android.net.Proxy#getHost()}
    * @param url the target URL for the request
    * @note Calling this method requires permission
    *       android.permission.ACCESS_NETWORK_STATE
    * @return The preferred proxy to be used by clients, or null if there is no
    *         proxy.
    */
   @SuppressWarnings("deprecation")
public HttpHost getPreferredHttpHost(Context context,
           String url) {
       if (!isLocalHost(url) && !mService.isWiFi()) {
           final String proxyHost = Proxy.getHost(context);
           if (proxyHost != null) {
               return new HttpHost(proxyHost, Proxy.getPort(context), "http");
           }
       }

       return null;
   }
 
 类所在包
 同包方法