Je suis intéressé à apprendre à écrire dans le presse-papiers d'un appareil Android enraciné (et si possible à le lire).
J'espère le faire en utilisant ADB sur USB et je ne suis pas intéressé à installer des applications pour m'aider à le faire, car c'est quelque chose que je prévois de faire rarement.
Toute suggestion ou aide me guidant dans la bonne direction serait grandement appréciée.
adb
system
copy-paste
EarthmeLon
la source
la source
Réponses:
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: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: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:
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)
la source
'........U.n.k.n.' 'o.w.n. .p.a.c.k.' 'a.g.e. ..... ')
en faisantcall service clipboard 2
J'ai utilisé cette méthodologie, et cela a bien fonctionné en 4.x, mais a échoué pour moi en sucette. En cherchant une solution alternative, j'ai trouvé ceci: /programming/3391160/paste-text-on-android-emulator
ce n'est pas exactement comme vous le vouliez, mais pour moi, la plupart du temps, je veux copier du texte dans le presse-papiers parce que je veux le coller dans le champ du mot de passe.
en bonus supplémentaire, voici mon script ( édité le 24/04/2015 pour autoriser les espaces dans le texte ):
la source
echo "$TEXT" | adb shell xargs -0 input text
qui devrait gérer n'importe quel texte, à l'exception des caractères \ 0 (NUL). Malheureusement, les anciennes versions d'adb ne transmettent pas stdin à une commande spécifiée sur la ligne de commande adb. Ceci est corrigé dans les versions adb plus récentes, mais il a besoin d'Android N pour fonctionner .input
commande sur l'appareil Android, pas pour le shell utilisé paradb shell
. En outre, il n'est nécessaire que pour la version 22 et inférieure du SDK (Lollipop et ci-dessous, je crois) selon cette réponse .Voici une version améliorée du script par les galets ci-dessus. Comme avec ce script, il n'écrit pas dans le presse-papiers, mais envoie une entrée au champ de saisie actuellement focalisé, qui est souvent ce que vous voulez de toute façon.
Ce script est amélioré pour échapper les caractères spéciaux afin d'éviter de confondre le shell Android avec eux. Cela devrait permettre à toute chaîne d'être envoyée inchangée. Pour empêcher la
read
commande d'interpréter une barre oblique inverse (de fin), j'ai ajouté -r ici.Cela a été testé en utilisant la liste suivante de caractères spéciaux:
Voici le script:
la source
J'ai essayé et googlé un peu et il semble que l'approche du service de presse-papiers a cessé de fonctionner dans les androïdes plus récents, elle a échoué pour moi sur une version 4.4.4 d'Android. C'est-à-dire que vous aurez besoin d'une application pour obtenir l'accès au presse-papiers (lecture et écriture) depuis adb-shell. J'utilise clipper de majido sur github . L'apk est également hébergé, donc pas besoin de le compiler vous-même. Une fois installé, vous pouvez lui communiquer à l'aide de commandes de diffusion (l'application vous indiquera les commandes exactes). L'application ne nécessite pas de racine.
la source
Un autre script qui utilise
adb shell input
pour envoyer des caractères peut être trouvé ici: https://github.com/gcb/AdbPasteIl s'agit d'un script Python qui peut être cloné à partir de github, ou également téléchargé et exécuté directement:
la source