zoukankan      html  css  js  c++  java
  • cordova 开发属于自己的插件---android

    还是需要开发出自己的插件的...

    我的cordova  version is 4.0.0 

    1.需要新建一个文件夹为 myplugin

    1.1在myplugin文件夹下 新建 plugin.xml文件  www文件夹  src文件夹 

    1.2 在src文件夹下 新建 Android iOS 文件夹等

    如图

    2. 在Android文件夹下console.java 文件

     1 package cn.debi.cordova;
     2 import org.apache.cordova.CordovaWebView;
     3 import org.apache.cordova.CallbackContext;
     4 import org.apache.cordova.CordovaPlugin;
     5 import org.apache.cordova.CordovaInterface;
     6 import org.json.JSONArray;
     7 import org.json.JSONException;
     8 import org.json.JSONObject;
    12 import android.util.Log;
    13 public class Console extends CordovaPlugin {
    14 
    15     public boolean execute(String action, JSONArray args, CallbackContext callbackContext) 
    16             throws JSONException {
    17          String databack=args.getString(0);
    18         final String ACTIVITY_TAG="MyAndroid"; 20         if (action.equals("Consolelog")) {
    21             Log.i(ACTIVITY_TAG,databack);
    22             callbackContext.success(databack);
    23             return true;
    24         }
    25         return false;
    26     }
    27 }

    3.在www文件夹下新建 console.js文件

    1 var exec = require('cordova/exec');
    2 
    3 exports.setConsole = function(messege,success, error) {
    4     exec(success, error, "Console", "Consolelog", [messege]); //console 为java的类名,consolelog 为action 的字符串 
    5 };

    4. 在plugin.xml 

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <plugin id="cn.debi.cordova" version="0.0.1" 
     3         xmlns="http://apache.org/cordova/ns/plugins/1.0"
     4         xmlns:android="http://schemas.android.com/apk/res/android">
     5     <name>Console</name>
     6     <description>Description</description>
     7     <js-module name="Console" src="www/Console.js">
     8         <clobbers target="cordova.plugins.Console"/>
     9     </js-module>
    10     <platform name="android">
    11         <config-file parent="/*" target="res/xml/config.xml">
    12             <feature name="Console">
    13                 <param name="android-package" value="cn.debi.cordova.Console"/>
    14             </feature>
    15         </config-file>
    16         <source-file src="src/android/Console.java" target-dir="src/cn/debi/cordova"/>
    17     </platform>
    18 </plugin>

    其中

    <plugin id="cn.debi.cordova" version="0.0.1">

    </plugin>  中的id 可以随便写 ,它是插件的标识符  ;version 可以随便写

    • description:描述信息 随便写了
    • js-module:对应我们的 javascript 文件,src 属性指向 www/console.js   name 在我们调用js的时候用到 (如:
       var extraInfo = cordova.require('cn.debi.cordova.Console'); 
      ),我们也可以用 <clobbers></clobbers> 里面的target 的字符串则是 module.exports 导出来的函数赋值 该字符串;这样就简单了许多 如
      cordova.plugins.Console.setConsole()
    • platform:支持的平台,这里仅仅用到了 android
    • <param name="android-package" value="cn.debi.cordova.Console"/>  中的cn.debi.cordova 是console.java 的package 包名(也是路径)
      Console是类名;
    •  <source-file src="src/android/Console.java" target-dir="src/cn/debi/cordova"/> target-dir 是copy到你的project的路径 

    6. 使用插件的方法 即调用插件

    1     var extraInfo = cordova.require('cn.debi.cordova.Console'); //require 的字符串为 plugin.xml文件中的ID  + js-module 里面的name 
    2     extraInfo.setConsole('cole.log',function(message) {
    3          alert(message);
    4     }, function(message) {
    5          alert(message);
    6     });

    // 第二种方法
    //cordova.plugins.Console.setConsole('cole.log',function(message) { //注意到这里的cordova.plugins.Console 就是plugin.xml文件中的js-module 的<clobbers//></clobbers> 里面的target 的字符串

    // alert(message);
    // }, function(message) {
    // alert(message);
    // });

    这里的cordova.require('cn.debi.cordova.Console')里面的 cn.debi.cordova 就是plugin.xml 中的id ;Console 则是js-module 里面的name 

    即调用console.js 导出里面的方法

    ~  而 extraInfo.setConsole()就是调用导出的方法

    7. 忘了要添加插件  了  O(∩_∩)O~~

    1 cordova plugin add myplugin  #目录名称,也可以是 git 的地址
    1 cordova plugin add  /your/plugin/address/myplugin 
  • 相关阅读:
    DokuWiki用storage的模式在sae上部署后速度太慢
    让禅道也可以玩BearyChat
    探讨c#中的unchecked是什么意思,起什么作用?
    重温Java的类加载机制
    JVM原理和优化
    为什么使用Redis
    高性能Web服务器Nginx及相关新技术的应用实践-张宴
    潘加宇--领域驱动设计和利润
    程序员跳槽全攻略
    EA强大的画图工具---设计数据库表格
  • 原文地址:https://www.cnblogs.com/xieyier/p/4071956.html
Copyright © 2011-2022 走看看