首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用ShouldOverrideUrlLoading从Xamarin.Forms Android webview中检索标题时遇到问题,始终(空)

在使用ShouldOverrideUrlLoading从Xamarin.Forms Android WebView中检索标题时遇到问题,始终返回空的情况下,可能是由于以下原因导致的:

  1. WebView中的页面尚未完全加载完成,导致标题尚未设置。可以尝试在WebView加载完成后再获取标题。
  2. WebView中的页面没有设置标题。需要确保网页中设置了正确的标题。
  3. 应用程序权限问题,可能导致无法获取WebView中的标题。可以检查应用程序的权限设置,确保拥有网络访问权限。

针对这个问题,可以尝试以下解决方法:

  1. 在WebView的OnPageFinished事件中获取标题:
代码语言:txt
复制
webView.SetWebViewClient(new WebViewClient());
webView.SetWebChromeClient(new WebChromeClient());

webView.SetWebViewClient(new WebViewClient()
{
    public override void OnPageFinished(WebView view, string url)
    {
        string pageTitle = view.Title;
        // 这里可以处理获取到的标题
    }
});
  1. 通过JavaScript从WebView中获取标题:

首先,在WebView中启用JavaScript:

代码语言:txt
复制
webView.Settings.JavaScriptEnabled = true;

然后,通过EvaluateJavascript方法执行JavaScript脚本获取标题:

代码语言:txt
复制
webView.EvaluateJavascript("document.title", new JavaScriptValueCallback((result) =>
{
    string pageTitle = result; // 获取到的标题
    // 这里可以处理获取到的标题
}));

需要注意的是,在Android 4.4以下的版本上,EvaluateJavascript方法可能无法正常工作,可以使用LoadUrl方法执行JavaScript脚本,并通过AddJavascriptInterface方法与C#代码进行交互。

推荐的腾讯云相关产品:腾讯云移动浏览器服务(Tencent Mini Program Browser Service)

产品介绍链接地址:https://cloud.tencent.com/product/mbbs

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

笔记 | Xamarin

将浮出控件内容替换为 CollectionView,它显示了 FlyoutItems 集合每个项的标题。...但是,可以使用 FlyoutItemIsVisible 属性将项隐藏在浮出控件,并使用 IsVisible 属性将其浮出控件删除: 类型为 bool 的 FlyoutItemIsVisible 指示项是否已隐藏在浮出控件但仍可以通过...Docs WebViewSettings积累 - 简书 WebView使用详解 - 知乎 使用Chrome DevTools调试WebView_秦川小将-CSDN博客 Android WebView...相应的,写文件,会将所有的0x0A换成0x0D0x0A。 所以,若使用文本方式打开二进制文件,就很容易出现文件读不完整,或內容不对的错误。...重要 请始终禁用已发布应用程序的调试状态,因为如果不禁用此状态,则可能(通过 JDWP)获得 Java 进程的完全访问权限并在应用程序的上下文中执行任意代码。

24K20
  • WebView深度学习(一)之WebView的基本使用以及Android和js的交互

    五、WebView使用漏洞 及其修复方式 六、WebView 的缓存机制 & 资源预加载方案 由于内容太多,分三篇讲解: WebView深度学习(一)之WebView的基本使用以及Android...就必须销毁Webview //但是注意:webview调用destory,webview仍绑定在Activity上 //这是由于自定义webview构建传入了该Activity的context对象...//LOAD_NO_CACHE: 不使用缓存,只网络获取数据. //LOAD_CACHE_ELSE_NETWORK,只要本地有,无论是否过期,或者no-cache,都使用缓存的数据。...shouldOverrideUrlLoading(WebView view, String url) { //使得打开网页不调用系统浏览器, 而是在本WebView显示 view.loadUrl...的方法shouldOverrideUrlLoading()回调拦截url 不存在漏洞问题 使用复杂,需要进行协议约束,native层到web层传递值比较繁琐 不需要返回值情况下互调场景 通过 WebChromeClient

    6K31

    Android开发中使用WebView控件浏览网页的方法详解

    本文实例讲述了Android开发中使用WebView控件浏览网页的方法。...1.WebView使用WebView控件,首先需要在xml布局文件定义一个WebView控件,定义的方法如下: <WebView android:id="@+id/webView" android...()方法判断是否能够该网页返回上一个打开的网页;使用getTitle()和getUrl()方法获得当前网页的标题和URL路径;使用loadUrl(String url)方法加载所要打开的网页等等。...对象后,便可以WebSettings对象取出WebView的默认属性和状态了,当然了,我们也可以通过WebSettings对象对WebView的默认属性和状态进行设置。...(WebView view, Bitmap icon)方法会被调用;当网页的标题发生改变,onReceivedTitle(WebView view, String title)方法会被调用。

    2.8K10

    首个hybird商业项目踩坑总结

    ()方法,使得打开网页不调用系统浏览器, 而是在本WebView显示 @Override public boolean shouldOverrideUrlLoading..., newProgress); } //获取Web页标题 @Override public void onReceivedTitle(WebView webView, String...//复写shouldOverrideUrlLoading()方法,使得打开网页不调用系统浏览器, 而是在本WebView显示 @Override public boolean...通过WebViewClient 的shouldOverrideUrlLoading()方法回调这个使用起来也比较简单,也不存在方式1的安全隐患,不过JS获取Android方法的返回值复杂。...Webview发生崩溃不会导致app闪退,就像第二点说的,因为Webview是在独立进程,如果发生崩溃,主进程还安然无事,app还在运行,没有闪退,不闪的才是健康的。

    1.2K10

    AndroidWebview 如何相互 sayHello(一)

    本篇为第一篇:Androidwebview 的交互 后续一篇是:IOS 和 webview 的交互 如需获得最新的内容,可以关注微信公众号:前端小吉米 在移动时代 Web 的开发方式逐渐 PC...的性能优化 Anriod 开发 Webview 基础 WebviewAndroid 里面其实就是一个组件而已,它可以像其他的 Android 组件一样在 screen 定位布局。...顺便提一下: activity是Android开发的一个非常重要的概念,相当于Router的一个子页面。所以说,你新打开的 webview 的样式和布局,都需要通过客户端发版本才能更新的。...对于比使用其它的,比如通过 shouldOverrideUrlLoading 来处理的方法,这种方法实现的效率更高,更有效率。...所以,这里可以考虑使用构造 iframe 请求来实现类 shouldOverrideUrlLoading 的请求。

    1.8K30

    那些年在WebView上踩过的坑

    之前我在Android使用WebView与JS交互全解析一文,介绍了通过Webview和JS的交互方式,但Webview这个控件简直是让人又爱又恨,各种你想不到的错误在各种奇怪的手机上,各种不一样的版本里...2.慎重在shouldoverrideurlloading返回true 当设置了WebviewClient,在shouldoverrideurlloading如果不需要对url进行拦截做处理,而是简单的继续加载此网址...这里还要说一点,当加载出错的时候,比如无网络,这时onReceiveTitle获取的标题为 找不到该网页,因此建议当触发onReceiveError,不要使用获取到的title. 8.怎么隐藏缩放控件...调用destory,webview仍绑定在Activity上.这是由于自定义webview构建传入了该Activity的context对象,因此需要先从父容器移除webview,然后再销毁webview...onDestory()里销毁掉webview及时清理内存,另外需要注意创建webview需要使用applicationContext而不是activity的context,销毁不再占有activity

    2.1K31

    Android基于JsBridge封装的高效带加载进度的WebView

    概述 去年4月项目就一直用起了JsBridge,前面也针对jsBridge使用姿势介绍过一篇入门篇,《Android JsBridge实战 打造专属你的Hybrid APP》,本篇接着继续深入,通过再次优化封装...的shouldOverrideUrlLoading执行 姿势那就是这样: public boolean shouldOverrideUrlLoading(WebView view, String...为了加入顶部的加载进度条,复写WebChromeClientonProgressChanged,在这里更改我们加入的ProgressBar的进度,你也可以设置网页标题,甚至可以全屏!...LOAD_CACHE_NORMAL: API level 17已经废弃, API level 11开始作用同LOAD_DEFAULT模式 LOAD_NO_CACHE: 不使用缓存,只网络获取数据...本地没有缓存网络上获取, 这个和Http缓存一致,我不在过多介绍,如果你想自定义缓存策略和时间,可以尝试下, 清除缓存 CacheManager来处理webview缓存相关: clearCache

    1.6K30

    史上最全webview详解

    title用来设置自己界面的title //当加载出错的时候,比如无网络,这时onReceiveTitle获取的标题为 找不到该网页, //因此建议当触发onReceiveError...但是注意: webview调用destory,webview仍绑定在Activity上.这是由于自定义webview构建传入了该Activity的context对象,因此需要先从父容器移除webview...title用来设置自己界面的title //当加载出错的时候,比如无网络,这时onReceiveTitle获取的标题为 找不到该网页, //因此建议当触发onReceiveError...但是注意: webview调用destory,webview仍绑定在Activity上.这是由于自定义webview构建传入了该Activity的context对象,因此需要先从父容器移除webview...但是注意: webview调用destory,webview仍绑定在Activity上.这是由于自定义webview构建传入了该Activity的context对象,因此需要先从父容器移除webview

    6.6K90
    领券