【问题标题】:Android open URL in WebViewAndroid 在 WebView 中打开 URL
【发布时间】:2018-04-05 05:19:53
【问题描述】:

我首先创建的是 Android 测试应用程序。

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

但是当我打开应用程序并单击其他页面链接时,我会得到选择的列表,例如,在“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);

    }
}

谢谢!

【问题讨论】:

标签: android webview


【解决方案1】:

您需要创建一个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 会要求 Activity Manager 选择 url 的正确处理程序。如果提供了 WebViewClient,则返回 true 表示主机应用程序处理 url,而返回 false 表示当前 WebView 处理 url。

【讨论】:

    【解决方案2】:

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

    view.setWebViewClient(new WebViewClient());
    

    要对 Web 内容进行更高级的处理,请考虑使用 ChromeClient。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-23
      • 1970-01-01
      • 2016-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-13
      相关资源
      最近更新 更多