Android Emulator'a metin yapıştırma


316

EditViewAndroid Emulator'da (masaüstü) pano içeriğini kopyalamanın / yapıştırmanın kolay bir yolu var mı ?

(sadece gelişimi / testi kolaylaştırmak için)


2
Joel Beckham-SMS gönder: > Ben genellikle sms mesajı olarak kopyalamak istediğim metni gönderiyorum> telnet üzerinden ve sonra sms mesajından metni kopyalarım. Telnet kullanmak yerine, emülatörde gelen bir sms'i simüle etmek için eclipse kullanabilirsiniz: Eclipse android araçlarında (sürüm 17, belki de eski sürümlerde) DDMS-Perspektifini açın. "Öykünücü denetimi" / "Telefon Eylemleri" altında, gelen bir sms benzetimi yapabilirsiniz> Öykünücü iletiyi aldıktan sonra, istediğiniz yere kopyalayıp yapıştırabilirsiniz> yapıştırın.
k3b

2
Şimdi bu soruya bakan herkes için; şu anda Android'de yerel olarak destekleniyor - burada belirtildiği gibi en son Android Studio / Emulator'u kullandığınızdan emin olun: stackoverflow.com/a/42678005/207552
bschandramohan

2
Metin alanına uzun basın ve Yapıştır
onmyway133

Yanıtlar:


126

Android Emulator ve x86 Google API Emulator sistem görüntüleri API Seviye 19 (Android 4.4 - Kitkat) ve üstü v25.3.x ile, masaüstünüzden fareniz veya klavyenizle kopyalayıp yapıştırabilirsiniz.

Bu özellik Android Studio 2.3 ile duyuruldu

Android Emulator ile Kopyalama ve Yapıştırma


27
Ocak 2018'den itibaren mevcut emülatör sürümünde bunun zaman zaman çalışmayı bıraktığı bilinen bir hata var. Geçici bir çözüm olarak, "..." simgesini tıklayın, Ayarlar'a gidin ve "Pano paylaşımını etkinleştir" ayarını kapatıp açın. ( Kaynak )
mhsmith

@mhsmith Android komut satırı araçlarıyla veya ~/.android/avd/ .inidosyaları düzenleyerek bunu komut satırından (pano paylaşımını sıfırla) nasıl yaparsınız ?
Chloe

@Chloe Bu sorun zaten çalışan bir emülatörle ilgili olduğundan, bunlardan birinin bir fark yaratacağından şüpheliyim.
msmsmith

1
Mac'e nasıl yapışırsınız? Cmd tuşuna basmak çoklu dokunmayı getirir. Cmd-V hiçbir şey yapmaz.
jcollum

17
@jcollum yapıştırmak istediğiniz metin alanını sol tıklayıp basılı tutun, 'Yapıştır'ı tıklayın. cmd + v çalışmaz, ikisi de ctrl + v olmaz, sanırım.
Liam Dawson

306

Bir terminale şunu yazın adb shell input text 'my string here. With some characters escaped like \$ that'

Metne boşluk eklemek için alternatif bir yöntemin %sher spacekarakterin yerine geçeceğini unutmayın.


22
Mac adb shell input text "kullanıyorsanız panonun içeriğini daha kolay yapıştırabilirsiniz: pbpaste"
lowellk

3
bugün birkaç saat sürdü ve uzay sorunları için python bir çözüm yazdı. bir düzine senkronizasyon hesabı oluşturmak zorunda kalmadan stok tarayıcılarına yer işaretlerini sonlandırmak çok daha kolay. github.com/gcb/AdbPaste (taklitçinin yüklenmesi ve birkaç çevrimiçi oyun oturumunun yüklenmesi için beklenirken yazılmıştır ...! $% # yavaş emülatör)
gcb

2
Bu, bazı UTF karakterleriyle çalışmıyor gibi görünüyor - göndermeye çalıştıktan sonra 'ლ\(ಠ益ಠლ\)', sadece 'Öldürüldü' diyor veya başarılı görünüyor ve hiçbir şey yazılmıyor, ne de öykünücüde geçirilebilecek bir şey yok. SMS yöntemi (DDMS denedim) burada çalışıyor gibi görünmüyor, "? (????)" olarak görüntüleniyor :(
Groxx

2
Ben de boşluklu dizeleri gönderemiyorum; % S kullanmalıyım.
Peter

2
@Peter ve Rose, yeni bir satır eklemenin bir yolu var mı? adb shell input text "This%sis%stext\nDoes%snot%work%here.""Bu metin \ nBurada çalışmıyor."
Firelord

84

Genellikle telnet üzerinden sms mesajı olarak kopyalamak istediğim metni gönderir ve daha sonra sms mesajından metni kopyalarım. Bunu nasıl yapacağınız aşağıda açıklanmıştır:

Telnet üzerinden bağlan:

  • Sözdizimi: telnet localhost <port>
  • Misal: telnet localhost 5554

(5554 varsayılan bağlantı noktasıdır. Öykünücünün başlık çubuğu kullanılan bağlantı noktasını gösterir, böylece farklı olup olmadığını görebilirsiniz).

Mesaj gönder:

  • Sözdizimi: sms send <senders phone number> <message>
  • Misal: sms send 1231231234 This is the message you want to send

(Sadece gönderenin telefon numarasını oluşturabilirsiniz)

İleti, tarayıcıya kopyalamak / yapıştırmak zorunda kalmadan otomatik olarak tıklayabileceğiniz bir köprüye dönüştürüldüğünden bağlantılar için bu gerçekten işe yarar.

Emülatör mesajı aldıktan sonra kopyalayabilir ve istediğiniz yere yapıştırabilirsiniz.


3
telnet'e bile ihtiyacınız yok ... ddms'den sms gönderebilirsiniz (ancak ddms'nin telnet'e ihtiyacı vardır). But nice idea :)
Tima

@Mur - bu harika bir fikir. Teşekkürler!
Joel Beckham

1
İlgilenen herkes için, bunu yapmak için bir kabuk komut dosyası oluşturdu: gist.github.com/2050770
Todd Mazierski

7
Bu cevap aşırı. kullanın adb. Cevabımı gör.
Rose Perrone

1
Overkill veya overkill, ancak özel karakterlerden kaçmaya gerek kalmadan metni olduğu gibi yapıştırmaya izin verir.
dmitry

28

İstediğiniz yerden kopyalayın, öykünücü telefonunun metnin gitmesini istediğiniz düzenleme metnine tıklayın ve basılı tutun (gerçek bir telefona yapıştırmak için basılı tuttuğunuz gibi), YAPIŞTIR seçeneği görünecek, ardından YAPIŞTIRACAK.


3
Teşekkür ederim! Kesinlikle benim en sevdiğim cevap. Emülatörün mevcut sürümü ile bu çok uygundur. (Geçerli öykünücü, öykünücü denetimlerinde "Ayarlar" altında pano paylaşımına izin veren bir ayara sahiptir.)
albert c braun

Komut tuşu varsayılan olarak dokunma hareketlerine başladığından Mac'e bu şekilde yapıştırabilirsiniz.
Jim

19

Bunun yararlı olup olmadığından emin değilsiniz, ancak masaüstü tarayıcısından mobil tarayıcıda açılması için uzun bir URL'ye ihtiyacınız varsa, bu URL ile SMS gönderebilir ve doğrudan mesaj uygulamasından açabilirsiniz.

resim açıklamasını buraya girin


Bu metni bile kopyalayabilirsiniz. Bu şekilde en basit ve en zor olanlardan birini buldum!
Hirbod Behnam

Bu hatayı aldım: "Mesaj gönderilemiyor, radyo kapalı" (MacBook'ta)
Atetc

Bu kesinlikle yararlı! Doğrudan emülatörün aynı arayüzünden, telnet yok, parametre yok. URL kullanım durumu da ihtiyaçlarımı karşılıyor. Çok etkili bir çözüm.
Alberto De Caro

11

Mac'te Android Studio kullanıyorsanız, adbyürütülebilir programın tam yolunu sağlamanız gerekebilir . Bu yolu bulmak için açın:

Android Studio > Tools > Android > SDK Manager

Yolu SDK konumuna kopyalayın. adbÇalıştırılabilir bir içinde olacak platform-toolsdizinde. Benim için yol buydu:

~/Library/Android/sdk/platform-tools/adb

Şimdi bu komutu çalıştırabilirsiniz:

~/Library/Android/sdk/platform-tools/adb shell input text 'thetextyouwanttopaste'

7

Bu sorundan sıkıldım, bu yüzden sadece bu takma adı işlemek için yaptım:

alias ap="pbpaste | xargs adb shell input text"

Daha sonra yeni bir terminal penceresi açtığınızda, "ap" yazmak panonuzdakini emülatörün aktif olarak seçilen metin alanına yapıştırır.

Kurmak

Takma adı her yerde kullanılabilir yapmak ~/.bash_profileiçin bunu profilinize ekleyin ( zsh kullanıcıları için olan çoğu kullanıcı için ~/.zshrc). Alternatif olarak, bir bash kullanıcısıysanız (MacOS için varsayılan), sizin için kurmak için terminalde aşağıdaki komutu çalıştırabilirsiniz:

echo "alias ap='pbpaste | xargs adb shell input text'" >> ~/.bash_profile && source ~/.bash_profile

veyaalias ap="adb shell input text `pbpaste`"
gderaco

'alias' is not recognized as an internal or external command, operable program or batch file. ne yapmak pencere ve takma ad kullanıyorum
shareef

6

Yalnızca API düzeyi> = 24 için

Yerel makinenizdeki herhangi bir metni kopyalayın ve ardından bu komutu çalıştırın

adb shell input keyevent 279

Android Emulator Ayarlarında Enable Clipboard Sharingseçeneklerin etkinleştirildiğinden emin olun


5

belki biraz zor olabilir, ancak emülatör kontrolünü kullanarak emülatöre bir sms gönderebilirsiniz. daha uzunsa ve öykünücüye kopyalayıp yapıştırabiliyorsanız tüm metni yeniden yazmanız gerekmez.

başka bir yol: "telnet localhost PORT" üzerinden öykünücüye bağlanın ve sonra öykünücüye bir metin giriş olayı göndermek için donanım olayı gönderme özelliğini kullanın (UTF-8 olması gerekir). bakmak bu


5

Bunu geçici çözümler olmadan da yapabilirsiniz. Yapıştır bildirimi görünene kadar giriş alanında bir parça için basılı tutup yapıştır'a tıklamanız yeterlidir. Bu kadar!


4

Linux'ta bu doğrudan panodan metin yapıştıracaktır

adb shell input text "'$(xclip -selection c -o)'"

Ayrıca, bu komutla global klavye kısa tuşu oluşturmak çok yararlıdır. Ctrl+Shift+Super+V



2

C2DM'ye baktınız mı? chrome2phone ve fox2phone bağlantılar ve pano metni gönderebilir ve otomatik olarak telefona kopyalayabilir. Ayrıca, adb kabuğunu kullanmayı deneyin. Hizmetleri (servis çağrısı panosu ...) kullanabilen bir servis komutu (/ system / bin / service) vardır. İşlem kodları sırasıyla getClipboardText, setClipboardText ve hasClipboardText için 1, 2 ve 3'tür.


1

Visual Studio Emulator kullanarak, İşte benim yöntem.

İlk Höyük Sanal SD Kart:

  1. Emülatör için Ek Araçları (küçük >> simgesi) kullanın ve SD Kart sekmesine gidin.
  2. Bilgisayarınızda sanal SD kartla senkronize edilecek bir klasör seçin.
  3. Seçilen klasörde bir klasör yapısı oluşturacak olan SD karttan çekin.

Metin aktarmak için bir metin dosyası ayarlayın:

  1. İstediğiniz bir metin düzenleyiciyi yüklemek için Google Play Store'u kullanın
  2. Daha önce oluşturduğunuz sanal sd kart dizininin indirme dizininde bilgisayarınızda metninizi içeren bir metin dosyası oluşturun.

Klip panosuna metin göndermem gerektiğinde.

  1. Yukarıda oluşturulan metin dosyasını düzenleyin.
  2. Ek Araçlar'a (küçük >> simgesi) gidin ve SD Karta Bas'ı seçin.
  3. Yüklediğim metin düzenleyicisinde metin dosyasını açın ve metni klibi panosuna kopyalayın. (İletişim kutusu açıldığında fareyi basılı tutun, tümünü seç'i seçin ve sonra kopya simgesini tıklayın)

Bir kez kurmak tekrarlamak oldukça kolaydır. Aynı yöntem diğer emülatörler için de geçerlidir, çünkü metin dosyanızı emülatöre itmek için farklı bir yöntem kullanmanız gerekebilir.


Ayrıca, kullandığım metin editörü içeriğin değiştiğini bana bildiriyor ve yeniden yüklemek isteyip istemediğimi soruyor.
Alexander Higgins

1

(yorum tartışmasını yanıtlamaya dönüştürme)

Windows'ta yalnızca çözüm: https://github.com/gcb/AdbPaste

bu sorunu çözmek için birkaç saat içinde yazdı. Şimdi% 100 linux'a geri döndüm, bu yüzden katkıda bulunan veya sürdüren olarak katılmaktan çekinmeyin!


Bunun için teşekkürler. Diğerlerine not: birden çok satır göndermek yavaştır. Yüklemek için 3 sayfalık bir LUA komut dosyası var ve bu çözüm bir dosya kaynağından yaklaşık 20 dakika sürer. Google'ın bu ihtiyacı gerçekten ele alması gerekiyor. Çok daha hızlı bir telnet arabirimine sahip açık kaynaklı bir Klavye uygulaması biliyorum, ancak klavyeyi açıp kapatmak ekstra bir adım haline geliyor.
RoundSparrow hilltx

1
Son yorumumda belirtilen hız sorununu çözmek için: Cihazda adb yayın komutundan pano içeriği alabilen küçük bir yardımcı uygulama koymanın çok daha hızlı olduğunu gördüm. Bu, AdbPaste'nin yaptığı gibi doğrudan giriş yerine panoya dolduruyor - ancak bir metin dosyasını okumak için onu geliştirebildim ve 3 sayfalık LUA komut dosyam için artık Android'de adb komutundan gitmek için sadece 1 veya 2 saniye sürüyor Metin kutusu. Uygulamanın kesme makinesi denir ve metin dosyasını okumak için geliştirilmiştir: github.com/RoundSparrow/clipper
RoundSparrow hilltx

1

Yazma komutu: adb device (o anda bağlı olan cihazı listeler) Metin yazmak istediğiniz Textbox'ı seçin. Write command: adb shell giriş metni "Yourtext" (bu komutu çalıştırmak için sadece bir cihazın bağlı olduğundan emin olun) Tamam!


0

Buraya aynı soruna bir çözüm aramaya geldim ve bu sorunu çözmek için bir Android uygulaması yazdım. Http://www.box.net/shared/6203bn441bfltkimajmk adresinden indirebilirsiniz . Web yanıtını kolayca değiştirebileceğiniz bir yeri göstermek için Tercihler menüsü aracılığıyla bir URL vermeniz yeterlidir. Web yanıtının ilk satırı sizin için öykünücünüzün panosuna kopyalanır. Daha fazla ayrıntı http://agilesc.barryku.com/?p=255 adresinde bulunabilir .


1
Burada yürütülebilir kod göndermemelisiniz. Kaynak kodu çok daha iyi olurdu.
lowellk

0

Mac ve Linux için bu işlevi aliases_bash dosyanızda deneyin (Mac millet için / etc / aliases_bash'te bulunur, sudo vim / etc / aliases_bash kullandığınızdan emin olun )

function adbtx {
  userinput="$(sed 's/ /%s/g' <<< $1)"
  adb shell input text "${userinput}";
}
export -f adbtx

Sonra komut satırına şunu girin:

adbtx 'Your text to emulator input'

' Emülatör girişine metniniz ' emülatör metin alanına girilir.

Kudos yerine sed yerine ikinci el dizisiyle Eliot'u seçti.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.