2012-03-14 22 views
6

En ICS ahora existe la configuración "Restringir datos de fondo" en la red -> pantallas de configuración de uso de datos.En ICS, ¿es posible establecer la configuración "Restringir datos de fondo" desde el código (mediante programación)?

¿Hay alguna forma de establecer programáticamente "Restringir datos de fondo" para mi aplicación?

O

¿Hay alguna forma para que aparezca la configuración de "datos de uso" que tiene la opción para mi aplicación?

+0

Creo que esto te será de alguna utilidad, aunque posiblemente no sea suficiente para responder a tu pregunta: http://developer.android.com/sdk/android-4.0.html#NetworkUsage –

+0

The developer.android.com/sdk /android-4.0.html#NetworkUsage solo trata de reemplazar la pantalla genérica de uso de datos por una específica para la aplicación. Lo que quiero es mostrar el genérico que permite al usuario acceder a las restricciones integradas de Android. – pzulw

Respuesta

0

cuanto a su segunda opción, se puede buscar en este intento

ACTION_MANAGE_NETWORK_USAGE

"Acción Actividad: Mostrar la configuración para gestionar el uso de datos de red de una aplicación específica."

+0

ACTION_MANAGE_NETWORK_USAGE muestra un menú que enumera las aplicaciones con esa acción en sus filtros de intención. – pzulw

+0

Esto es para que la aplicación de configuración de Android (uso de datos específicamente) pueda iniciar una actividad de su aplicación que supervisa el uso de datos. – Diederik

3

Puede comenzar desde la vista general de Data Usage página de información técnica de Android.

Cada controlador de dispositivo de red informará sus estadísticas de uso al módulo xt_qtaguid en el núcleo Linux android-3.0. Luego, desde el marco, puede especificar reglas adicionales para restringir el tráfico de datos en segundo plano para una aplicación.

Intente proporcionar counterSet y UID params a com.android.server.NetworkManagementSocketTaggersetKernelCounterSet() método. Donde counterSet valores están definidos en android.net.NetworkPolicyManager y UID sería su id de aplicación obtenida a través de ContextWrapper.getApplicationInfo().uid.

Espero que esto lo haga comenzar.

+0

He intentado implementar esto en un dispositivo no rooteado mediante reflexión, ya que 'NetworkManagementSocketTagger' no está expuesto a través del SDK. 'setKernelCounterSet()' se ejecuta, pero veo en Logcat: 'I/qtaguid (25017): Falló write_ctrl (s 0 10183) res = -1 errno = 1' y' W/NetworkManagementSocketTagger (25017): setKernelCountSet (10183, 0) falló con errno -1'. No he probado en un dispositivo rooteado. –

Cuestiones relacionadas