Cordova 3 架构学习 定义plugin
来源:互联网 发布:淘宝的小米4全网通 编辑:程序博客网 时间:2024/06/06 23:58
官网文档:
http://cordova.apache.org/
核心java类
CordovaActivity:Cordova Activity入口,已实现PluginManager、WebView的相关初始化工作, 只需继承CordovaActivity实现自己的业务需求。
PluginManager: 插件管理
ExposedJsApi :javascript调用Native
NativeToJsMessageQueue:Native调用javascript,主要包括三种方式:loadUrl 、 轮询、反射WebViewCore执行js
MainActivity
package com.example.hello;import android.os.Bundle;import org.apache.cordova.*;public class MainActivity extends CordovaActivity{ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); loadUrl(launchUrl); //只需要调用loadUrl就可以启动cordova框架 }}
自定义plugin
最终完成的plugin,要放置到:
/plugins下
参照cordova-plugin-whitelist 新建一个
com-whr-plugin-hello
在项目新建包com.whr.plugin,加类HelloPlugin.java
package com.whr.plugin.hello;import org.apache.cordova.CallbackContext;import org.json.JSONArray;import org.json.JSONException;import android.app.Activity;import android.content.Intent;import org.apache.cordova.CordovaPlugin;public class HelloPlugin extends CordovaPlugin { 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; } return false; }}
修改/res/xml/config.xml,加入:
<feature name="Hello"> <param name="android-package" value="com.whr.plugin.HelloPlugin" /> </feature>
拷贝plugin.xml到com-whr-plugin-hello
内容修改为:(其中iOS部分不改)
<?xml version="1.0" encoding="UTF-8"?><plugin xmlns="http://apache.org/cordova/ns/plugins/1.0" id="com-whr-plugin-hello" version="1.1.0"> <name>hello</name> <description>whr hello Plugin</description> <license>Apache 2.0</license> <keywords>whr,hello,policy</keywords> <engines> <engine name="cordova-android" version=">=4.0.0-dev" /> </engines> <platform name="android"> <config-file target="res/xml/config.xml" parent="/*"> <feature name="Whitelist" > <param name="android-package" value="com.whr.plugin.hello.WhitelistPlugin"/> <param name="onload" value="true" /> </feature> </config-file> <source-file src="src/android/HelloPlugin.java" target-dir="src/com/whr/plugin/hello" /> <js-module src="hello.js" name="hello"> <runs /> </js-module> </platform></plugin>
js文件 hello.js
if (!document.querySelector('meta[http-equiv=Content-Security-Policy]')) { var msg = 'No Content-Security-Policy meta tag found. Please add one when using the cordova-plugin-whitelist plugin.'; console.error(msg); setInterval(function() { console.warn(msg); }, 10000);}
0 1
- Cordova 3 架构学习 定义plugin
- Cordova 3 架构学习 定义plugin
- Cordova 4 架构学习 定义启动界面Slash
- Cordova plugin
- cordova plugin
- [Cordova学习]4.Cordova(iOS)架构和实现
- [Cordova学习]5.Cordova(android)架构和实现
- ionic学习之扫描二维码cordova-plugin-cszbar
- Cordova 7 架构学习 良好程序结构要点
- Cordova 9 Toast plugin
- cordova plugin开发
- cordova plugin实践
- Cordova Plugin Upload
- cordova-plugin-file 实例
- cordova-plugin-file 应用
- ionic cordova plugin 错误
- cordova wifi插件(cordova plugin add cordova-plugin-hotspot)
- cordova插件-motorola-datawedge-cordova-plugin
- 14、whereis
- MySql连接报错1045
- 在Ubuntu Kylin15.05上安装MongoDB
- samba-technical@lists.samba.org----Any operation on a share may take agreat influlence on both writi
- 设计模式--依赖倒转原则
- Cordova 3 架构学习 定义plugin
- springmvc中解决FastJson循环引用的问题
- css3 图片翻转效果
- Android中的Environment.getExternalStorageState使用
- 自定义UI之ActionBar
- centos下解决tomcat实时日志乱码问题
- css积累
- iOS 9_适配
- Ubuntu下定制vim/gvim及使用技巧