Estoy tratando de leer WIFI configuración de proxy

  • Host Proxy
  • Puerto de Proxy
  • Proxy de usuario (autenticación)
  • Contraseña de Proxy (autenticación)

de los dispositivos en versiones de android 2.X.X – 4.X.X sin ningún éxito.

De llamadas:

String proxy = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.HTTP_PROXY);

Siempre devuelve null.

También he añadido a mi manifiesto de android:

<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />

todavía devuelve null.

También trató de:

android.net.Proxy. getHost(Context ctx)  which is deprecated  returns the IP
android.net.Proxy. getPortt(Context ctx)  which is deprecated  returns always -1.

Java llama:

System.getProperty("http.proxyHost");
System.getProperty("http.proxyCall");

También devuelve null.

Existe un código de trabajo que recupera todos estos valores o, al menos parcialmente, de los dispositivos en todas las versiones de android?

Hola user1222022. Has solucionado el problema?

OriginalEl autor user1222022 | 2012-05-30

3 Comentarios

  1. 13

    Me encontré con este proyecto: Android Proxy De La Biblioteca
    Que proporciona compatible formas de consultar la configuración de Proxy así como la fijación de ellos para WebViews en las versiones anteriores de Android.

        //Grab Proxy settings in a backwards compatible manner
        ProxyConfiguration proxyConfig = ProxySettings.getCurrentHttpProxyConfiguration( context );
    
        //Set Proxy for WebViews on older versions of Android
        ProxyUtils.setWebViewProxy( getActivity().getApplicationContext() );

    Sin embargo, no es algo que usted debe entender acerca de la Configuración de Proxy configurado en una WiFi AP. Desde el WiFi de la específica Configuración de Proxy no se aplicaron en Android adecuada hasta 3.1, todos los pre-3.1 dispositivos que exponer que la funcionalidad está utilizando algún tipo de personalizado hack. Ellos no trabajan en cualquier tipo de forma estándar. Las bibliotecas como esto no va a ser capaz de agarrar cualquier conjunto de proxy de uno de los hacks.

    Sin embargo, existe un Amplio Sistema de Proxy en pre-3.1 que este tipo de biblioteca SE agarrar. Por supuesto, Android se vio obligado a no proporcionar cualquier forma oficial para modificar esta configuración. Pero hay apps en el Play Store que te permitirá hacerlo, este es el que estoy usando: Configuración De Proxy y funciona bien, la configuración del Proxy del Sistema y le permite apoderarse de ella, ya sea a través de esta biblioteca, o incluso los métodos más sencillos como la consulta de la JVM configuración de proxy.

    Terminé por no uso de la APL y en su lugar entró con una forma mucho más simple de aplicación:

        private static final boolean IS_ICS_OR_LATER = Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH;
    
        ...
    
        String proxyAddress;
        int proxyPort;
    
        if( IS_ICS_OR_LATER )
        {
            proxyAddress = System.getProperty( "http.proxyHost" );
    
            String portStr = System.getProperty( "http.proxyPort" );
            proxyPort = Integer.parseInt( ( portStr != null ? portStr : "-1" ) );
        }
        else
        {
            proxyAddress = android.net.Proxy.getHost( context );
            proxyPort = android.net.Proxy.getPort( context );
        }
    Hola, soy el desarrollador que creó el Android Proxy de la Biblioteca. Algunas más información acerca de la APL se puede encontrar en el sitio oficial del proyecto: http://www.android-proxy.com
    el IS_ICS_OR_LATER método no funciona en 2.3.4
    Usted tiene que estar dirigidas a una posterior versión del sistema operativo de curso, con el mínimo de versión menor. Hemos probado y utilizado esta de vuelta a la API de nivel 7 (2.1) y se sigue utilizando de forma activa en la API 8 & 9 (2.2 & 2.3) por lo que definitivamente funciona.
    Estoy usando esta pieza exacta del código y mi manifiesto es como este <uses-sdk android:minSdkVersion=»6″ android:targetSdkVersion=»17″ /> y estoy compilando en Android 2.2, pero todavía no funciona.
    ¿Cuál es el error de su obtención?

    OriginalEl autor Adam

  2. 3

    Esto es lo que estoy usando:

    public static String[] getUserProxy(Context context)
    {
    Method method = null;
    try
    {
    method = ConnectivityManager.class.getMethod("getProxy");
    }
    catch (NoSuchMethodException e)
    {
    //Normal situation for pre-ICS devices
    return null;
    }
    catch (Exception e)
    {
    return null;
    }
    try
    {
    ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    Object pp = method.invoke(connectivityManager);
    if (pp == null)
    return null;
    return getUserProxy(pp);
    }
    catch (Exception e)
    {
    return null;
    }
    }
    private static String[] getUserProxy(Object pp) throws Exception
    {
    String[] userProxy = new String[3];
    String className = "android.net.ProxyProperties";
    Class<?> c = Class.forName(className);
    Method method;
    method = c.getMethod("getHost");
    userProxy[0] = (String) method.invoke(pp);
    method = c.getMethod("getPort");
    userProxy[1] = String.valueOf((Integer) method.invoke(pp));
    method = c.getMethod("getExclusionList");
    userProxy[2] = (String) method.invoke(pp);
    if (userProxy[0] != null)
    return userProxy;
    else
    return null;
    }
    Trabajó para mí… Bueno uso de la reflexión sobre la API < 21, sin externas de la biblioteca de la dependencia.
    ¿Cuál es el equivalente para Android Malvavisco ?

    OriginalEl autor MChan

  3. 0

    Siguiente fragmento de código para recuperar los detalles del proxy

    public static String getProxyDetails(Context context) {
    String proxyAddress = new String();
    try {
    if (IsPreIcs()) {
    proxyAddress = android.net.Proxy.getHost(context);
    if (proxyAddress == null || proxyAddress.equals("")) {
    return proxyAddress;
    }
    proxyAddress += ":" + android.net.Proxy.getPort(context);
    } else {
    proxyAddress = System.getProperty("http.proxyHost");
    proxyAddress += ":" + System.getProperty("http.proxyPort");
    }
    } catch (Exception ex) {
    //ignore
    }
    return proxyAddress;
    }

    Devolverá enmpty si algunos de excepción o sin proxy detectado;

    Lo IsPreIcs? por cierto, ¿sabes si mediante programación puedo saber si un wifi de servicios blockeds como whatsapp instagram, etc..?

    OriginalEl autor Pawan Maheshwari

Dejar respuesta

Please enter your comment!
Please enter your name here