gpt4 book ai didi

android - webview loadUrl 在浏览器中打开url

转载 作者:行者123 更新时间:2023-11-29 21:48:53 32 4
gpt4 key购买 nike

我试图在 webview 中打开 url,但它在外部浏览器中打开 url。

我的代码是

public class MainActivity extends Activity
{

private WebView webView;

String URL = "https://login.salesforce.com/services/oauth2/authorize?response_type=token&display=touch&client_id=3MVG9Y6d_Btp4xp7w.6oGLerlRztTTUKMEL8QWHvuB5miUgdJzQ0HgnMB7dhm1mTiluRv4ud9cZYeFcAz7hXP&redirect_uri=https%3A%2F%2Flogin.salesforce.com%2Fservices%2Foauth2%2Fsuccess";
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);



setContentView(R.layout.webview);

webView = (WebView) findViewById(R.id.webView1);
webView.getSettings().setJavaScriptEnabled(true);

webView.getSettings().setDomStorageEnabled(true);
webView.loadUrl(URL);
//webView.loadUrl("https://www.google.co.in/");
webView.setWebViewClient(new MyWebViewClient());
}

private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (Uri.parse(url).getHost().equals(url)) {
// This is your web site, so do not override; let the WebView to load the page
return false;
}
// Otherwise, the link is not for a page on my site, so launch another Activity that handles URLs
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
return true;
}

@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
super.onReceivedSslError(view, handler, error);

// this will ignore the Ssl error and will go forward to your site
handler.proceed();
}
}

}

如果 url 是 https:www.google.com,则该 url 仅在 webview 中打开。我用谷歌搜索很难找到解决方案,但我无法找到它。如何解决问题?

最佳答案

问题出在你身上

    public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (Uri.parse(url).getHost().equals(url)) {
// This is your web site, so do not override; let the WebView to load the page
return false;
}
// Otherwise, the link is not for a page on my site, so launch another Activity that handles URLs
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
return true;
}

它试图以不同的 Intent 加载 URL,因此你的默认浏览器启动了。你真正想检查什么

Uri.parse(url).getHost().equals(url)

尝试放置日志进行检查,您会找出问题所在。

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

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