2014-03-31 78 views
6

中以编程方式向webView输入字段提供输入我需要以编程方式向webview输入控件提供输入。为此,我使用webView.dispatchKeyEvent(),它工作正常,直到Android 4.3版本,但它不是在4.4版本(Kitkat - Chromium webView)中工作。如何在Android Kitkat(4.4)

我看到的logcat下面的语句:

W/UnimplementedWebViewApi(9737): Unimplemented WebView method onKeyMultiple called from: android.webkit.WebView.onKeyMultiple(WebView.java:2179) 

我已经试过dispatchKeyEvent()的onkeydown(),但没有什么是4.4工作铬web视图,请有人可以让我知道,如果有一个以编程方式将输入发送到webView字段的方式。

请注意,我正在寻找任何网页的一般解决方案(例如:Facebook URL中的用户名和密码字段),我不知道输入控件的名称/ ID,因此无法使用简单的Javascript方法加载输入。

回答

4

您可以使用Instrumentation类。我已经用Android 4.4测试过了,它可以工作。

首先确保WebView具有焦点,然后拨打sendCharacterSync()发送单个按键事件。请注意,这些调用必须从后台线程(这是强制性的)完成

例如:

final Instrumentation instrumentation = new Instrumentation(); 

new Thread(new Runnable() 
{ 
    @Override 
    public void run() 
    { 
     instrumentation.sendCharacterSync(KeyEvent.KEYCODE_H); 
     instrumentation.sendCharacterSync(KeyEvent.KEYCODE_I); 
     instrumentation.sendCharacterSync(KeyEvent.KEYCODE_TAB); 
     instrumentation.sendCharacterSync(KeyEvent.KEYCODE_T); 
     instrumentation.sendCharacterSync(KeyEvent.KEYCODE_H); 
     instrumentation.sendCharacterSync(KeyEvent.KEYCODE_E); 
     instrumentation.sendCharacterSync(KeyEvent.KEYCODE_R); 
     instrumentation.sendCharacterSync(KeyEvent.KEYCODE_E); 
    } 
}).start(); 

唯一的问题是,你得到一个“打字机”效应(即字母逐一出现,而不是一次)。

+1

谢谢matiash,instrumentation.sendStringSync()为我工作。 – Harish

相关问题