2012-02-17 9 views
8

Mi sembra che ci siano molte risorse confuse riguardo l'argomento proxy su Android.Il proxy di Android che confonde le risorse di documentazione

Prima di tutto, sembra che tutti i metodi della Proxy class sono dichiarati obsoleti e si suggerisce di:.

"Utilizza valori Java VM proxy standard per trovare l'host, la porta e elenco di esclusione Questo la chiamata ignora l'elenco di esclusione. "

Il funzionario java vm proxy values si può accedere nel modo seguente:

System.getProperty("http.proxyHost") 
System.getProperty("http.proxyPort") 
System.getProperty("http.nonProxyHosts") 

Questo potrebbe sembrare confermato dalla documentazione della ProxySelector class.

Ma provando su un dispositivo reale o un emulatore, questi valori mi sembrano sempre vuoti. Dopo aver guardato il codice sorgente di Android del nascosto ProxySelector activity, sembra che il proxy viene salvato nelle impostazioni sicure del sistema nel modo seguente:

Settings.Secure.putString(res, Settings.Secure.HTTP_PROXY, hostname); 

E solo una domanda firmata dal fornitore di sistema operativo in grado di scrivere a le impostazioni sicure. Gli sviluppatori possono accedere a queste impostazioni solo in modalità di lettura nel modo seguente:

Settings.Secure.getString(getApplicationContext().getContentResolver(),Settings.Secure.HTTP_PROXY); 

Qualcuno può chiarire se questa è la lettura corretta di come si può accedere alle impostazioni del proxy in Android? (Almeno sembra funzionare). Se questa è l'interpretazione corretta, perché la documentazione è così piena di errori?

+0

Ciao LeChuck Captain, utilizzando il Samsung S2 con Android 2.3.3 i metodi che si dicono restituiscono sempre null, ma perché? – Chris

+0

Purtroppo non ho un Samsung S2 per provare quello che hai detto, ma dal mio punto di vista potrebbe dipendere dalla personalizzazione della ROM effettuata da Samsung o dallo specifico Carrier. – lechuckcaptain

+0

@LeChuckCaptain ciao uomo, puoi darmi email? ho una domanda sulla tua libreria proxy. Grazie in anticipo. – Sajmon

risposta

2

Per ottenere i valori proxy, l'accesso alle proprietà del sistema dovrebbe funzionare; non dovrebbe essere necessario accedere alle impostazioni sicure. Se non è possibile utilizzare le proprietà del sistema per leggere le impostazioni del proxy effettuate tramite l'interfaccia utente normale del dispositivo, allora c'è un problema. I proxy sono per tipo di rete, quindi l'APN e il WiFi avranno impostazioni proxy separate.

+1

Per le versioni Android 1.X e 2.X sembra funzionare solo l'ultimo esempio, ottenere le impostazioni del proxy dal database delle impostazioni di sicurezza. Dalla versione 3.1 l'utente può inserire le impostazioni proxy per ciascun punto di accesso Wi-Fi, ma non è fornito (o almeno non è documentato) un modo per gli sviluppatori di accedere a queste impostazioni.Sto cercando di creare [questo] (http://code.google.com/p/android-proxy-library/) libreria per renderlo semplice, ma la mia domanda è: sto facendo bene o mi sono perso qualcosa nella documentazione? – lechuckcaptain

+1

Ahoy, Capitano. Penso che ciò che si ottiene da quei metodi System.getProperty() è solo il proxy predefinito per tale schema. Se non ottieni nulla, forse uno non è stato definito. Per ottenere il proxy per un URL specifico, fai qualcosa di simile a: proxyList = myProxySelector.select (httpUri); – Sparky

+0

Wow! Sembra funzionare, almeno su Android 3.X o versioni successive! Commento illuminante! Grazie ancora Sparky! Proverò a scrivere alcuni documenti ed esempi aggiuntivi, perché penso che non sia chiaro a molti altri sviluppatori come ottenere e usare queste impostazioni! – lechuckcaptain

2

Non so se è il modo "giusto" per accedere alle impostazioni del proxy ma è l'unico e giusto modo per accedere al sistema "impostazioni sicure".

Forse this è anche interessante, sembra che renda le cose più facili, soprattutto se ci sono i proxy Wifi (supporta Android qualcosa di simile?). Almeno sembra una grande astrazione per le varie versioni di Android.

+0

Oh fantastico! In realtà è il mio progetto. Speravo di trovare alcune risposte da qualcuno che conosce il problema e la piattaforma meglio di me. Spero di non essere il principale esperto del problema! – lechuckcaptain

+1

Oh, sembra che tu abbia vinto e devi fare un po 'più di ricerca allora;) Mi dispiace, non ho idea quindi:/ – Luminger

Problemi correlati