2017-09-27 57 views
0

我正在建设一个使用科尔多瓦的android应用程序。这个应用程序将用于一个坚固的扫描仪,它得到一个物理数字键盘。我的问题是,当我触发焦点时,软键盘被触发。科尔多瓦android禁用软键盘

现在,我试图让一个插件来启用/禁用softkeyboard:

/** 
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,真的很老。

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

回答

0

我有一个实现相同功能的插件。你可以看到代码here

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; 

我看到的唯一的主要区别是两种方式获得视图和视图作为本地而不是实例变量。使用此代码是否适合您?