2010-06-14 2 views
5

So che sfortunatamente rilevare e modificare la connessione dati programmaticamente (GPRS/UMTS) su vanilla Android non è possibile e la soluzione alternativa è modificare le impostazioni APN. Questa non è certo una bella soluzione.Rilevamento e modifica della connessione dati programmaticamente (GPRS/UMTS) su Android

Tuttavia sul mio dispositivo (Xperia X10) ho un'impostazione aggiuntiva vicino a "roaming dati", che consente di abilitare o disabilitare MMS e dati. Suppongo che questa sia una personalizzazione fatta da Sony Ericsson, e forse anche altri venditori hanno qualcosa del genere. C'è un modo per accedere a questa impostazione?

+0

Non attraverso lo standard Android Api n. –

+0

Sono d'accordo, ma nella domanda ho menzionato le impostazioni specifiche del venditore. – Wizard79

risposta

5

Non ho SE telefono, ma ho guardato nella sua discarica di sistema e:

  • In fonti AOSP ci sono due metodi interni di interfaccia com.android.internal.telephony: enableDataConnectivity() e disableDataConnectivity(). Questa interfaccia e la sua implementazione fanno parte del sistema.
  • Esistono anche due metodi con lo stesso nome di cui sopra in com.android.phone.PhoneInterfaceManager che fa parte dell'app Phone.apk. Questi metodi chiamano solo quelli sopra/di sistema.
  • Sony ha modificato com.android.phone.PhoneInterfaceManager.enableDataConnectivity(), quindi esegue un controllo aggiuntivo per il valore booleano memorizzato in sharedPreferences. Se è false, il metodo enableDataConnectivity() chiama sempre disableDataConnectivity() di com.android.internal.telephony.
  • Ovviamente questa booleana è controllata tramite la schermata delle preferenze: "MMS & dati". È memorizzato nel contenitore delle preferenze "com.android.phone_preferences" e la chiave di pref è: "data_service_key". Inoltre, quando si attiva questa casella di controllo, l'attività delle impostazioni chiama automaticamente i metodi da com.android.internal.telephony per cambiare immediatamente lo stato dei dati.

Se si desidera aggiungere widget di connessione dati o qualcosa di simile alla tua rom, quindi:

  • Hai bisogno di root.
  • È necessario "android.uid.phone" sharedUserId per accedere alle impostazioni precedenti.

Penso che sarebbe meglio modificare Phone.apk, quindi catturerà l'intento speciale di abilitare/disabilitare i dati. Dovrebbe impostare data_service_key boolean e chiamare uno dei metodi da com.android.internal.telephony. Questa dovrebbe essere una cosa abbastanza semplice da fare e quindi sarai in grado di creare widget, app e altre cose molto facilmente: useranno quell'intenzione speciale.

+0

Quindi non c'è modo di cambiare le impostazioni senza root ... – Wizard79

+0

Penso di no. Queste cose sono interni al sistema. – broot

+0

Anche se il programma utilizza l'interfaccia C nativa? –

Problemi correlati