Jestem zainteresowany nauczeniem się, jak pisać (i jeśli to możliwe, czytać) w schowku zrootowanego urządzenia z Androidem.
Mam nadzieję, że zrobię to przy użyciu ADB przez USB i nie jestem zainteresowany instalacją żadnych aplikacji, które by mi to pomogły, ponieważ rzadko planuję to robić.
Wszelkie sugestie lub wskazówki, które poprowadzą mnie we właściwym kierunku, będą mile widziane.
adb
system
copy-paste
earthmeLon
źródło
źródło
Odpowiedzi:
Tak, możesz to zrobić. Podczas przeglądania schowka wygląda to trochę nieprzyzwoicie, ale działa dobrze.
Po pierwsze, możesz sprawdzić bieżącą zawartość schowka za
service call clipboard 1
pomocą powłoki adb (lub, bez uprzedniej powłokiadb shell service call clipboard 1
). Może początkowo być pusty po ponownym uruchomieniu, na przykład:Możesz wstawić tekst do schowka
service call clipboard 2
, który w zasadzie zajmuje 3 parametry - dwie liczby całkowite i ciąg znaków, który chcesz umieścić w schowku:Szczerze mówiąc, nie jestem pewien, jakie są pierwsze dwa parametry. Jedna odpowiedź na temat przepełnienia stosu sugeruje, że pierwszą liczbą całkowitą jest „liczba elementów w paczce” (jedna w tym przypadku), a drugą jest długość łańcucha. Jednak użyłem 0 dla drugiego parametru i działa dobrze i nie mogę znaleźć żadnej dokumentacji, która pasowałaby do tej konkretnej funkcji ... więc weź to za to, co jest warte.
W każdym razie zasadniczo tworzy obiekt Parcel z 3 polami, a następnie przekazuje go do schowka. Schowek następnie rozpakowuje działkę i ustawia wartość ciągu przekazywaną jako zawartość schowka. Możesz to zobaczyć, gdy później pobierzesz wartość:
Podobnie, jeśli naciśniesz długo pole wprowadzania tekstu i klikniesz „Wklej” po wykonaniu tej czynności, otrzymasz tekst ustawiony za pomocą
call service clipboard 2
powyższej linii (i będzie wyglądał zupełnie normalnie).(Powyższe przykłady pochodzą z mojego HTC EVO z systemem CyanogenMod 7)
źródło
'........U.n.k.n.' 'o.w.n. .p.a.c.k.' 'a.g.e. ..... ')
przy robieniucall service clipboard 2
Użyłem tej metodologii, która działała dobrze w wersji 4.x, ale w Lollipopie zakończyła się niepowodzeniem. Szukając alternatywnego rozwiązania, znalazłem to: /programming/3391160/paste-text-on-android-emulator
nie jest dokładnie tak, jak tego chciałeś, ale dla mnie najczęściej chcę skopiować tekst do schowka, ponieważ chcę go wkleić w polu hasła.
jako dodatkowy bonus, oto mój skrypt ( edytowany 24.04.2015, aby umożliwić spacje w tekście ):
źródło
echo "$TEXT" | adb shell xargs -0 input text
Które powinno obsługiwać dowolny tekst, z wyjątkiem znaków \ 0 (NUL). Niestety starsze wersje adb nie przekazują standardowego wejścia do polecenia określonego w wierszu polecenia adb. Zostało to poprawione w nowszych wersjach ADB ale potrzebuje Android N do pracy .input
polecenia na urządzeniu z Androidem, a nie dla powłoki używanej przezadb shell
. Jest również potrzebny tylko dla SDK w wersji 22 i niższej (wierzę, że Lollipop i poniżej) zgodnie z tą odpowiedzią .Oto ulepszona wersja skryptu przez galety powyżej. Podobnie jak w przypadku tego skryptu, nie zapisuje do schowka, ale wysyła dane wejściowe do aktualnie skupionego pola wejściowego, które i tak często jest pożądane.
Ten skrypt został ulepszony, aby uciec od znaków specjalnych, aby zapobiec pomyleniu z nimi powłoki Androida. To powinno pozwolić na wysłanie dowolnego łańcucha bez zmian. Aby zapobiec
read
interpretacji polecenia (końcowego) ukośnika odwrotnego, dodałem tam -r.Zostało to przetestowane przy użyciu następującej listy znaków specjalnych:
Oto skrypt:
źródło
Próbowałem trochę i przejrzałem google i wydaje się, że podejście do obsługi połączeń przestało działać w nowszych androidach, nie udało mi się to na Androidzie w wersji 4.4.4. Czyli potrzebujesz aplikacji, aby uzyskać dostęp do schowka (odczyt i zapis) z powłoki adb. Używam maszynki do strzyżenia z majido na github . APK jest również hostowany, więc nie musisz go kompilować samodzielnie. Po zainstalowaniu możesz się z nim komunikować za pomocą poleceń rozgłoszeniowych (aplikacja poda dokładne polecenia). Aplikacja nie wymaga rootowania.
źródło
Inny skrypt służący
adb shell input
do wysyłania znaków można znaleźć tutaj: https://github.com/gcb/AdbPasteTo jest skrypt w języku Python, który można klonować z github lub bezpośrednio pobrać i uruchomić:
źródło