2012-08-16 13 views
11

¿Hay alguna forma de acceder a la configuración del dispositivo mediante programación?¿Cómo acceder a la configuración del dispositivo mediante programación?

por ejemplo: Configuración> Opciones de desarrollo> Depuración USB> Verdadero/Falso

Gracias de antemano.

Editar: Depuración de USB es solo un ejemplo. ¿Puedo acceder a todas las configuraciones que existen en Configuración en el dispositivo?

+0

[Eche un vistazo a esto] (http://stackoverflow.com/q/3458275/940096) – Praveenkumar

+0

El enlace directo es [aquí] (https://groups.google.com/forum/#!topic/android) -developers/lTxvDrD6m-0). – ChuongPham

Respuesta

10

Settings.Secure.putInt(getActivity().getContentResolver(),Settings.Secure.ADB_ENABLED, 1);

Pero necesita acceso de root para hacer esto. Sólo aplicaciones del sistema tienen permiso para cambiar la configuración de seguridad

Editar: Prueba esto para mostrar todos los ANR

Settings.Secure.putInt(ContentResolver,Settings.Secure.ANR_SHOW_BACKGROUND,0);

y para no mantenemos actividades

ActivityManagerNative.getDefault().setAlwaysFinish(true)

pero ActivityManagerNative se oculta en la norma API conjunto. necesitarás hacer una reflexión o usar este method para obtener android.jar. Una vez más creo que esto necesita acceso root

+0

Gracias. Este código funciona pero escribí la depuración de USB como un ejemplo. La verdadera pregunta es, qué configuraciones son accesibles. ¿Puedo acceder a "No mantener actividades" o "Mostrar todos los ANR" también? – auy

+0

revisa la edición. – nandeesh

+0

'Settings.Secure.putInt (getActivity(). GetContentResolver(), Settings.Secure.ADB_ENABLED, 1);' no funcionará solo, ya que necesita firmar su aplicación con un certificado de plataforma Android, su aplicación tiene el apropiado configura en 'AndroidManifest.xml', y su aplicación está instalada en'/system/app' programmatically o manualmente. Ni siquiera puedes hacer esto con un dispositivo rooteado. – ChuongPham

3

Trate como:

 int adb = Settings.Secure.getInt(context.getContentResolver(), 
    Settings.Secure.ADB_ENABLED, 0); 
 // toggle the USB debugging setting 
adb = adb == 0 ? 1 : 0; 
 Settings.Secure.putInt(context.getContentResolver(), 
Settings.Secure.ADB_ENABLED, adb); 

En AndroidManifest.xml:

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

y finalmente mirar este ejemplo

http://code.google.com/p/secure-settings-widget/source/browse/src/com/lieryan/adbwidget/ADBAppWidgetProvider.java?r=eb23b2d6989ccade05f095806db5888f1ba62737

+1

Lo anterior no funcionará solo, ya que necesita firmar su aplicación con un certificado de plataforma Android, su aplicación tiene las configuraciones adecuadas en 'AndroidManifest.xml', y su aplicación está instalada en el'/system/app' programáticamente o a mano. – ChuongPham

0

Usted no se puede activar la depuración USB a menos que su aplicación es sistema de aplicación.

0

Esta línea de código puede ayudar:

Settings.Global.putInt(getContentResolver(), Global.ADB_ENABLED, 1); 

y que necesita este permiso:

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

pero después de la adición de este permiso en el manifiesto obtendrá este error: permiso sólo está concedido a las aplicaciones del sistema

que significa su aplicación debe ser una aplicación del sistema.

3

Sé que esta pregunta es antigua, pero es interesante.

La solución de Nandeesh funciona bien. Pero no funciona si quiere cambiar ciertas configuraciones como la depuración de USB. Tienes que usar el siguiente permiso.

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

Pero no funciona con aplicaciones que no sean del sistema. Sin embargo, es POSIBLE hacerlo si tiene acceso raíz. Puede probar this solución donde el autor resuelve exactamente lo mismo.

También puede probar https://github.com/alseambusher/adb-toggle

1

Si la aplicación es la aplicación del sistema a continuación, sólo tiene que hacer esto para activar/desactivar la depuración USB

Settings.Secure.putInt(getActivity().getContentResolver(),Settings.Secure.ADB_ENABLED, 1);

También necesita tener acceso root para hacer esto. Tengo un dispositivo rooteado y simplemente ejecuto SU para habilitar/deshabilitar la depuración de Usb.

Process proc = Runtime.getRuntime().exec(new String [] { "su", "-c", "setprop", "persist.service.adb.enable", "0"});

proc.waitFor();

Process proc2 = Runtime.getRuntime().exec(new String [] { "su", "-c", "stop", "adbd"});

proc2.waitFor();

Lo bueno es que no lo hace necesidad de colocar su aplicación en (/ system/priv-app /) Su aplicación simple decir (/ data/app) puede hacer esto.

Cuestiones relacionadas