gpt4 book ai didi

android - 使用 WebViewClient shouldOverrideUrlLoading 时,WebChromeClient 中的链接不会打开 safari

转载 作者:行者123 更新时间:2023-11-30 03:43:57 25 4
gpt4 key购买 nike

我使用 WebChromeClient 在我的服务器上打开一个指向 news.html 的链接,它会打开 safari 并显示内容,好的。

但是……

当我实现 WebViewClient shouldOverrideUrlLoading 以在它链接到 .pdf 文件时拦截调用(使用另一个类)时,WebChromeClient 到 news.html 的链接保留在 webview 中并且不再打开 safari...

我做错了什么,但是什么?

代码 fragment :(链接很长所以我缩短了它)

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

//only to catch url override
myWebView.setWebViewClient(new WebViewClient(){
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(url.startsWith("http://www.domain.nl/pdf")){
Intent i = new Intent();
i.putExtra("url", url);
i.setClassName("nl.domain.domain", "nl.domain.domain.PdfActivity");
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
return true ;
}
else {
return false ;
}
}
});

myWebView.setWebChromeClient(new WebChromeClient());
//loading
myWebView.loadUrl("http://www.domain.nl/news.html");

最佳答案

return false; 表示 url 没有被处理,它应该在 WebView 中打开。如果你想在外部浏览器中打开 url,你需要明确地这样做。

myWebView.setWebViewClient(new WebViewClient(){
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(url.startsWith("http://www.domain.nl/pdf")){
Intent i = new Intent();
i.putExtra("url", url);
i.setClassName("nl.domain.domain", "nl.domain.domain.PdfActivity");
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
return true ;
}

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url));
return true;
}
});

关于android - 使用 WebViewClient shouldOverrideUrlLoading 时,WebChromeClient 中的链接不会打开 safari,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15294618/

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