WebView

时间:2017-03-13 08:44:12

标签: android webview

我是第一个创建Android测试应用程序。

我正在使用webview表单,并且我插入了一些网址,当我正在运行应用程序时,它的工作正常。

但是,当我打开应用程序,并点击其他页面链接时,比我选择的列表,例如,在“Google Chrome”上打开它。但是我想在webview中打开它。

我认为这清楚地解释了。

activity_mail.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="0dp"
    android:paddingRight="0dp"
    android:paddingTop="0dp"
    android:paddingBottom="0dp" tools:context=".MainActivity">

    <WebView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/webView"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        />
</RelativeLayout>

MainActivity.java

package com.example.webviewapp;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebView;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        String url = "http://example.com";
        WebView  view=(WebView) this.findViewById(R.id.webView);
        view.getSettings().setJavaScriptEnabled(true);
        view.loadUrl(url);

    }
}

谢谢!

2 个答案:

答案 0 :(得分:5)

您需要创建WebViewClient

并覆盖shouldOverrideUrlLoading()方法

试试这个:

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    WebView view = (WebView) findViewById(R.id.webView1);
     view.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return false;
        }
    });
    view.getSettings().setJavaScriptEnabled(true);
    view.loadUrl("http://example.com");
}

来自 shouldOverrideUrlLoading

的文档
  

让主机应用程序有机会在新的时候接管控件   url即将加载到当前的WebView中。如果是WebViewClient   未提供,默认情况下WebView将要求活动管理器选择   url的正确处理程序。如果提供了WebViewClient,则返回   true表示宿主应用程序处理url,而返回false   表示当前WebView处理URL。

答案 1 :(得分:1)

检查WebView教程here。只需实现Web客户端并在loadUrl之前设置它。最简单的方法是:

view.setWebViewClient(new WebViewClient());

有关网络内容的更高级处理,请考虑使用ChromeClient。