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);}

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 7岁儿童流清鼻涕怎么办 1岁的宝宝流鼻涕怎么办 3岁宝宝鼻塞严重怎么办 宝宝流鼻涕2个月怎么办 一个月宝宝流鼻子怎么办 六个月宝宝流清水鼻涕怎么办 婴儿流鼻涕怎么办最简单方法 婴儿咳嗽流鼻涕怎么办最简单方法 6个月小孩流鼻涕怎么办 宝宝风寒感冒咳嗽流鼻涕怎么办 三个月宝宝流清鼻涕怎么办 三个月宝宝留清鼻涕怎么办 三个月婴儿流清鼻涕怎么办 宝宝7个月流鼻涕怎么办 6个月孩子流鼻涕怎么办 十一个月孩子感冒流鼻涕怎么办 7个月孩子流鼻涕怎么办 18个月的宝宝流鼻涕怎么办 6个月宝宝咳嗽流鼻涕怎么办 18个月宝宝咳嗽流鼻涕怎么办 6个月宝宝流鼻涕打喷嚏怎么办 宝宝18个月流鼻涕怎么办 18个月宝宝感冒流鼻涕怎么办 小孩睡觉鼻子不通气怎么办 宝宝鼻子里有鼻涕出不来怎么办 孩子喉咙有痰呼呼响怎么办 六个月宝宝鼻塞怎么办速效办法 两个月小孩鼻子不通气怎么办 一岁宝宝流清鼻涕怎么办 孩子鼻子里有鼻涕怎么办 宝宝晚上睡觉鼻子不通气怎么办 宝宝感冒睡觉鼻子不通气怎么办 宝宝3个月流鼻涕怎么办 小孩吃着了发烧怎么办 半岁宝宝鼻子塞怎么办 宝宝伤风鼻子不通气怎么办 二十天的宝宝伤风鼻子不通怎么办 一个多月的宝宝鼻子有鼻屎怎么办 2个月宝宝鼻子里有鼻屎怎么办 四个月婴儿感冒发烧怎么办 一个月婴儿感冒发烧怎么办