Cordova 3 架构学习 定义plugin
来源:互联网 发布:巨人网络借壳过程 编辑:程序博客网 时间:2024/06/07 02:02
http://blog.csdn.net/xundh/article/details/46770779
官网文档:
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 0
- 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
- CSS3 响应式布局: 使用@media (min/max-width:***) 和@font-face及其兼容
- java卖票线程问题synchronized
- ROS中package.xml
- windows下Apache虚拟主机配置
- 变量的解构赋值
- Cordova 3 架构学习 定义plugin
- num.toFixed is not a function(js报错)
- Info 命令的使用
- 4. camera调试日志
- synchronized 和 lock 区别
- YII2 存取控制过滤器(ACF)
- 编码基础知识
- kamailio服务器负载均衡配置过程中,将几个sip服务器同时指向同一个mysql,出现的错误解决
- BN使用