Oui, vous pouvez vraiment le faire. C'est un peu bizarre quand on inspecte le presse-papiers, mais ça marche très bien.
Tout d'abord, vous pouvez inspecter le contenu actuel du presse-papiers avec service call clipboard 1
à partir d'un shell adb (ou, sans se connecter au préalable, adb shell service call clipboard 1
). Il peut être vide au départ après un redémarrage, par exemple :
# service call clipboard 1
Result: Parcel(
0x00000000: 00000000 00000001 00000000 00000000 '................'
0x00000010: 00000000 00000000 '........ ')
#
Vous pouvez mettre du texte dans le presse-papiers en utilisant service call clipboard 2
qui prend essentiellement 3 paramètres - deux ints et la chaîne de caractères que vous voulez mettre dans le presse-papiers :
# service call clipboard 2 i32 1 i32 0 s16 "Hi there"
Result: Parcel(00000000 '....')
Pour être honnête, je ne suis pas sûr de ce que sont les deux premiers paramètres. Une réponse sur Stack Overflow a suggéré que le premier int est le "nombre d'articles dans le colis" (un dans ce cas) et que le second est la longueur de la chaîne. Cependant, j'ai utilisé 0 pour le deuxième paramètre et cela fonctionne bien, et je ne peux pas trouver de documentation qui corresponde à cette fonction particulière... donc prenez cela pour ce que ça vaut.
Dans tous les cas, il s'agit essentiellement de créer un objet Parcel avec 3 champs, puis de le passer dans le presse-papiers. Le presse-papiers dépaquette alors le Parcel et définit la valeur de la chaîne passée dans le presse-papiers comme le contenu du presse-papiers. Vous pouvez le constater lorsque vous récupérez la valeur par la suite :
# service call clipboard 1
Result: Parcel(
0x00000000: 00000000 00000001 00000000 00000008 '................'
0x00000010: 00690048 00740020 00650068 00650072 'H.i. .t.h.e.r.e.'
0x00000020: 00000000 00000000 '........ ')
#
De même, si vous appuyez longuement sur un champ de saisie de texte et que vous cliquez sur "Coller" après avoir fait cela, vous obtiendrez le texte qui a été défini via l'option call service clipboard 2
ligne ci-dessus (et cela aura l'air tout à fait normal).
(Les exemples ci-dessus proviennent de mon HTC EVO, exécutant CyanogenMod 7)
0 votes
Pour tous ceux qui cherchent des approches plus faciles pour les émulateurs, voyez ici : stackoverflow.com/questions/3391160/