zoukankan      html  css  js  c++  java
  • Phonegap开发的前后台数据交互

    在用Phonegap开发时,需要进行前后台数据交互,在网上找资料,很多东西让人一头雾水,最后借鉴了下面的博客:

    http://blog.sina.com.cn/s/blog_681929ae010177qt.html

    才实现了一个简单数据交互

    1:定义名称为FilePlugin的 Class文件继承自Plugin;需要实现execute方法

    package qj;
    
    import org.json.JSONArray;
    
    import android.webkit.WebSettings.PluginState;
    
    import com.phonegap.api.Plugin;
    import com.phonegap.api.PluginResult;
    
    public class FilePlugin extends Plugin{//继承
        
        @Override
        public PluginResult execute(String action, JSONArray args, String callbackId)
        {
            PluginResult pr=new PluginResult(PluginResult.Status.OK, "进入");
             String ls=action;
             String lss=args.toString();
              
            try {
                ls = java.net.URLDecoder.decode(ls,"UTF-8");
                lss = new String(lss.getBytes("iso-8859-1"),"utf-8");
                lss = java.net.URLDecoder.decode(lss,"UTF-8");
                
                if (action.equals("createFile")) {
                    String filePath = "文件路径!";
                    pr=new PluginResult(PluginResult.Status.OK,filePath);
                    
                    }
                if(action.equals("read")){
                    pr=new PluginResult(PluginResult.Status.OK, "文件读取");
                    
                    }
            } catch (Exception e) {
                return new PluginResult(PluginResult.Status.ERROR,e.getMessage());
            }
            return pr;
            
        }
    
    }

    2:定义名称为file的js文件,用以实现方法并且注册成为Phonegap的插件。

    var FilePlugin = function(){};
    FilePlugin.prototype.write = function(fileName, content, successCallback, failureCallback){
    return PhoneGap.exec(successCallback, failureCallback, "FilePlugin", "write", [fileName, content]);
    };
    
    FilePlugin.prototype.overWrite = function(srcName, destName,successCallback, failureCallback){
    return PhoneGap.exec(successCallback, failureCallback, "FilePlugin", "orverwrite", [srcName, destName]);
    };
    
    FilePlugin.prototype.read = function(filePath,successCallback, failureCallback){
    return PhoneGap.exec(successCallback, failureCallback, "FilePlugin", "read", [filePath]);
    };
    
    //注册插件
    PhoneGap.addConstructor(function(){
    PhoneGap.addPlugin("file", new FilePlugin());
    });

    3:管理Class文件与Js文件

    在xml中的plugins.xml中配置

    name="类名称"

    value="命名空间"

    <plugin name="FilePlugin" value="qj.FilePlugin"/>

    4:页面调用

    <script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
    <script type="text/javascript" charset="UTF-8" src="phonegap-1.0.0.js"></script>
    <script type="text/javascript" charset="UTF-8" src="file.js"></script>
    <script type="text/javascript" charset="UTF-8">
    
    
    function read(){
    window.plugins.file.read("file.txt", success, failure);
    var arg= encodeURI(encodeURI("中文"));
    arg= "中文";
    //FilePlugin.prototype.read(arg, success, failure);
    }
    function success(r){
    alert("success:"+r);
    };
    function failure(e){
    alert("failure:"+e);
    };
    </script>
    
    <button onclick="read()">read Some</button>
  • 相关阅读:
    git this exceeds GitHub's file size limit of 100.00 MB
    使用vue-cli创建vue工程
    【转】Visual Studio Code必备插件
    linux安装openssl
    Centos7离线安装mysql8
    使用nmon来按频率采集数据
    Mac下编译android4.0.4遇到的问题
    32位ubuntu16.4编译android4.1.1
    vmvare安装vmtools菜单灰色
    Substrate 使用
  • 原文地址:https://www.cnblogs.com/PLifeCopyDown/p/3287566.html
Copyright © 2011-2022 走看看