Oui, vous pouvez réellement le faire. C'est un peu maladroit lorsque vous inspectez le presse-papiers, mais cela fonctionne très bien.
Tout d'abord, vous pouvez inspecter le contenu actuel du presse-papiers à service call clipboard 1
partir d'un shell adb (ou, sans décortiquer en premier, adb shell service call clipboard 1
). Il peut commencer initialement vierge 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 à l'aide de service call clipboard 2
, qui prend essentiellement 3 paramètres - deux entrées et la chaîne que vous souhaitez 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 sais pas quels sont les deux premiers paramètres. Une réponse sur Stack Overflow a suggéré que le premier entier est "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 très bien, et je ne trouve aucune documentation qui correspond à cette fonction particulière ... alors prenez cela pour ce qu'il 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écompresse ensuite la parcelle et définit la valeur de chaîne transmise comme contenu du presse-papiers. Vous pouvez le voir lorsque vous allez récupérer 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 appuyez sur "Coller" après cela, vous obtiendrez le texte qui a été défini via la call service clipboard 2
ligne ci-dessus (et il aura l'air tout à fait normal).
(Les exemples ci-dessus proviennent de mon HTC EVO, exécutant CyanogenMod 7)