首页 文章

Android App开发 - WebView无法正常工作

提问于
浏览
6

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;
        }
    }
}

5 回答

  • 0

    如果没有添加,请在Android清单中添加:

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

    此行必须位于AndroidManifest.xml文件的<manifest>元素内 .

  • 0

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

    shouldOverrideUrlLoadingreturn false .

  • 0

    您的代码在我的Android设备4.2.2中工作,您的实现没有问题,您唯一需要做的就是覆盖您的方法,如下所示:

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

    这种方法

  • 0

    我想你可以简单地在你的WebView中加载一个url来显示你的应用程序中的网站

    webView.loadUrl(url);
    

    许可也是最重要的

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

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

  • 3

    这很明显!

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

    只需删除该行:

    mWebView.setWebViewClient(new NewsClient());
    

相关问题