Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Phonegap插件以奇怪的方式运行_Java_Javascript_Html_Cordova_Phonegap Plugins - Fatal编程技术网

Java Phonegap插件以奇怪的方式运行

Java Phonegap插件以奇怪的方式运行,java,javascript,html,cordova,phonegap-plugins,Java,Javascript,Html,Cordova,Phonegap Plugins,我已经为v1.0.0实现了Phonegap插件。 请看一下我的HTML代码 /**** HTML FILE ****/ <!DOCTYPE html> <head> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum- scale=1.0, user-scalable=no;" /> <meta http-equiv="Content-type" c

我已经为v1.0.0实现了Phonegap插件。 请看一下我的HTML代码

/**** HTML FILE ****/
<!DOCTYPE html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-  scale=1.0, user-scalable=no;" />
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<script type="text/javascript" charset="utf-8" src="phonegap-1.0.0.js"></script>
<script type="text/javascript" charset="utf-8" src="system.js"></script>
<script type="text/javascript">

var uname = "User1";                    //------------- 2

var System = function() {};

System.prototype.func = function(funcname,funcdata) {

//alert("In the list function");

return PhoneGap.exec(
      null,                 //Success callback from the plugin
      null,                 //Error callback from the plugin
      'SystemPlugin',       //Tell PhoneGap to run     "DirectoryListingPlugin" Plugin
      funcname,             //Tell plugin, which action we want to perform
      funcdata);            //Passing list of args to the plugin
};

PhoneGap.addConstructor(

    function() {

       PhoneGap.addPlugin("system", new System());

    }

);

var _anomFunkMap = {};
var _anomFunkMapNextId = 0; 

function anomToNameFunk(fun)
{
    var funkId = "f" + _anomFunkMapNextId++;
    var funk = function()
    {
        fun.apply(this,arguments);
        _anomFunkMap[funkId] = null;
        delete _anomFunkMap[funkId];    
    }
    _anomFunkMap[funkId] = funk;

    return "_anomFunkMap." + funkId;
}

function GetFunctionName(fn)
{
  if (typeof fn === "function") {
    var name= fn.name;  
    if (!name) {
      var m = fn.toString().match(/^\s*function\s+([^\s\(]+)/);
      name= m && m[1];  
    }
    if (name && (window[name] === fn)) {
        return name;
    } else {
        return anomToNameFunk(fn);
    } 
  }else {
    return null;
  }
}

function post_sync_data(url, urlparam, param, requestheader, callback){

    //alert("In post_sync_data");

    if(undefined == callback){

        if(undefined == requestheader){

            var fnname = GetFunctionName(param);
            var dataArray = [fnname, fnname, url, urlparam];    

        }
        else{

            var fnname = GetFunctionName(requestheader);

            //Note : the param is optional parameter or request header
            var dataArray = [fnname, fnname, url, urlparam, param]; 

        }
    }
    else{

        var fnname = GetFunctionName(callback);
        var dataArray = [fnname, fnname, url, urlparam, param, requestheader];  

    }

    //alert("Calling plugin function post with \r\n"+dataArray);

    var r = window.plugins.system.func("post",dataArray);       
    //alert("r is :\r\n"+r);                                                        ------------- 3

    return r;       
}

function validate(){    

    //Make a webservice call for the Omnesys Token
    post_sync_data(url,urlparam,uname,postDataCB);

}

function postDataCB(token,name){

    //Here uname is undefined.
    alert("In postDataCB()\r\nuname: "+uname+"\r\nuname from C Func: "+name+"\r\n\r\ntoken: "+token);
    return;

}   

function onBodyLoad()
{       
    document.addEventListener("deviceready",onDeviceReady,false);

}

function onDeviceReady()
{
    // do your thing!
    navigator.notification.alert("PhoneGap is working")
    document.getElementById('d1').style.visibility = "visible";
}

</script>
    </head>
    <body onload="onBodyLoad()"> 
<div id="d1" style="visibility:hidden">
    <form>                                                                  <!-- 1 -->
    <button onclick="javascript:validate()">Submit</button><br />   
    </form>
</div>
    </body>
</html>
/**HTML文件****/
var uname=“User1”//-----------2.
var System=function(){};
System.prototype.func=函数(funcname,funcdata){
//警报(“在列表功能中”);
返回PhoneGap.exec(
null,//来自插件的成功回调
null,//来自插件的错误回调
'SystemPlugin',//告诉PhoneGap运行“DirectoryListingPlugin”插件
funcname,//告诉插件我们要执行的操作
funcdata);//将参数列表传递给插件
};
PhoneGap.addConstructor(
函数(){
addPlugin(“系统”,新系统());
}
);
var_anomFunkMap={};
var _anomFunkMapNextId=0;
功能anomToNameFunk(乐趣)
{
var funkId=“f”+_anomFunkMapNextId++;
var funk=函数()
{
有趣。应用(这个,论点);
_anomFunkMap[funkId]=null;
删除_anomFunkMap[funkId];
}
_anomFunkMap[funkId]=funk;
返回“_anomFunkMap.”+funkId;
}
函数GetFunctionName(fn)
{
if(fn类型==“函数”){
var name=fn.name;
如果(!name){
var m=fn.toString().match(/^\s*函数\s+([^\s\(]+)/);
名称=m&&m[1];
}
如果(名称和窗口[名称]==fn)){
返回名称;
}否则{
返回anomToNameFunk(fn);
} 
}否则{
返回null;
}
}
函数post_sync_数据(url、URLPARM、param、requestheader、回调){
//警报(“后同步数据中”);
if(未定义==回调){
if(未定义==requestheader){
var fnname=GetFunctionName(参数);
var dataArray=[fnname,fnname,url,urlparam];
}
否则{
var fnname=GetFunctionName(requestheader);
//注意:参数是可选参数或请求头
var dataArray=[fnname,fnname,url,urlparam,param];
}
}
否则{
var fnname=GetFunctionName(回调);
var dataArray=[fnname,fnname,url,urlparam,param,requestheader];
}
//警报(“使用\r\n“+数据数组调用插件函数post”);
var r=window.plugins.system.func(“post”,dataArray);
//警报(“r是:\r\n”+r);-----------3
返回r;
}
函数validate(){
//为Omnesys令牌进行Web服务调用
post_sync_数据(url、urlparam、uname、postDataCB);
}
函数postDataCB(令牌、名称){
//这里uname是未定义的。
警报(“在postDataCB()\r\n名称:“+uname+”\r\n来自C Func的名称:“+name+”\r\n\r\n标记:“+token”);
返回;
}   
函数onBodyLoad()
{       
文件。添加的监听器(“deviceready”,OnDeviceraddy,false);
}
函数ondevicerady()
{
//做你的事!
navigator.notification.alert(“PhoneGap正在工作”)
document.getElementById('d1').style.visibility=“可见”;
}
提交
我的Phonegap插件文件

/*** My PhoneGap Plugin.xml File ***/
<?xml version="1.0" encoding="utf-8"?>
<plugins>
<plugin name="App" value="com.phonegap.App"/>
<plugin name="Geolocation" value="com.phonegap.GeoBroker"/>
<plugin name="Device" value="com.phonegap.Device"/>
<plugin name="Accelerometer" value="com.phonegap.AccelListener"/>
<plugin name="Compass" value="com.phonegap.CompassListener"/>
<plugin name="Media" value="com.phonegap.AudioHandler"/>
<plugin name="Camera" value="com.phonegap.CameraLauncher"/>
<plugin name="Contacts" value="com.phonegap.ContactManager"/>
<plugin name="Crypto" value="com.phonegap.CryptoHandler"/>
<plugin name="File" value="com.phonegap.FileUtils"/>
<plugin name="Network Status" value="com.phonegap.NetworkManager"/>
<plugin name="Notification" value="com.phonegap.Notification"/>
<plugin name="Storage" value="com.phonegap.Storage"/>
<plugin name="Temperature" value="com.phonegap.TempListener"/>
<plugin name="FileTransfer" value="com.phonegap.FileTransfer"/>
<plugin name="Capture" value="com.phonegap.Capture"/>
<plugin name="SystemPlugin" value="com.phonegap.test.SystemPlugin" />
</plugin>
/***My PhoneGap Plugin.xml文件***/
还有我的JAVA类

/** Plugin Code **/
public class SystemPlugin extends Plugin {

@Override
public PluginResult execute(String funcname, JSONArray funcargs, String jscallbackid){

    //Get the success and failure call back functions       
    try{        
        SuccessCallBack = funcargs.getString(0);
        FailureCallBack = funcargs.getString(1);        
    }
    catch (JSONException jsonEx) {

        return null;

    }

    if(funcname.equals("post")){

        try{

            url = funcargs.getString(2);
            urlparam = funcargs.getString(3);               

        }
        catch (JSONException e) {
            SendJS = "javascript:" + FailureCallBack + "('" + e.getMessage() + "')"; 
            sendJavascript(SendJS);
            return null;
        } 

        try {
            conn = new URL(url).openConnection();
            conn.setDoOutput(true);

        } catch (MalformedURLException e) {
            SendJS = "javascript:" + FailureCallBack + "('" + e.getMessage() + "')"; 
            sendJavascript(SendJS);
            return null;
        } catch (IOException e) {
            SendJS = "javascript:" + FailureCallBack + "('" + e.getMessage() + "')"; 
            sendJavascript(SendJS);
            return null;
        }

        if(requestheader == null){

            //Default Request Property
            conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

        }
        else{

            String Headers[] = requestheader.split("\r\n");

            for(i=0; i < Headers.length; i++){

                String hReq[] = Headers[i].split(":");

                if(hReq.length == 2){

                    conn.setRequestProperty(hReq[0], hReq[1]);                  
                }
            }
        }

        try {

            //Blank String
            String data="";

            String param[] = urlparam.split("&");

            for(i=0; i < param.length; i++){

                String keyval[] = param[i].split("=");

                if(keyval.length == 2){

                    data += URLEncoder.encode(keyval[0], "UTF-8") + "=" + URLEncoder.encode(keyval[1], "UTF-8") + "&";
                }
            }

            //remove the unwanted & at the end of the string
            data = data.substring(0,data.length()-1);  

            ro = new OutputStreamWriter(conn.getOutputStream());
            ro.write(data);

            //Close the connection
            ro.close(); 

        } catch (IOException e) {
            SendJS = "javascript:" + FailureCallBack + "('" + e.getMessage() + "')"; 
            sendJavascript(SendJS);
            return null;
        }

        try{

            rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));

            while ((line = rd.readLine()) != null)
            {
                sb.append(line);
            }

            //Close the connection
            rd.close();

        } catch (IOException e) {
            SendJS = "javascript:" + FailureCallBack + "('" + e.getMessage() + "')"; 
            sendJavascript(SendJS);
            return null;
        }

        SendJS = "javascript:" + SuccessCallBack + "('" + JSONObject.quote(sb.toString()); 

        if(jObj != null)
            SendJS += "','" +  jObj + "')";
        else if(StringParam != null)
            SendJS += "','" + StringParam + "')";
        else
            SendJS += "')";

        sendJavascript(SendJS);
        return null;        

    }   
    else{

        return null;

    }       
}
}
/**插件代码**/
公共类SystemPlugin扩展插件{
@凌驾
public PluginResult execute(字符串funcname、JSONArray funcargs、字符串jscallbackid){
//获取成功和失败回调函数
试试{
SuccessCallBack=funcargs.getString(0);
FailureCallBack=funcargs.getString(1);
}
捕获(JSONException jsonEx){
返回null;
}
if(funcname.equals(“post”)){
试一试{
url=funcargs.getString(2);
urlparam=funcargs.getString(3);
}
捕获(JSONException e){
SendJS=“javascript:“+FailureCallBack+”(“+e.getMessage()+”)”;
sendJavascript(SendJS);
返回null;
} 
试一试{
conn=新URL(URL).openConnection();
连接设置输出(真);
}捕获(格式错误){
SendJS=“javascript:“+FailureCallBack+”(“+e.getMessage()+”)”;
sendJavascript(SendJS);
返回null;
}捕获(IOE异常){
SendJS=“javascript:“+FailureCallBack+”(“+e.getMessage()+”)”;
sendJavascript(SendJS);
返回null;
}
if(requestheader==null){
//默认请求属性
conn.setRequestProperty(“内容类型”、“应用程序/x-www-form-urlencoded”);
}
否则{
字符串头[]=requestheader.split(“\r\n”);
对于(i=0;i