2011-10-10 12 views
6
W/PackageManager(61): Not granting permission android.permission.SET_ACTIVITY_WATCHER to package 

Este es un ejemplo de un permiso que no se otorgará a las aplicaciones sin estar firmado con la firma de la plataforma. Dicho esto, me gustaría saber cómo cualquier aplicación que se ejecute en un dispositivo rooteado (con/system/bin/su y SuperUser.apk) puede recibir cualquiera de estos permisos.Permisos del sistema Android a través de Root

Process p = Runtime.getRuntime().exec("su"); 
p.waitFor(); 

Hacer esto le pide al diálogo con el superusuario "aceptar" o "rechazar", pero SecurityException s todavía se tiran.

Respuesta

2

Se puede declarar su aplicación para ejecutarse como una aplicación del sistema mediante el establecimiento de la sharedUserId como sigue en el AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="[your package name]" 
     android:sharedUserId="android.uid.system"> 

Más detalles se pueden encontrar aquí: How to sign Android app with system signature?

+2

¿Pude compilar esta aplicación y ejecutarla en cualquier dispositivo rooteado y distribuirla de forma segura en Android Market? No estoy haciendo una ROM personalizada, solo una aplicación para dispositivos rooteados. – Tom

+0

No. No puede distribuir aplicaciones con acceso a nivel de sistema en Android Market. – spatulamania

+1

Entonces eso no es lo que estoy buscando. Estoy buscando una forma de obtener esos permisos en un dispositivo rooteado, no uno que ejecute mi propio firmware. En cuanto a la distribución, mire SetCPU o la cantidad de aplicaciones de captura de pantalla, usan dichos permisos sin problemas. – Tom

1

es necesario copiar su archivo apk a '/ sistema/aplicaciones'. Se puede hacer programáticamente. puedes hacer esto solo si tienes permisos de root. una vez copiado, reinicia el dispositivo (el reinicio también se puede realizar programáticamente si tienes la raíz) y se te otorgarán todos los permisos mencionados en tu archivo de manifiesto. También puedes distribuir esto en el mercado.

+1

Sí, tuve este pensamiento, pero todavía hay algunos permisos que SOLO se otorgan a las aplicaciones firmadas con la firma de la plataforma. Si coloca su aplicación en/system/app, obtendrá algunos de ellos, pero no todos. También requiere un reinicio, que es un poco incómodo, y significa que su aplicación no se puede desinstalar sin una aplicación como Root Explorer. – Tom

+1

he estado usando esta técnica desde hace bastante tiempo y nunca encontré ningún permiso que no se haya otorgado. Lo que hago es proporcionar una configuración en mi menú para "rootear/desenraizar la aplicación". así que cuando el usuario hace clic en use-root-privileges, aparece una ventana emergente que dice que la aplicación se copiará a la carpeta del sistema y se reiniciará el dispositivo: Continuar/Cancelar. Similar para unroot también. Funciona muy bien conmigo, no tengo quejas todavía. –

+0

Estoy seguro de que podría hacerse bien, pero el reinicio y la imposibilidad de desinstalar fácilmente es demasiado para mí. Para empezar, ¿también tendría que copiar todos sus archivos de preferencias compartidas, caché, etc.? Eso, y todavía estoy cansado de que no se otorguen permisos en Manifest.permission como STATUS_BAR_SERVICE porque están designados como nivel de firma y no a nivel de sistema. – Tom

Cuestiones relacionadas