2012-03-14 12 views
6

In ICS è ora disponibile l'impostazione "Limita dati in background" nelle schermate Rete -> Impostazioni utilizzo dati.In ICS è possibile impostare l'impostazione "Limita dati in background" dal codice (programmaticamente)?

C'è un modo per impostare in modo programmatico "Limita dati in background" per la mia applicazione?

O

C'è un modo per far apparire i "utilizzo dei dati" impostazioni che ha l'opzione per la mia applicazione?

+0

Penso che questo possa esserti utile, anche se forse non abbastanza per rispondere alla tua domanda: http://developer.android.com/sdk/android-4.0.html#NetworkUsage –

+0

The developer.android.com/sdk /android-4.0.html#NetworkUsage sostituisce solo la schermata di utilizzo dei dati generici con un'app specifica. Quello che voglio è quello di far apparire quello generico che consente all'utente di accedere alle restrizioni integrate di Android. – pzulw

risposta

0

quanto riguarda la seconda opzione, si può guardare in questo intento

ACTION_MANAGE_NETWORK_USAGE

"Azione di attività: Mostra le impostazioni per la gestione l'uso di dati di rete di una specifica applicazione."

+0

ACTION_MANAGE_NETWORK_USAGE fa apparire un menu che elenca le applicazioni con quell'azione nei loro filtri di intent. – pzulw

+0

Questo è così che l'app delle impostazioni Android (utilizzo specifico dei dati) può avviare un'attività della tua app che monitora l'utilizzo dei dati. – Diederik

3

È possibile iniziare dalla pagina Panoramica delle informazioni tecniche di Android Data Usage.

Ogni driver di dispositivo di rete riporterà le sue statistiche di utilizzo al modulo xt_qtaguid nel kernel Linux di Android-3.0. Quindi, dal framework è possibile specificare regole aggiuntive per limitare il traffico di dati in background per un'applicazione.

Provare a fornire counterSet e UID parametri al metodo com.android.server.NetworkManagementSocketTaggersetKernelCounterSet(). Dove i valori counterSet sono definiti in android.net.NetworkPolicyManager e UID, l'ID applicazione viene ottenuto tramite ContextWrapper.getApplicationInfo().uid.

Spero che questo possa iniziare.

+0

Ho provato a implementarlo su un dispositivo non rootato tramite reflection, dato che 'NetworkManagementSocketTagger' non è esposto attraverso l'SDK. 'setKernelCounterSet()' viene eseguito, ma vedo in Logcat: 'I/qtaguid (25017): Failed write_ctrl (s 0 10183) res = -1 errno = 1' e' W/NetworkManagementSocketTagger (25017): setKernelCountSet (10183, 0) fallito con errno -1'. Non ho testato su un dispositivo rooted. –

Problemi correlati