使用 loadDataWithBaseURL 禁用 webview 中的链接

2023-11-23

我使用以下代码加载电子书的 html 内容,其中 templateString 包含连接到主文件中的样式表和图像的 html 内容。

String itemURL = "file://" + itemPath;
testWV.loadDataWithBaseURL(itemURL,  templateString, "text/html", "UTF-8", "about:blank");

我面临的问题是锚链接根本没有响应。

我注意到,如果 itemURL 为 null 或者如果我使用 loadData 而不是 loadDataWithBaseURL,则链接可以工作,但我会失去通过 itemURL 连接的图像和样式的连接。

请注意,网络视图可见性始终设置为可见。 添加我已将以下功能添加到 webview

this.getSettings().setJavaScriptEnabled(true);
this.requestFocusFromTouch();
this.setVerticalScrollBarEnabled(false);
this.setHorizontalScrollBarEnabled(false);
this.getSettings().setSupportZoom(true);
this.getSettings().setBuiltInZoomControls(true);
this.getSettings().setDisplayZoomControls(false);
this.getSettings().setAllowContentAccess(true);
this.getSettings().setAllowFileAccess(true);
this.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
this.getSettings().setAllowFileAccessFromFileURLs(true);
this.getSettings().setAllowUniversalAccessFromFileURLs(true);

这是为 webview 初始化的 onTouch 方法:

this.setOnTouchListener(new View.OnTouchListener() {

    public boolean onTouch(View v, MotionEvent event) {

        WebView.HitTestResult hr = ((WebView)v).getHitTestResult();
        System.out.println("getExtra: "+hr.getExtra());
        // getExtra always gives null when webview loaded with loadDataWithBaseURL while it should give the url of the link pressed when the user touches a link

        return false;
    }
});

如果需要更多代码,我可以分享。


set WebViewClient给你的webView并将数据加载到loadDataWithBaseURL并传递你的基本网址

这将有助于将锚点网址加载到webview

 webview.getSettings().setJavaScriptEnabled(true);
 webview.requestFocusFromTouch();
 webview.setWebViewClient(new MyWebClient());

here is WebViewClient class

class MyWebClient extends WebViewClient {

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
    }

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

    public void onPageFinished(WebView view, final String url) {
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 loadDataWithBaseURL 禁用 webview 中的链接 的相关文章

  • Android webview 滚动不起作用

    我正在尝试在网络视图中向下滚动到页面底部 我正在使用谷歌在其教程中提供的网络视图示例 我正在使用这行代码来尝试滚动 但它不起作用 mWebView pageDown true 关于如何使其以编程方式滚动有什么建议吗 谢谢 public cl
  • 如何强制 Eclipse 将 xml 布局和样式显示为文本?

    我最近升级到带有 ADT 20 0 3 的 Eclipse 4 2 Juno 如果我查看旧项目中的布局或样式 Eclipse 只会向我显示其适当的基于控件的编辑器 我想编辑语法突出显示的 xml 文本 我没有找到将插件的编辑器切换到此模式的
  • Android:使用 OAuth 访问 google 任务时出现问题

    由于 google 任务没有公共 api 我想编写解决方法并像浏览器一样请求数据 然后解析结果以进一步显示 为了访问数据 我使用 google 实现了 OAuth 身份验证来访问此 url https mail google com htt
  • 在android中通过BLE传输图像

    我使用以下代码传输 1 MB 的图像 如果在每个数据包之间实现线程延迟 则图像将成功传输 如果未设置线程延迟 则所有数据包均从BluetoothGattServer 发送 但BluetoothGattCallback 不会接收所有数据包 任
  • 为什么我无法在 WebView (UWP) 中打开外部浏览器中的链接?

    我正在开发一个即将完成的 Web 应用程序 该应用程序有一个本地 Web 应用程序 其中有一些链接 我想在外部浏览器 Edge Chrome 等 中打开它们 我的代码分为 3 部分 1 Windows运行时组件 using System u
  • Android 上的 SVG 支持

    Android 支持 SVG 吗 有什么例子吗 最完整的答案是这样的 Android 2 x 默认浏览器本身不支持 SVG Android 3 默认浏览器支持 SVG 要将 SVG 支持添加到 2 x 版本的平台 您有两个基本选择 安装功能
  • 播放 SoundCloud 曲目

    我可以在 Android 应用程序中播放 SoundCloud 中的曲目吗 我正在尝试这段代码 但它不起作用 String res https api soundcloud com tracks 84973999 stream client
  • 带操作按钮的颤动本地通知

    我在我的 flutter 项目中尝试了 flutter 本地通知插件 它在简单通知上工作正常 但我需要带有操作按钮的通知功能 请帮助我或建议我实现此功能 不幸的是 flutter local notifications 插件尚不支持操作按钮
  • 从 React Native Js 代码调用 Android Native UI 组件方法

    我创建了一个 CustomView SignatureView java 它扩展了 LinearLayout 以捕获 Android Native 中的签名 并创建了SignatureCapturePackage java和Signatur
  • Android Library项目使用gradle在命令行编译时无法导入另一个库项目的R类

    我的 android 项目有这样的结构 ProjectDir settings gradle MyApp depends on LibraryA and LibraryB gt build gradle gt All the other a
  • 如何在手机缓存中保存用户名和密码

    我有一个用户登录应用程序 它需要用户的电子邮件和密码 我想将电子邮件和密码保存在手机缓存中 以便用户不必再次输入 有什么办法可以将数据保存在Android缓存中吗 我认为你需要使用SharedPreference用于在设备中使用应用程序时保
  • Camera.open()返回NULL Android开发

    我正在按照构建相机应用程序的教程进行操作http developer android com tools device html http developer android com tools device html我对 Camera o
  • Android 应用程序中的 Eszett (ß)

    我的 res layout activity 文件中的德语 字符在我的应用程序中自动转换为 ss 即使我将语言和键盘设置为德语 它仍然不会显示 Android 中可以显示 吗 edit
  • 如何检查用户在EditText中输入自己的电话号码?

    用户将在我的 Android 应用程序的注册页面上的编辑文本中输入手机号码 如何检查用户输入的是他 她的手机号码而不是其他人的 我试过这个 TelephonyManager tMgr TelephonyManager mAppContext
  • 获取手机的 z 轴和磁北极(而不是 y 轴)之间的角度

    我知道如何使用 getOrientation 方法获取手机 y 轴和磁北之间的方向角 如此处所述https developer android com guide topics sensors sensors position https
  • PhoneStateListener 不调用

    这是我的完整代码 广播示例 java package com example broadcast gt import android app Activity import gt android content Context import
  • react-native run-android 失败并出现错误:任务 ':app:dexDebug' 执行失败

    我使用的是 Windows 8 1 和react native cli 1 0 0 and react native 0 31 0 添加后react native maps对于该项目 我运行了命令react native upgrade并给
  • 如何在android asynctask中使用inputstream作为参数?

    我正在制作一个 Android 应用程序来跟踪股票详细信息 我将通过 csv 雅虎财经 检索数据 据我所知 在android 4 0中 网络连接无法在主线程上完成 因此 我将使用 asynctask 来建立连接 但是 我在参数方面遇到了一些
  • Android:RecyclerView 不显示片段中的列表项

    有人可以帮我尝试让我的 RecyclerView 出现吗 如果我不在片段中实现它 就会出现这种情况 然而 当我尝试将其实现到片段中时 CarFront 中的其他 XML 代码与 RecyclerView 分开显示 我的日志中收到此错误 E
  • 在 KitKat 4.4.2 中获取 SDard 路径和大小

    我在 Google Play 上有一个设备信息应用程序 在该应用程序中我有存储信息 我知道 Android 4 4 在访问外部 SD 卡方面发生了一些变化 内部似乎没有给我带来问题 我的问题是 如何可靠地获取 KitKat 上 SD 卡的大

随机推荐

  • contenteditable 的 IE 输入事件?

    我想知道是否有一个polyfill来支持内容可编辑输入事件在IE11 我专门讲一下这个事件 http jsfiddle net ch6yn 每当发生变化时就会触发内容可编辑div 无论来源如何 例如复制 粘贴 拖放 键入等 div Plea
  • 如何在 Android 中使用 Translate Animation 为视图添加动画效果

    我的应用程序中有一个 ImageView 它可以位于屏幕上的任何位置 在触摸时 我想将此视图移动到屏幕中心 我尝试使用翻译动画及其 RELATIVE TO PARENT 功能来实现此功能 如下所示 TranslateAnimation tr
  • Docker 中的“暴露”和“发布”有什么区别?

    我正在尝试 Dockerfile 我想我理解了大部分逻辑 但是 在这种情况下 我没有看到 公开 和 发布 端口之间的区别 我首先看到的所有教程都包括EXPOSEDockerfile 中的命令 EXPOSE 8080 然后他们从此 Docke
  • JSP标签生命周期

    我刚刚在我的代码中引入了一个错误 因为我似乎误解了 jsp 标签的生命周期 该标签在出现错误之前是这样工作的 我将一些集合作为属性传递给标签 并将其显示为表格 该集合从控制器传递到 JSP 中 出现错误后 我删除了设置集合的属性 相反 在标
  • 莱文斯坦到达默劳-莱文斯坦

    我坐在这里 用 Java 为我的主程序编写一些算法 到目前为止是第一个 我对 levenshtein 算法进行了很好的编程 这要归功于 wiki 为新手提供的伪代码以及一个很好的教程 D 然后我决定升级到 Damerau 并添加额外的行 但
  • 将 Angular 6 应用程序部署到 github 页面时出现 404

    我的应用程序在本地运行时运行良好 我已经编译了构建 没有错误 网站链接在这里 https evilernie44 github io users index html 当我尝试通过 github 页面加载网站时 我的 get 请求收到 40
  • 如何在不锁定文本文件的情况下读取它?

    我有一个 Windows 服务以简单的格式将其日志写入文本文件 现在 我将创建一个小型应用程序来读取服务日志 并将现有日志和添加的日志显示为实时视图 问题在于 服务锁定文本文件以添加新行 同时查看器应用程序锁定文件以进行读取 服务代码 vo
  • 我无法使用 useLocation 从 React router Link 组件获取状态。那么我怎样才能通过呢?

    我正在尝试将 videoTitle 从链接状态传递到我的测验页面 但我无法通过 useLocation 传递它 它向我抛出此错误 TypeError 无法解构 位置 的属性 状态 因为它未定义 从这个链接组件 To this 这是视频页面的
  • 在 Rust 中创建向量的向量

    此代码将无法编译 fn main let m1 vec 1 2 3 let m2 vec m1 m1 m1 let m3 vec vec 1 2 3 vec 4 5 6 vec 7 8 9 for i in m2 for j in i pr
  • 委托用途:业务应用程序

    背景 鉴于 大多数 开发人员都是业务应用程序开发人员 我们最喜欢的编程语言的功能是在我们正在使用它们的上下文中使用的 作为一名 C ASP NET 应用程序开发人员 我倾向于仅在处理 UI 事件时使用委托 事实上 这是我缺乏经验的一部分 我
  • Selenium WebDriver - getCssValue() 方法

    我正在做一个练习 使用 cssGetValue 方法从特定 Web 元素的 CSS 属性中检索值 我有两个问题 为什么cssGetValue方法返回值13px 该方法实际引用了哪个Web元素 1a 我想获取标记为 按 ID 的部分的 CSS
  • 在组合框中设置默认项目

    我有一个在组合框中设置项目的功能 默认情况下会设置一个项目 例如 选择列表 public void SetOperationDropDown int cbSelectedValue null if cmbOperations Items C
  • 将日期和时间插入Mysql

    我正在尝试将日期和时间插入 mysql 日期时间字段 当用户选择日期和时间时 它将生成两个 POST 变量 我已经在互联网上搜索过 但仍然不知道该怎么做 My code date value is 05 25 2010 time value
  • 从 Assets 目录中获取文件夹名称

    我正在尝试获取 资产 中文件夹的名称 我可以使用 assetManager list 方法通过 AssetManager 获取文件的名称 但问题是它只返回文件名而不返回文件夹名 所以我尝试使用 listFiles 方法 但无法访问 Asse
  • 如何获取给定字体的上升/下降和 x 高度

    我需要得到一个ascender 下降部 and x height 通过使用以下代码 我可以找到下降部分和总高度 descender height paint descent total height descender height pai
  • Git索引和提交很慢

    我有一个本地 git 存储库并使用git add file1 file2 file3 将我的修改添加到 git 索引 然后我用普通的git commit 每个命令大约需要 3 到 6 秒 我的存储库有大约 150 000 次提交 我已经执行
  • 没有名为“matplotlib.artist”的模块

    我遇到了这个错误 No module named matplotlib artist 这是完整的错误 ModuleNotFoundError Traceback most recent call last
  • 通过原型对象或构造函数设置方法,有什么区别? [复制]

    这个问题在这里已经有答案了 您能解释一下构造函数中设置方法和通过原型对象设置方法之间的区别吗 以下代码显示了这两种设置方法的方式 say hello and say bye两者都工作正常 function MessageClass this
  • 将 Java 数组传递给 Scala

    尽管我已经使用 Scala 一段时间 并且之前也将其与 Java 混合使用 但我还是遇到了一个问题 如何将 Java 数组传递给 Scala 我知道相反的方法相当简单 然而从 Java 到 Scala 却并非如此 我应该在 Scala 中声
  • 使用 loadDataWithBaseURL 禁用 webview 中的链接

    我使用以下代码加载电子书的 html 内容 其中 templateString 包含连接到主文件中的样式表和图像的 html 内容 String itemURL file itemPath testWV loadDataWithBaseUR