繁体   English   中英

科尔多瓦android禁用软键盘

[英]Cordova android disable softkeyboard

我正在使用Cordova构建一个android应用。 此应用程序将在具有物理数字键盘的坚固型扫描仪上使用。 我的问题是,当我触发焦点时,会触发软键盘。

现在,我试图制作一个插件来启用/禁用软键盘:

/**
package com.example;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.view.View;
import android.view.inputmethod.InputMethodManager;

import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaInterface;
import org.apache.cordova.CordovaPlugin;
import org.apache.cordova.CordovaWebView;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

public class KeyboardPlugin extends CordovaPlugin {

  private View mView;
  private Context mCordova;
  private Boolean status;

  @Override
  public void initialize (CordovaInterface cordova, CordovaWebView webView) {
    mView = webView.getView();
    mCordova = cordova.getActivity().getApplicationContext();
  }

  @Override
  public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
    InputMethodManager imm = (InputMethodManager)mCordova.getSystemService(Context.INPUT_METHOD_SERVICE    );
    if (action.equals("enable")) {
      status = true;
      imm.hideSoftInputFromWindow(mView.getWindowToken(),  InputMethodManager.HIDE_IMPLICIT_ONLY);
    } else if (action.equals("disable")){
      status = false;
      imm.hideSoftInputFromWindow(mView.getWindowToken(), 0);
    }
    return false;
  }
}

有人已经这样做了吗? 有一些关于它的线程,但是它们都确实是旧版本的旧版本的android和cordova。

没有错误,它只是无所事事。

我有一个实现相同功能的插件。 您可以在此处查看代码。

Activity activity = this.cordova.getActivity();
InputMethodManager imm = (InputMethodManager)activity.getSystemService(Context.INPUT_METHOD_SERVICE);

View view;
try {
    view = (View)webView.getClass().getMethod("getView").invoke(webView);
}
catch (Exception e){
    view = (View)webView;
}

if("hide".equals(action)){
    imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
    callbackContext.success();
    return true;
}
callbackContext.error(action + " is not a supported action");
return false;

我看到的唯一主要区别是两种获取视图以及将视图作为局部变量而不是实例变量的两种方式。 使用此代码对您有用吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM