接上一篇
这次完成的是:从index当中的js事件,访问android原生的activity,用android.widget.Toast显示一句hello world
——这次首先打开ExtendInfo.java,修改
private static final String TOAST = "toast"; @Override public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException { Activity activity = this.cordova.getActivity(); if (action.equals("getExtra")) { Intent i = activity.getIntent(); if (i.hasExtra(Intent.EXTRA_TEXT)) { callbackContext.success(i.getStringExtra(Intent.EXTRA_TEXT)); } else { callbackContext.error(""); } return true; }else if (action.equals(TOAST)) { Toast.makeText(cordova.getActivity(), "hello world", Toast.LENGTH_SHORT).show(); } return false; } }
——然后我们打开assets/www/plugins/com.myproj.text/www/ExtendInfo.js
cordova.define("com.myproj.test.ExtraInfo", function(require, exports, module) { var exec = require('cordova/exec'); exports.getExtra = function(success, error) { exec(success, error, "ExtendInfo", "getExtra", []); }; exports.toast = function(content,type) { exec(null, null, "ExtraInfo", "toast", []); }; });
——然后我们再打开assets/www/cordova_plugins.js,修改一下clobbers方便我们后续js调用
{ "file": "plugins/com.myproj.test/www/ExtendInfo.js", "id": "com.myproj.test.ExtendInfo", "clobbers": [ "ExtendInfo" ] }
我理解的 clobbers里的ExtendInfo就是一会儿在index.html的js当中调用的名称
——然后我们再打开assets/www/index.html,添加js代码
<script type="text/javascript"> app.initialize(); document.addEventListener("deviceready", fun, false); function fun() { alert("kk"); ExtendInfo.toast(); } </script>
我们自定义的插件就是在config.xml当中注册的,见上一篇文章的最后一张图。
然后运行就可以先看到页面alert出来一个kk
点击确定之后,在界面的下方就出现toast出来一句 hello world
希望不明白的朋友可以提问,我也查漏补缺哈。