Android 如何区分onCreateInputConnection中的输入和WebView中的输入?
我有一个我的应用程序的摘录,它加载了一个HTML——我没有任何更改权限——有三个输入:电子邮件、密码和网络视图上的验证代码。最后一个永远是数字。我只想显示最后一个输入元素的数字键盘。我通过扩展WebView类并重写此方法来实现这一点,如下所示:Android 如何区分onCreateInputConnection中的输入和WebView中的输入?,android,webview,Android,Webview,我有一个我的应用程序的摘录,它加载了一个HTML——我没有任何更改权限——有三个输入:电子邮件、密码和网络视图上的验证代码。最后一个永远是数字。我只想显示最后一个输入元素的数字键盘。我通过扩展WebView类并重写此方法来实现这一点,如下所示: @Override public InputConnection onCreateInputConnection(EditorInfo outAttrs) { BaseInputConnection ic = new Ba
@Override
public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
BaseInputConnection ic = new BaseInputConnection(this, true);
outAttrs.inputType = InputType.TYPE_CLASS_NUMBER; // Tells the keyboard to show the number pad
return ic;
}
问题是,我不知道我可以检查哪个标志来区分HTML上的三种不同输入,所以我只能为validation code输入元素运行此代码。有什么想法吗?在javascript中捕获before focus事件,存储即将获得焦点的字段id,然后在onCreateInputConnection中使用该值来决定要显示的键盘类型 如果您没有更改源html的权限,您可以插入自己的javascript来设置focusin处理程序 比如,
public class MyWebView extends WebView
{
protected String m_szFocusInputID = "";
public void onStartLoad()
{
WebSettings oWebSettings = getSettings();
oWebSettings.setJavaScriptEnabled(true);
...
m_oClient = new WebViewClientEx();
setWebViewClient(m_oClient);
...
addJavascriptInterface(new JSBridge( ), "MyApp");
loadUrl("file:///android_asset/myfile.html");
}
@Override
public InputConnection onCreateInputConnection(EditorInfo oAttrs)
{
InputConnection oConn = super.onCreateInputConnection(oAttrs);
if ("someid".compareTo(m_szFocusInputID) == 0)
{
oAttrs.inputType = InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL;
}
return oConn;
}
private class WebViewClientEx extends WebViewClient
{
@Override
public void onPageFinished(WebView oView, String szUrl)
{
evaluateJavascript("$('#myinput1').focusin(function() { MyApp.onFocusIn(this.id); });", null);
}
}
public class JSBridge extends Object
{
...
@android.webkit.JavascriptInterface
public void onFocusIn(String szFocusInputID)
{
m_szFocusInputID = szFocusInputID;
}
}
}
您是否在此方法中找到了与区分WebView中的输入字段相关的内容
onCreateInputConnection
?遗憾的是,没有