当前位置: 首页 > 知识库问答 >
问题:

WebView loadURL不工作在超文本标记语言按钮单击

高英彦
2023-03-14

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

最后一个坏了。我搜索过这个网站和其他很多网站,但没有找到一个有效的解决方案。

我相当肯定我有所有的清单文件'东西'正确(其他一切都在工作,包括最初的基于互联网的网页)。如果你认为有必要,我也很乐意发布。

我的活动是主要的。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);
            }
        });
    }
}

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

请原谅我,如果这是一个重复的问题,但我真的搜索了这个网站和其他许多人的答案(可能是整整8个小时左右)。我试过很多这样的答案,但都没有用。我猜这很简单,与我对网络视图、活动、意图或所有三者缺乏了解有关,甚至可能与我对android开发的陌生感有关。

共有1个答案

伯君浩
2023-03-14

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

你可以试试这个答案:

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

而不是使用new Handler

 类似资料:
  • 我试图创建一个简单的HTML表单,通过MySQL保存信息,但我有一些问题连接到数据库。我认为$db_selected=mysql_select_db(DB_NAME,$link);给了我问题。仅供参考DB_NAME是我要使用的数据库表。 超文本标记语言 我的PHP

  • 我试图在HTML的pre标签中包装文本,但它不起作用。我使用下面的CSS作为我的标签。 我从如何在pre标记中换行文本? 我已添加

  • 我正在使用ITextRenderer从html生成PDF。然而,我得到以下异常: 你能帮帮我吗? 任何帮助都将不胜感激。 先谢谢你。

  • 我正在工作的工具提示和从后端我将获得数据与html标记。我需要在工具提示中显示相应的标签中的相应数据。例如,我将从后端获得Hello用户单击此处。我必须显示为你好用户在h1格式,点击这里应该是一个锚。我尝试了这两个功能,并取代其不工作。 具有以下功能: 替换: https://codesandbox.io/s/serene-fast-u8fie?file=/App.svelte

  • 我正在用HTML发送一封电子邮件时事通讯。在HTML中,我有如下内容

  • 我在jQuery中看到了这一点——它做了什么?