Dans une réponse, on m'a conseillé d'utiliser service call phone 2 s16 "$number"
. Cela fonctionne, mais service list
je vois d'autres choses utiles que je ne sais pas utiliser et que je ne trouve pas facilement les informations sur Internet.
Je ne vois aucune introspection en service
dehors de service list
me découvrir ...
Où trouver une description plus complète des appels "de service" et de leurs paramètres?
Réponses:
En bref
En détail,
j'ai rencontré beaucoup de problèmes pour le savoir et je vais donc partager la solution avec l'aide du service de presse-papiers.
Vous devez d'abord connaître le service qui vous intéresse -
Pour cela, vous devez rechercher tous les services disponibles pour un système Android particulier en tapant
Voici ce que vous obtiendrez -
Comme je suis intéressé par le service de presse-papiers, voici à quoi il ressemble
Donc, à partir d'ici, nous pouvons résumer que le nom du service est service de presse-papiers et que le chemin du package est android.content.IClipboard
Ensuite, vous devez connaître le chemin complet où se trouve IClipboard.aidl.
Pour savoir que vous devez rechercher sur google IClipboard.aidl.
Vous devez rechercher quelque chose sur le site android.googlesource.com dans les résultats, comme dans mon cas-
Donc, après + / android-4.2.2_r1 se trouve votre chemin. Que ce chemin soit path_of_clipboard.aidl =
Étant donné que ces codes d'appel de service dépendent du système Android, vous devez donc connaître le nom de votre système d'exploitation Android. Dans mon cas, il s'agit de la version 8.1.0.
Je vais donc aller sur le site Web suivant où Google met du code et sélectionner ma version de système d'exploitation dans le côté gauche de la page -
https://android.googlesource.com/platform/frameworks/base/
Dans mon cas, c'est android-8.1.0_r50.Je clique dessus, puis mon URL ressemblera à ceci
Et puis après avoir ajouté path_of_clipboard.aidl, mon URL complète ressemblera à
Ici, il y aura de nombreuses méthodes dans l'interface, comme dans mon cas
Ainsi, le code de la première méthode, c'est-à-dire setPrimaryClip, sera 1 comme il est apparu à la première place et celui de la dernière méthode, c'est-à-dire hasClipboardText, sera 7 comme il est apparu à la septième place dans le fichier aidl. De même pour les autres méthodes.
Donc, si je veux appeler la septième méthode, je vais taper
Comme vous l'avez peut-être vu, je n'ai pas mis le nom de callingPackage car il n'est pas requis.
Si la méthode a besoin d'arguments, vous pouvez la passer comme indiqué dans cet exemple.
Supposons une méthode dont le code est 8 dans le presse-papiers et qui ressemble à ceci -
Donc je l'appellerai comme ça
Ici, i32 signifie entier 32 bits et s16 pour la chaîne. Nous pouvons même passer la valeur booléenne sous forme d'entier comme le montre l'exemple.
En entier booléen 1 signifie vrai et 0 pour faux.
CONSEIL Gardez le logcat ouvert (comme dans Android Studio) pour vérifier toute erreur survenue lors de l'exécution de la commande adb.
La source
la source
Le vrai problème
service call
est que les codes de transaction ne sont pas seulement non documentés, mais ne sont pas non plus garantis pour être stables - ils peuvent être modifiés en silence entre les versions d'Android. Pour cette raison, lesservice call
commandes ne doivent jamais être utilisées, sauf pour le débogage privé, lorsque vous savez quelle version d'Android est utilisée.Exemple:
(Ici
FIRST_CALL_TRANSACTION
= 1, donc le code de transaction réel qui devrait être utilisé dans laservice call phone
commande est le nombre vu dans la source plus 1.)Notez que dans la nouvelle version a
TRANSACTION_supplyPuk
été insérée au milieu, et tous les codes suivants sont maintenant décalés de 1. Tout ce qui utiliséservice call phone
pour effectuer ces transactions se cassera horriblement lorsqu'il est utilisé sur Android 4.2.2 - les mêmes codes entraîneront l'appel de méthodes complètement différentes , peut-être avec des résultats désastreux.la source
service call
, tout en permettant encore beaucoup de choses à faire à partir de la console superutilisateur?Il n'y a pas de documentation. Mais vous pouvez trouver toutes les informations que vous recherchez dans le code source Android.
service list
vous donne le nom du package. Donc pour lephone
service c'estcom.android.internal.telephony.ITelephony
. Vous trouverez tous les paramètres possibles pourservice call phone
répertoriés danscom/android/internal/telephony/ITelephony.java
votre version Android.la source