环境:Android Studio 2.2
- 1.将CordovaLib作为module导入
- 2.添加依赖
六 自定义插件
1.自定义你的java类
1.1.包名,等下会用到。
1.2.集成的父类。
1.3.重写的方法。
1.4.传递的参数。
1.5.action匹配。
2.在config.xml文件中添加配置
2.1.js文件名
2.2.Java类路径名(详见1.1)
3.在assets/www/plugins文件夹下新建文件夹cordova-plugin-xxxx文件夹,并在此文件夹下新建xxxx.js文件。
3.1.js的文件夹名.文件名
3.2.方法名
3.3.与config.xml文件下一致
3.4.方法名==2(与java文件下action一致)
3.5.成功回调函数
3.6.失败回调函数 [content,type]是传递的参数
4.在cordova_plugins.js中添加必要配置
4.1.file:js路径名
4.2.id:js的文件夹名.文件名
4.3.html文件中方法名的前缀 在module.exports.metadata中添加
4.5. js的文件夹名
4.6.版本号
5.在index.html中调用
function Toast(){ navigator.Toast.getTost("Toast测试",0,onSuccess,onError); function onSuccess(Data){ alert(JSON.stringify(Data)); } function onError(Data){ alert(JSON.stringify(Data)); } } 七 java类中的一些问题
1.startActivityForResult
查看CordovaActivty源码:
查看CordovaPlugin源码:
在webView的CordovaActivity获取到Result后,会调用cordovaInterface.onActivityResult(requestCode, resultCode, intent)方法通知CordovaPlugin。如果使用cordova.getActivity().startActivityForResult(intent,CORDOVA_SPEEN)方式,并没有将CordovaPlugin传进去,在webView的CordovaActivity获取到Result后,结果只会返回到的webView的CordovaActivity当中,并不会进行下一步。
2.回调
mCallbackContext.success(JSONObject); mCallbackContext.error(JSONObject); 八 在CordovaActivity中添加原生View组件 #原因:继承CordovaActivity的子类中默认只有一个WebView,实际开发中不能满足需求。
解决方案:可以使用setContentView设置XML布局,需要重写的两种方法:makewebview 和createviews。(亲测通过extends Activity implements CordovaInterface方法实现时,cordova.startActivityForResult不回调,具体原因尚不明)
- makewebview() : 很重要,它使用R.id.cordovawebview,会定义在XML布局文件。
- createViews() : 它会默认使用setContentView,想使用自己定义的布局,需要重写该方法。