Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.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 本地HTML文件在Android Webview中无法正常工作_Java_Android - Fatal编程技术网

Java 本地HTML文件在Android Webview中无法正常工作

Java 本地HTML文件在Android Webview中无法正常工作,java,android,Java,Android,我有一个带有按钮的HTML文件,当我们点击按钮时,按钮会弹出一条警告消息 我放置了HTML文件资源文件夹,它正确加载到emulator,我可以看到按钮,但我面临的问题是,按钮单击没有响应,我看不到弹出消息 我还启用了JavaScript,但结果是否定的。然后,我将警报事件更改为JavaScript代码,但不起作用。在这里我添加我的代码,如果有人能帮助我,我将不胜感激 public void onCreate(Bundle savedInstanceState) { super.onCr

我有一个带有按钮的HTML文件,当我们点击按钮时,按钮会弹出一条警告消息

我放置了HTML文件资源文件夹,它正确加载到emulator,我可以看到按钮,但我面临的问题是,按钮单击没有响应,我看不到弹出消息

我还启用了JavaScript,但结果是否定的。然后,我将警报事件更改为JavaScript代码,但不起作用。在这里我添加我的代码,如果有人能帮助我,我将不胜感激

public void onCreate(Bundle savedInstanceState)
{
     super.onCreate(savedInstanceState);
     setContentView(com.example.test.R.layout.activity_main);

     myWebView= (WebView) findViewById(com.example.test.R.id.webView1);
     myWebView.getSettings().setJavaScriptEnabled(true);
     myWebView.loadUrl("file:///android_asset/myown.html"); 
}
下面是我的HTML页面代码

<!DOCTYPE html>
<html>
    <body>

        <button type="button" onclick="alert('Hello world!')">Click Me!</button>

    </body>
</html>

点击我!

为此,您需要使用
webChromeClient
并覆盖
onJsAlert()
函数:

WebView wv=new WebView(this);   
wv.setWebChromeClient(new WebChromeClient() {
    @Override
    public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
                //Do what you need to after alert is received
                return super.onJsAlert(view, url, message, result);
       }

编辑>这可能不是最简单的解决方案,但它确实提供了额外的功能

当我创建类似的东西时,它适用于4.1.2。警报弹出了一个漂亮的全息样式的弹出窗口。我使用了一个在线资源和一个(见前面的答案)

然而,若你们想确保这是可行的,你们可能想看看Android开发者的页面。它解释了这个问题。您可以使用它从HTML页面(本地或在线)耦合javascript,但让它执行本地Java代码

你可以像这样使用HTML

<input type="button" value="Click Me!" onClick="showAndroidToast('Hello World!')" />

<script type="text/javascript">
    function showAndroidToast(toast) {
        Android.showToast(toast);
    }
</script>
之后,将此代码添加到您提供的示例中

myWebView.addJavascriptInterface(new JavaScriptInterface(this), "Android");

下面的代码来自我的生产环境并且完全正常工作,我已将
html
文件存储到我的
assest
文件夹中,然后将其访问到
活动中

代码:

String uri = "file:///android_asset/htmlpages/" + index + ".htm";
WebView wb = (WebView) findViewById(R.id.webView_Glossary);
wb.getSettings().setJavaScriptEnabled(true);
wb.loadUrl(uri);

看看这个,它可能会帮助你[Link1][1][Link2][2][1]:[2]:看看这个,它可能会帮助你[Link1][1][Link2][2][1]:[2]:
String uri = "file:///android_asset/htmlpages/" + index + ".htm";
WebView wb = (WebView) findViewById(R.id.webView_Glossary);
wb.getSettings().setJavaScriptEnabled(true);
wb.loadUrl(uri);