gpt4 book ai didi

java - 从 Java 调用 javascript 函数

转载 作者:行者123 更新时间:2023-12-02 13:53:49 25 4
gpt4 key购买 nike

我使用 PhoneGap 开发一个应用程序。我得到了一项位于后台且本地编码的服务(该服务和电话间隙应用程序位于同一项目中)。不幸的是,我想从此服务调用 javascript 函数。所以我在网上搜索并发现了一些有趣的东西:创建一个扩展Plugin的类并在其中进行一些处理。然后我发现了这个:

this.ctx.sendJavascript("myJavascriptFunction");

我用这段代码进行了测试,但发生了一些错误:

java.lang.NullPointerException

这是我的测试方法:

class c = new class();
c.execute("myFunction",null,null);

在c类中,execute方法是这样的:

public PluginResult execute(String action, JSONArray args, String callbackId) {
if (action.equals("myFunction")){
Log.d(TAG,"start actions to do");
this.ctx.sendJavascript("nameOfFunctionToLaunch");
Log.d(TAG,"end actions to do");
return new PluginResult(PluginResult.Status.OK);
}
}

当应用程序启动时,我有第一个

Log.d(TAG,"start actions to do");

如何解决这个问题?

最佳答案

最后我找到了解决方案:实际上 NullPointerException 位于 ctx 上。为了解决这个问题,我设置了对象 cContext 值,如下所示:

c.setContext(use_An_Object_Of_Type_PhonegapActivity);

为了获取该对象,我通过此方法从 AppActivity 中获取它:

public class CloudPhoneAppActivity extends DroidGap {
private class NoScaleWebViewClient extends GapViewClient {

public NoScaleWebViewClient(DroidGap ctx) {
super(ctx);
myApp.ctx = ctx;
}

public void onScaleChanged(WebView view, float oldScale, float newScale) {
Log.d("NoScaleWebViewClient", "Scale changed: " + String.valueOf(oldScale) + " => " + String.valueOf(newScale));
}
}
/** other stuff after**/
}

最后这是解决方案:

class c = new class();
c.setContext(myApp.ctx);
c.execute("myFunction",null,null);

之前描述的execute方法中无需进行任何更改。但请注意调用 javascript 函数的方式。

埃尔万

关于java - 从 Java 调用 javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8820428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com