En una respuesta me aconsejaron usar service call phone 2 s16 "$number"
. Funciona, pero service list
veo otras cosas útiles que no sé cómo usar y no puedo encontrar fácilmente la información en Internet.
No veo ninguna introspección service
aparte de service list
descubrirme ...
¿Dónde encontrar una descripción más completa de las llamadas de "servicio" y sus parámetros?
Respuestas:
En breve
En detalle
, enfrenté muchos problemas para saberlo y, por lo tanto, compartiré la solución con la ayuda del servicio de portapapeles.
Primero debe saber sobre el servicio que le interesa:
para eso debe buscar todo el servicio que está disponible para un sistema Android en particular escribiendo
Esto es lo que obtendrás:
Como estoy interesado en el servicio de portapapeles, así es como se ve
Entonces, desde aquí podemos resumir que el nombre del servicio es el servicio del portapapeles y la ruta del paquete es android.content.IClipboard
Entonces necesita saber la ruta completa donde está el IClipboard.aidl.
Para saber que necesita buscar en Google IClipboard.aidl.
Debe buscar algo en el sitio web android.googlesource.com en los resultados, como en mi caso:
Entonces, después de + / android-4.2.2_r1 es donde se encuentra su camino. Deje que ese camino sea path_of_clipboard.aidl =
Como estos códigos de llamada de servicio dependen del sistema de Android, por lo tanto, debe conocer el nombre de su sistema operativo Android: en mi caso, es 8.1.0,
así que iré al siguiente sitio web donde google coloca el código y seleccionaré mi versión del sistema operativo desde lado izquierdo de la página -
https://android.googlesource.com/platform/frameworks/base/
En mi caso es android-8.1.0_r50. Haré clic en él y luego mi URL se verá así
Y luego, después de agregar path_of_clipboard.aidl, mi URL completa se verá como
Aquí habrá muchos métodos en la interfaz. Como en mi caso
Por lo tanto, el código para el primer método, es decir, setPrimaryClip, será 1 como ocurrió en el primer lugar y para el último método, es decir, hasClipboardText, será 7 como ocurrió en el séptimo lugar en el archivo de ayuda. Del mismo modo para los otros métodos.
Entonces, si quiero llamar al séptimo método, escribiré
Como habrás visto, no he puesto el nombre del paquete de llamadas, ya que no es obligatorio.
Si el método necesita argumentos, puede pasarlo como se muestra en este ejemplo.
Supongamos un método cuyo código es 8 en el portapapeles y que se ve así:
Entonces lo llamaré así
Aquí i32 significa entero de 32 bits y s16 para la cadena. Podemos, incluso pasar el valor booleano como un entero como se muestra en el ejemplo.
En entero booleano 1 significa verdadero y 0 para falso.
SUGERENCIA Mantenga abierto el logcat (como en el estudio de Android) para verificar si se produjo algún error al ejecutar ese comando adb.
Fuente
fuente
El verdadero problema
service call
es que los códigos de transacción no solo no están documentados, sino que tampoco se garantiza que sean estables, sino que se pueden cambiar silenciosamente entre las versiones de Android. Debido a esto, losservice call
comandos nunca deben usarse, excepto para la depuración privada, cuando se sabe qué versión de Android se usa.Ejemplo:
(Aquí
FIRST_CALL_TRANSACTION
= 1, entonces el código de transacción real que se debe usar en elservice call phone
comando es el número que se ve en la fuente más 1.)Tenga en cuenta que en la nueva versión
TRANSACTION_supplyPuk
se insertó en el medio, y todos los siguientes códigos ahora se cambian por 1. Cualquier cosa que solíaservice call phone
realizar esas transacciones se romperá horriblemente cuando se use en Android 4.2.2: los mismos códigos darán como resultado métodos completamente diferentes , posiblemente con resultados desastrosos.fuente
service call
, pero que todavía permita hacer muchas cosas desde la consola de superusuario?No hay documentación Pero puede encontrar toda la información que busca en el código fuente de Android.
service list
te da el nombre del paquete. Entonces, por elphone
servicio que escom.android.internal.telephony.ITelephony
. Encontrará todos los parámetros posiblesservice call phone
enumeradoscom/android/internal/telephony/ITelephony.java
para su versión de Android.fuente