【问题标题】:Android App development - WebView is not workingAndroid 应用程序开发 - WebView 无法正常工作
【发布时间】:2021-06-28 13:23:07
【问题描述】:

Android 允许使用 WebView 在应用程序中显示 URL 的内容。 但是,由于某种原因,它对我不起作用。以下是我正在使用的代码:

package com.news;

import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class NewsActivity extends Activity {
    WebView mWebView;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        mWebView = (WebView) findViewById(R.id.webview);
        mWebView.setWebViewClient(new NewsClient());
        mWebView.getSettings().setJavaScriptEnabled(true);
        mWebView.getSettings().setDomStorageEnabled(true);
        mWebView.loadUrl("http://www.androidpeople.com");
    }


    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
            mWebView.goBack();            
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

    private class NewsClient extends WebViewClient {

        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            System.out.println("URL: " + url);
            view.loadUrl(url);
            return true;
        }
    }
}

【问题讨论】:

标签: android


【解决方案1】:

很明显!

您正在实现一个新的WebViewClient,您将在其中覆盖shouldOverrideUrlLoading 方法。为您正在加载的每个 url 调用此方法。你在那里做什么?您正在返回 true(这意味着应该覆盖加载),然后开始加载相同的 url!因此,永远不会发生 url 加载。

只需删除该行:

mWebView.setWebViewClient(new NewsClient());

【讨论】:

  • 有一个小问题 .. 在提交第一页中显示的表单时 .. 它会在浏览器而不是应用程序中打开下一页 .. 我该如何解决?
  • 你应该返回 false。
【解决方案2】:

如果未添加,请将其添加到您的 android 清单中:

<uses-permission android:name="android.permission.INTERNET" />

此行必须在您的 AndroidManifest.xml 文件的 元素内。

【讨论】:

    【解决方案3】:

    添加这一行: mWebView.setWebViewClient(new NewsClient());

    但是shouldOverrideUrlLoading 应该是return false

    【讨论】:

    • 能否请您 edit 解释为什么这段代码回答了这个问题?纯代码答案是 discouraged,因为它们不教授解决方案。
    【解决方案4】:

    您的代码在我的 android 设备 4.2.2 中运行,您的实现没有问题,您唯一需要做的就是像这样覆盖您的方法:

       @Override
       public boolean shouldOverrideUrlLoading(WebView view, String url) {
            System.out.println("URL: " + url);
            view.loadUrl(url);
            return true;
        }
    

    这个方法

    【讨论】:

      【解决方案5】:

      我认为您可以简单地在 WebView 中加载一个 url 来在您的应用中显示网站,例如

      webView.loadUrl(url);
      

      权限也是最重要的

      <uses-permission android:name="android.permission.INTERNET"/>
      

      更多详情:http://androidcoding.in/2016/03/17/android-tutorial-on-webview-for-beginners/

      【讨论】:

        【解决方案6】:

        您正在实现一个新的 WebViewClient,您将在其中覆盖 shouldOverrideUrlLoading 方法。如果您需要更多信息,请访问此处:https://weblearners.blogspot.com/2021/06/how-to-enable-video-image-and-file-upload-in-android-webview-app.html

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-12
        • 2016-03-19
        • 2015-08-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多