webView loadURL无法使用HTML按钮点击

时间:2016-01-02 16:28:29

标签: javascript android html webview

我的应用程序中有一个webView。 webView最初会打开一个我创建的HTML页面,上面有几个按钮。按钮执行各种任务(我正在尝试学习如何使用webViews),如:1)显示android吐司,2)显示javascript警报,3)振动手机,4)显示当前地理位置,5)在webView中打开谷歌地图。

这是最后一个不起作用的。我搜索过这个网站和其他许多网站,但还没有找到有效的解决方案。

我很确定我的所有清单文件'东西'都是正确的(其他一切正常,包括最初的基于互联网的网页)。如果您认为需要,我也很乐意发帖。

我的activity_main.xml文件从来没有给我带来任何问题,但是如果你觉得它有帮助的话,我很乐意发帖。

以下是我的代码中的代码段:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    myWebView = (WebView) findViewById(R.id.webView);
    myWebView.loadUrl(url); // this one works
    myWebView.setWebViewClient(new MyWebViewClient());
    WebSettings webSettings = myWebView.getSettings();
    webSettings.setBuiltInZoomControls(true);
    webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
    webSettings.setJavaScriptEnabled(true);
    webSettings.setGeolocationEnabled(true);
...
}

一切正常,其他html按钮也能正常工作。 然后是这个:

public class WebAppInterface {
    Context mContext;
    //** Instantiate the interface and set the context *//
    WebAppInterface(Context c) {
        mContext = c;
    }
    //** Show a toast from the web page */
    @JavascriptInterface
    public void showToast(String toast) {
        Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
    }

    @JavascriptInterface
    public void vibrateDevice() {
        Vibrator mVibrator  = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
        mVibrator.vibrate(500);
    }
    @JavascriptInterface
    public void showMapCurPos() {
        new Handler().post(new Runnable() {
            String url2 = "http://www.google.com/maps/@53.001153,-95.0752916,15z";
            @Override
            public void run() {
                myWebView.clearCache(true);//Here you call the methond in UI thread
                myWebView.loadUrl(url2);
            }
        });
    }
}

一切都在那里工作,除了showMapCurPos()。我已经尝试过一个简单的myWebView.loadUrl(...)以及几次意图尝试。根据我的尝试,有时候该方法会使应用程序崩溃,但大多数情况下新网址都不会显示,并且会保留在原始网址上。

如果这是一个重复的问题,请原谅我,但我真的已经搜索了这个网站和其他许多人的答案(可能是坚实的8小时左右)。我尝试了很多这些答案都无济于事。我猜这是简单的事情,与我对webViews或活动或意图或三者的理解不足有关,甚至可能与我对Android开发的新见解有关。

1 个答案:

答案 0 :(得分:0)

我还不能写评论,所以我写这个作为答案。

你可以尝试这个answer

myWebView.post(new Runnable() {...});

而不是使用new Handler