Trivial Cordova插件不调用本机功能

时间:2013-10-11 19:04:15

标签: javascript android cordova phonegap-plugins cordova-3

嘿伙计们,我正试图让一个非常简单的自定义cordova插件工作,而且它不起作用,而且非常令人尴尬......

我试过看一下simple plugin的电话空白教程以及如何implement on android,看起来我有同样的事情,但它不起作用!应该做的只是用字符串调用本机函数,并将eclipse输出字符串输出到控制台日志...,但实际上从未调用本机函数!

JAVA:

public class ListPlugin extends CordovaPlugin {

    @Override
    public boolean execute(String action, JSONArray args, 
                      CallbackContext callbackContext) throws JSONException {

       Log.d("CORDOVA", "!!!");
       if(action.equals("showString")){
            String message = args.getString(0);
            Log.d("CORDOVA", message + "!!!");
        }
       return true
    }

}

RES / XML:

<feature name="ListPlugin">
  <param name="android-package" value="com.flukenetworks.networkmap.ListPlugin"/>
</feature>

JAVASCRIPT:     

<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript">

alert("HERRO?");
    cordova.exec(null, null, "ListPlugin", "showString", ["I hate you"]);
</script>

有人能发现任何错误吗?这可能是一件非常微不足道的事情,我看不到......我收到了一个CordovaWebView超时错误,也许这与它有关?这是使用CordovaWebView的代码,用于屎和咯咯。

public class DevicesListFragment extends Fragment{

    CordovaWebView webView; 
    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        webView = new CordovaWebView(getActivity());
        webView.loadUrl("file:///android_asset/www/index.html");
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
        Bundle savedInstanceState) {
        return webView;
    }
}

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:3)

我相信我明白了!我没有调用本机代码的原因是当我尝试拨打cordova.exec()时,cordova没有“准备好”。

我通过添加eventlistener来解决这个问题:

 document.addEventListener("deviceready", onDeviceReady, false);

// device APIs are available
//
function onDeviceReady() {
    cordova.exec(null, null, "ListPlugin", "showString", ["I hate you"]);
}

事实上,Cordova / PhoneGap文档都建议总是使用它 - 现在我知道了!