中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

移動web中間件phonegap三(插件編寫)

發布時間:2020-07-23 03:28:19 來源:網絡 閱讀:2149 作者:雪飄七月 欄目:開發技術

前言

   現在phonegap雖然提供了很多中插件API,但難免會不夠全,不夠滿足我們的需求!這時候我們就可以通過自己編寫插件來完善這些功能。


   phonegap的插件主要分兩部分:一部分是前臺頁面js調用插件的接口,還有一部分就是后臺做的處理。


下面我以我寫的一個刪除文件功能為例,先來看前臺js代碼:

removefile : function(path,cb){
    //定義插件刪除方法
    window.deletebook = function(path, callback) {
        //自定義插件的核心
        cordova.exec(callback, function(err) {
            callback('Nothing to echo.');
        }, "MyEcho", "deletebook", [path]);
    };
    //調用插件刪除方法
    document.addEventListener("deviceready", onDeviceReady, false);
    function onDeviceReady() {
        window.deletebook(path, function(echoValue) {
            //console.log(echoValue + " success");
            if(echoValue == "true"){
                cb();
            }
        });
    }
}

插件的核心在于cordova.exec(successCB,failedCB,pluginName,action,data);

這個函數中五個參數分別為:

successCB 調用成功后的回調函數

failedCB 調用失敗后的回調函數

pluginName 插件名

action 插件方法

data 調用插件向后臺傳遞的參數,格式為數組


接下來我們來看一下后臺的代碼:

package org.apache.cordova;
import org.apache.cordova.api.CallbackContext;
import org.apache.cordova.api.CordovaPlugin;
import org.join.messenger.MessageCode;
import org.json.JSONArray;
import org.json.JSONException;
import android.os.Bundle;
import com.lemote.ebook.Ebook;
public class MyEcho extends CordovaPlugin {
    @Override
    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
        System.out.println("================action:"+action);
        if(action.equals("deletebook")){
            System.out.println("deletebook!");
            String filepath = args.getString(0);
            String returninfo = "false";
            String whole_filepath = "/mnt/sdcard/"+filepath;
            System.out.println("whole_filepath:"+whole_filepath);
            if(MyFileUtil.removeFile(whole_filepath)){
                System.out.println("刪除成功!");
                returninfo = "true";
            }
            this.echo(returninfo, callbackContext);
            return true;
        }
        return false;
    }
    //調用回調函數,返回成功
    private void echo(String message, CallbackContext callbackContext) {
        if (message != null && message.length() > 0) {
            callbackContext.success(message);
        } else {
            callbackContext.error("Expected one non-empty string argument.");
        }
    }
}

execute(String action, JSONArray args, CallbackContext callbackContext)中三個參數分別為:

   action 插件方法

   args 傳遞過來的參數,獲取方法為args.getString(數組中的位置);

callbackContext 回調函數

回調成功的函數callbackContext.success(message)

回調失敗的函數callbackContext.error(message)


除了前臺js接口和后臺方法,還有一個非常重要的就是串聯前后臺的東西:

res/xml/config.xml中加入如下代碼:

<plugin name="MyEcho" value="org.apache.cordova.MyEcho" />

"MyEcho"為前臺js調用的pluginName

"org.apache.cordova.MyEcho"為插件在后臺的類文件


這樣phonegap插件還做不到的就可以通過自己編寫java代碼來實現了!



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

莱州市| 依安县| 喀喇| 黄骅市| 潜山县| 宿州市| 黄平县| 巫溪县| 浦城县| 高邑县| 通许县| 沛县| 和静县| 合山市| 阿勒泰市| 武夷山市| 韶关市| 同心县| 和林格尔县| 云安县| 清水河县| 卢氏县| 边坝县| 轮台县| 通江县| 庆安县| 登封市| 武陟县| 都兰县| 垣曲县| 六安市| 东乌珠穆沁旗| 株洲市| 山东省| 页游| 黑水县| 龙南县| 盱眙县| 通江县| 太湖县| 乌鲁木齐县|