gpt4 book ai didi

android - 不在新浏览器中打开 webview

转载 作者:IT王子 更新时间:2023-10-28 23:26:58 27 4
gpt4 key购买 nike

我正在实现一个 webview。我想要网页顶部的两个按钮。

我有一个垂直的线性布局,里面是一个带有两个按钮的水平布局,以及一个在水平布局之外的 webview。

我只是在 Java 代码中加载 Google URL。

每次我运行应用程序时,它都会在应用程序顶部打开一个新浏览器,并且按钮会被隐藏。它没有显示 webview 上方的按钮。请帮助并告诉我如何在不打开另一个浏览器的情况下在 webview 中加载 URL,或者如何通过打开 native 浏览器来阻止它,以便页面加载到 webview 本身而不是新浏览器中。

谢谢大家

最佳答案

是的。您必须在该类中实现 WebViewClient 类和 Override shouldOverrideURLLoading() 方法。

为什么?因为 webview 只是打开您的“确切链接”,如果该链接重定向其他链接,android 将为此操作打开默认浏览器。

如您所知,在您的示例中,当您连接到 google.com 时,google 将重定向到您所在国家/地区的 google。例如,如果你在中国,google 会去 google.com.cn,如果在越南,会去 google.com.vn

这是我的简单例子:(你可以想象这是一个新的浏览器,:laugh)

首先是布局xml文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<LinearLayout
android:layout_height="wrap_content"
android:layout_width="wrap_content">

<EditText
android:id="@+id/url"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_weight="1"
android:hint="Input URL"/>

<Button
android:id="@+id/run"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_weight="0"
android:text="GO"/>

</LinearLayout>

<WebView
android:id="@+id/webview"
android:layout_height="fill_parent"
android:layout_width="fill_parent"/>

</LinearLayout>

这是主要 Activity 的代码:

package com.basic;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.EditText;

public class WebViewExample extends Activity{

WebView webView;

@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.webview);

webView = (WebView) findViewById(R.id.webview);

Button button = (Button) findViewById (R.id.run);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
gotoPage();
}
});

}

private void gotoPage(){

EditText text = (EditText) findViewById(R.id.url);
String url = text.getText().toString();

WebSettings webSettings = webView.getSettings();
webSettings.setBuiltInZoomControls(true);

webView.setWebViewClient(new Callback()); //HERE IS THE MAIN CHANGE
webView.loadUrl(url);

}

private class Callback extends WebViewClient{ //HERE IS THE MAIN CHANGE.

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return (false);
}

}

}

希望对你有帮助:)

关于android - 不在新浏览器中打开 webview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5561709/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com