gpt4 book ai didi

javascript - 将 JavaScript 代码绑定(bind)到 Android 代码

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:15:34 27 4
gpt4 key购买 nike

我试图从 javascript 中调用 java 中的方法,但是当我在模拟器中运行应用程序时并没有发生这种情况,应用程序在假设调用 java 中的方法时停止。
这里是java代码:

import android.os.Bundle;
import android.webkit.WebView;
import com.phonegap.*;

public class App extends DroidGap {
WebView webView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
webView = new WebView(this);
webView.addJavascriptInterface(new message(), "Show");
super.loadUrl("file:///android_asset/www/index.html");
}

class message {
String msg() {
return "Hello World!!";
}
}
}


这是javascript:

<script type="text/javascript">
{
alert("Start");
alert(Show.msg());
alert("End");
}
</script>

它显示第一个警报,但之后什么都没有,有人可以帮忙吗?

最佳答案

您的问题是您有一半在使用 PhoneGap,一半没有。您正在创建一个独立于 PhoneGap 的 WebView 类。您添加“显示”的 WebView 类永远不会被使用。相反,作为 super (DroidGap) 成员的 WebView 类是。

您应该做以下两件事之一。

  • 使用 PhoneGap 的插件结构(参见示例 here)
  • 根本不使用 PhoneGap,而是使用一个类似于以下内容的类:

    public class act extends Activity {
    WebView webView;
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    webView = new WebView(this);
    webView.getSettings().setJavaScriptEnabled(true);

    // Set JS alert() hook
    webView.setWebChromeClient(new WebChromeClient() {
    public boolean onJsAlert(WebView view, String url, String message, JsResult result)
    {
    return false;
    }
    });

    webView.loadUrl("file:///android_asset/www/index.html");

    // Add JS libraries
    webView.addJavascriptInterface(new message(), "Show");
    }

    class message {
    public String msg() {
    return "Hello World!!";
    }
    }
    }

注意msg方法需要public

关于javascript - 将 JavaScript 代码绑定(bind)到 Android 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5923282/

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