gpt4 book ai didi

java - Android从Native Code调用JS

转载 作者:行者123 更新时间:2023-12-01 13:16:16 26 4
gpt4 key购买 nike

我试图从 Android native 代码调用 JS 函数,但它们似乎不起作用。我尝试了很多解决方案,但没有解决。这是我的代码:

public class MainActivity extends Activity {

private WebView webView;

@SuppressLint("SetJavaScriptEnabled")
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

webView = (WebView) findViewById(R.id.webView1);
webView.setWebViewClient(new MyCustomWebViewClient());

webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webView.getSettings().setUseWideViewPort(true);
webView.getSettings().setLoadWithOverviewMode(true);

webView.loadUrl("http://google.com");

}

private class MyCustomWebViewClient extends WebViewClient {

@Override
public void onPageFinished(WebView view, String url) {
webView.loadUrl("javascript:alert('shadow');");
Toast.makeText(getApplicationContext(), "DONE", Toast.LENGTH_LONG).show();

}
}


}

请帮忙。

谢谢

最佳答案

您无法使用 Android 的 WebView 执行alert()。如果您想显示警报对话框,您需要在 Activity 代码中处理它或使用 WebChromeClient。根据文档:

Creating and setting a WebChromeClient subclass. This class is called when something that might impact a browser UI happens, for instance, progress updates and JavaScript alerts are sent here (see Debugging Tasks).

参见:https://developer.android.com/reference/android/webkit/WebView.html

使用 WebView,您仍然可以编写 JavaScript 函数,将文本框的值设置为某个字符串。如果您需要特定代码来帮助您解决此问题,请告诉我。如果您已经走到这一步,我猜您可能可以自己处理。

编辑 1

首先在 JavaScript 中创建一个名为 sendValueToAndroid() 的方法

myWebView.loadUrl("javascript:sendValueToAndroid()");   

在 JavaScript 方法中,调用 Android 代码中公开的方法。

function sendValueToAndroid()
{
val divValue = ...
Android.sendValueToAndroid(divValue);
}

在您选择的任何对象中公开 Android 应用程序中的方法。

@JavascriptInterface
public String sendValueToAndroid(String val)
{
//do something in your app
}

基本上,您所做的就是告诉 WebView 调用 JavaScript 方法,该方法会在您自己的应用程序中调用回调方法。

关于java - Android从Native Code调用JS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22441795/

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