Saya tertarik mempelajari cara menulis ke (dan jika mungkin, membaca dari) clipboard perangkat Android yang sudah di-root.
Saya berharap dapat melakukannya menggunakan ADB melalui USB dan saya tidak tertarik memasang aplikasi apa pun untuk membantu saya melakukan ini, karena ini adalah sesuatu yang saya rencanakan jarang dilakukan.
Setiap saran atau bantuan yang membimbing saya ke arah yang benar akan sangat dihargai.
adb
system
copy-paste
earthmeLon
sumber
sumber
Jawaban:
Ya, Anda sebenarnya bisa melakukan ini. Agak terlihat muram ketika Anda memeriksa clipboard, tapi itu berfungsi dengan baik.
Pertama, Anda dapat memeriksa konten clipboard saat ini dengan
service call clipboard 1
dari adb shell (atau, tanpa shelling terlebih dahulu,adb shell service call clipboard 1
). Awalnya mungkin kosong setelah reboot, misalnya:Anda dapat memasukkan teks ke clipboard menggunakan
service call clipboard 2
, yang pada dasarnya membutuhkan 3 parameter - dua int dan string yang ingin Anda tempatkan di clipboard:Sejujurnya, saya tidak yakin apa dua parameter pertama itu. Satu jawaban pada Stack Overflow telah menyarankan int pertama adalah "jumlah item dalam paket" (satu dalam hal ini) dan yang kedua adalah panjang string. Namun, saya telah menggunakan 0 untuk parameter kedua dan berfungsi dengan baik, dan saya tidak dapat menemukan dokumentasi yang cocok dengan fungsi khusus ini ... jadi ambillah sesuai nilainya.
Bagaimanapun, itu pada dasarnya membuat objek Parcel dengan 3 bidang, lalu meneruskannya ke clipboard. Clipboard kemudian membongkar Paket dan menetapkan nilai string yang diteruskan sebagai konten clipboard. Anda dapat melihat ini saat Anda mengambil nilai setelahnya:
Demikian pula, jika Anda menekan lama pada bidang entri teks dan menekan "Tempel" setelah melakukan ini, Anda akan mendapatkan teks yang ditetapkan melalui
call service clipboard 2
baris di atas (dan itu akan terlihat sangat normal).(Contoh di atas berasal dari HTC EVO saya, menjalankan CyanogenMod 7)
sumber
'........U.n.k.n.' 'o.w.n. .p.a.c.k.' 'a.g.e. ..... ')
saat membuatcall service clipboard 2
Saya menggunakan metodologi ini, dan itu bekerja dengan baik di 4.x, tetapi gagal bagi saya di lollipop. Saat mencari solusi alternatif, saya menemukan ini: /programming/3391160/paste-text-on-android-emulator
ini tidak persis seperti yang Anda inginkan, tetapi bagi saya sendiri, sebagian besar waktu saya ingin menyalin teks ke clipboard adalah karena saya ingin menempelkannya ke bidang kata sandi.
sebagai bonus tambahan, inilah skrip saya ( diedit 2015-04-24 untuk memungkinkan spasi dalam teks ):
sumber
echo "$TEXT" | adb shell xargs -0 input text
Yang harus menangani teks apa pun, kecuali untuk karakter \ 0 (NUL). Sayangnya, versi adb yang lebih lama tidak meneruskan stdin ke perintah yang ditentukan pada adb commandline. Ini diperbaiki dalam versi adb yang lebih baru, tetapi perlu Android N untuk bekerja .input
perintah pada perangkat Android, bukan untuk shell yang digunakan olehadb shell
. Juga, itu hanya diperlukan untuk SDK versi 22 dan di bawah (Lollipop dan di bawah, saya percaya) sesuai dengan jawaban ini .Berikut versi skrip yang diperbaiki oleh galet di atas. Seperti halnya skrip itu, skrip tidak menulis ke clipboard, tetapi mengirimkan input ke bidang input yang saat ini terfokus, yang seringkali merupakan apa yang Anda inginkan.
Skrip ini ditingkatkan untuk menghindari karakter khusus agar tidak membingungkan shell Android dengan mereka. Ini harus memungkinkan string apa pun untuk dikirim tidak berubah. Untuk mencegah
read
perintah menafsirkan backslash (trailing), saya menambahkan -r di sana.Ini diuji menggunakan daftar karakter khusus berikut:
Ini skripnya:
sumber
Saya telah mencoba dan googled sedikit dan tampaknya pendekatan layanan panggilan-clipboard berhenti bekerja di Android yang lebih baru, itu gagal bagi saya pada Android versi 4.4.4. Yaitu Anda akan memerlukan aplikasi untuk mendapatkan akses clipboard (baca dan tulis) dari adb-shell. Saya menggunakan clipper dari majido di github . Apk juga dihosting, jadi Anda tidak perlu mengompilasinya sendiri. Saat diinstal, Anda dapat berkomunikasi dengan menggunakan perintah broadcast (aplikasi akan memberi tahu Anda perintah yang tepat). Aplikasi tidak memerlukan root.
sumber
Skrip lain yang digunakan
adb shell input
untuk mengirim karakter dapat ditemukan di sini: https://github.com/gcb/AdbPasteIni adalah skrip Python yang dapat diklon dari github, atau juga langsung diunduh dan dijalankan:
sumber