setWebViewClient 与 setWebChromeClient 有什么区别?

2023-12-06

有什么区别setWebViewClient vs. setWebChromeClient在安卓中?


来自源代码:

// Instance of WebViewClient that is the client callback.
private volatile WebViewClient mWebViewClient;
// Instance of WebChromeClient for handling all chrome functions.
private volatile WebChromeClient mWebChromeClient;

// SOME OTHER SUTFFF.......

/**
 * Set the WebViewClient.
 * @param client An implementation of WebViewClient.
 */
public void setWebViewClient(WebViewClient client) {
    mWebViewClient = client;
}

/**
 * Set the WebChromeClient.
 * @param client An implementation of WebChromeClient.
 */
public void setWebChromeClient(WebChromeClient client) {
    mWebChromeClient = client;
}

使用 WebChromeClient 允许您处理 Javascript 对话框、图标、标题和进度。看一下这个例子:向 WebView 添加alert()支持

乍一看,差别太大了网页浏览客户端 & WebChrome客户端。但是,基本上:如果您正在开发一个不需要太多功能但渲染 HTML 的 WebView,您可以只使用WebViewClient。另一方面,如果您想(例如)加载正在呈现的页面的图标,您应该使用WebChromeClient对象并覆盖onReceivedIcon(WebView view, Bitmap icon).

大多数时候,如果你不想担心这些事情......你可以这样做:

webView= (WebView) findViewById(R.id.webview); 
webView.setWebChromeClient(new WebChromeClient()); 
webView.setWebViewClient(new WebViewClient()); 
webView.getSettings().setJavaScriptEnabled(true); 
webView.loadUrl(url); 

并且您的 WebView(理论上)将实现所有功能(作为 Android 原生浏览器)。

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

setWebViewClient 与 setWebChromeClient 有什么区别? 的相关文章

  • 您的应用中的 Google Analytics SDK

    我按照这里的说明进行操作 https developers google com analytics devguides collection android v3 https developers google com analytics
  • 即使我单击“运行”,Eclipse 也会运行调试模式

    Eclipse 总是在调试模式下启动我的应用程序 即使我单击常规的 运行 按钮 有任何想法吗 我发现我必须重新启动 Xoom 才能使其再次正常工作
  • 无法获取项目的未知属性“assembleRelease”

    将 Android Studio 更新到版本 2 2 并将 gradle 插件更新到 2 2 0 后 出现以下错误 错误 32 1 评估项目 jobdispatcher 时出现问题 无法获取 org gradle api Project 类
  • Android Studio Canary 3.4 Canary 4:错误:功能插件不支持variant.getApplicationId()

    自从我在新版本上更新了我的项目以来Android Studio 3 4 金丝雀 4 gradle 同步失败 因为 ERROR variant getApplicationId is not supported by feature plug
  • android:ScrollView(或视差)内的RecyclerView

    我有一个片段2 次卡片浏览内有多个控件 below我有第二个卡片视图回收者视图 这有效perfect 问题是 recyclerview 启动了屏幕的最底部 并且滚动recyclerview非常small 以前使用过列表视图 这使我可以适应您
  • Android 中图像字节表示的每像素字节数

    我目前正在编写一个Android应用程序 需要在其中使用OCR 为了实现这一点 我将 Tesseract 与tesseract android tools 项目 http code google com p tesseract androi
  • 如何在 Android 中创建始终位于顶部的全屏覆盖 Activity

    我希望能够创建一个始终位于 Android 显示前面的 Activity 它不应该接收任何输入 只需将其传递到其下面的任何应用程序即可 像平视显示器之类的东西 我能够研究我需要将底层窗口类型设置为 TYPE SYSTEM ALERT 但看起
  • 如何连接到Google Play服务并加载排行榜

    我想将我的游戏与 Google Play 服务连接 我已阅读有关 Android 开发人员的文档 并尝试遵循输入数字示例 但仍然无法加载排行榜 我有导入baseGameUtils 但我使用andengine 所以我没有使用来自谷歌的exte
  • 构建应用程序时出现 BufferOverflowException

    每次我想运行我的 Android 应用程序时 我都会收到错误 2013 11 02 13 05 36 Dex Loader Unable to execute dex java nio BufferOverflowException Che
  • 如何从画布中删除路径区域(Android)

    我需要裁剪角落ImageView 不要将它们弄圆 而是擦除每个角上的三角形 似乎唯一的方法就是覆盖onDraw方法并使用从画布上删除这些区域Path 问题是我没有纯色背景 所以我需要擦除这些区域 但不要用某种颜色填充它们 我为此使用以下代码
  • MutableStateflow 值、更新、发出

    假设我有一个可变状态流 https kotlin github io kotlinx coroutines kotlinx coroutines core kotlinx coroutines flow mutable state flow
  • 旋转 Google 地图中的两层标记图标

    在我的应用程序中 我向地图添加了一定数量的标记 如下所示 private fun addMarker googleMap GoogleMap location Location val options MarkerOptions optio
  • 如何在Room的数据库迁移中正确添加索引?

    我在迁移 Room 数据库时遇到问题 在更新的数据库中 我必须将一个字段从整数更改为双精度值 我读到它并不像听起来那么容易 为了做到这一点 我必须使用这个更改后的属性创建新的临时表 复制前一个表中的所有值 删除旧的值 最后重命名临时表 我的
  • Android 5 Lollipop 阴影方向或 y 偏移

    是否有可能改变 Y 偏移的阴影方向 现在我有以下布局
  • Android 两个 Activity 之间的共享元素转换不起作用

    在我的应用程序中 我尝试使用新引入的活动之间共享的元素 如果共享元素具有固定位置 例如 android layout gravity top 但是当视图被锚定时问题就出现了 我的第一个活动如下所示
  • Android - 检测视图上的双击和三次点击

    我一直在尝试构建一个可以检测双敲击和三敲击的敲击检测器 在我的努力失败后 我在网上搜索了很长时间以找到可以使用的东西 但没有运气 奇怪的是 像这样的图书馆如此稀缺 有什么帮助吗 你可以尝试这样的事情 尽管我通常建议不要使用三次点击作为一种模
  • Android SDK WebView调用Activity

    我试图在单击 WebView 组件内的链接时启动活动 我的Webview已加载到里面Main java我想启动SubActivity java当点击网站内的链接时Main java 另外 如何将参数传递给此活动 Example inspec
  • 如何以编程方式检测android中可用的底部软导航栏?

    我试图通过 android 程序确定软导航栏 我没有找到直接的方法来确定 有没有办法找到导航栏的可用性 软导航栏图像在这里 以下方法对我有用并在许多设备上进行了测试 public boolean hasNavBar Resources re
  • FCM 主题是否适合更多用户?

    我对使用主题消息有点困惑 我的场景是根据通知触发一些作业 请帮助我更多地了解这一点 如果我们正在处理大量用户 则可以使用 FCM 主题向用户发送通知 我们可以只使用数据消息和主题消息吗 使用主题发送的消息是否保证送达 我在 FCM 文档中看
  • 如何从另一个活动更新 Recyclerview 数据

    我有两个活动 MainActivity 和 Addlogactivity 我正在更新 Addlogactivity 中的数据 该数据应显示在 mainactivity recyclerview 中 数据未在数据库中更新 MianActivi

随机推荐

  • 在 jQuery Mobile 1.1 中进行繁重处理之前显示加载微调器?

    我要疯狂地尝试让旋转器出现 我已将繁重的处理功能绑定到一个按钮 document delegate clearread tap onClearRead 所以点击它会调用这个 var onClearRead function setTimeo
  • “System.IO.Stream”不包含 Windows 应用商店应用中“关闭”的定义

    当尝试在 Windows 应用商店应用程序上构建我的 Unity 3D 项目时 出现此错误 System IO Stream 不包含 Close 的定义 并且找不到接受 System IO Stream 类型的第一个参数的扩展方法 Clos
  • 用于突出显示功能的更高效的 JavaScript 代码?

    所以这是我需要清理的功能 我需要创建一个功能 观众可以单击句子中的任何单词 它就会突出显示 然而 我需要做到一次只突出显示一个单词 例如 如果您单击单词 you 然后您改变主意并单击单词 eagle 则单词 you 将被取消选择 它已经有现
  • UseStatusCodePagesWithReExecute 不适用于禁止 (403)

    当我指定 404 作为 http 结果代码时 UseStatusCodePagesWithReExecute正在按预期工作 当我指定 403 作为 http 结果代码时 UseStatusCodePagesWithReExecute没有按预
  • 运行 Java 程序

    我查看了其他一些 SO 问题 没有找到任何可以解决我的问题的内容 我有一个 Main java 文件 如下 和一个 OthelloLib jar 文件 没有关联的源文件 Running javac Main java失败了 Main jav
  • 如何在 ASP.Net Core 6.0 中实现 HSTS 标头?

    我需要在 ASP Net Core 6 0 WEB API 应用程序中实现 HSTS 标头安全性 下面是我的程序 cs var builder WebApplication CreateBuilder args Https redirect
  • Twilio 录制:暂停和恢复

    我相信答案是否定的 但 Twilio 是否提供暂停 恢复录音的功能 用例是对通话进行录音 但在收集敏感信息时暂停录音 从 REST 文档来看 它似乎不是受支持的功能 我认为有人可能已经找到了满足此要求的一些选项 这是可能的 尽管从文档中并不
  • 在 Python 3 中从 utf-16 转换为 utf-8

    我正在使用 Python 3 进行编程 但遇到了一个小问题 我在网上找不到任何关于它的参考 据我了解 默认字符串是 utf 16 但我必须使用 utf 8 我找不到将从默认字符串转换为 utf 8 的命令 我非常感谢你的帮助 在 Pytho
  • 当 springboot 应用程序在 docker 容器上运行时,无法找到 LoginModule 类:org.apache.kafka.common.security.plain.PlainLoginModule

    我有一个 Spring Boot 应用程序使用spring kafka向 kafka 发布消息的依赖 kafka 配置使用标准 kafka properties sasl jaas config 对 kafka 服务器进行身份验证 应用程序
  • 如何从 Newlib 在 GCC 中实现 printf?

    我正在努力使用 GCC 将 printf 从 newlib 正确实现到我的 esp32 中 我已经阅读了 newlib 文档 它为我提供了有关如何调用 printf 的一般信息 但没有向我解释后端实现 根据我当前的研究 我确定 printf
  • Jenkins 基于用户的工作安全

    我在本地计算机上只有一个 jenkins 实例 我们用它来构建代码 我们有不同的项目团队从事不同的项目 每个项目都有不同的工作 为了消除一个团队中的某人意外搞乱另一个团队工作的可能性 我创建了多个 jenkins 用户 但是 所有可以登录的
  • Sqlite 中的 acos 函数

    我有一个关于 SQLite 查询的问题 我需要执行这样的 sqlite 查询 SELECT id 6371 acos cos radians 78 3232 cos radians lat cos radians lng radians 6
  • 在 Android (JAVA) 中的字符串上使用 XPath

    我正在寻找一些在 Android 中使用 xpath 的示例 或者谁能 分享一下他们的经历 我一直在努力解决这个问题的尾部或头部 我有一个包含标准 xml 文件的字符串 我相信我需要将其转换为 xml 文档 我发现这段代码我认为可以解决问题
  • 如何让 2 个 HtmlUnit Web 客户端使用相同的 cookie?

    如果我在不同的线程中创建 2 个 WebClient 如何让它们使用相同的 cookie 您可以使用以下代码 CookieManager cookieManager new CookieManager webClient1 setCooki
  • 无法将 NSTaggedPointerString 类型的值转换为 NSDictionary

    我正在尝试将 Firebase 值分配给我的结构 var productsArray Product 但是我有一个小错误 无法将 NSTaggedPointerString 类型的值转换为 NS字典 我知道我不能直接分配它们 所以这就是我这
  • NOT IN 不会产生与 NOT EXISTS 相同的结果

    这些都是相当基本的陈述 我有一个链接到另一个表中的项目的图形列表 我想检查有多少图形没有使用并且理论上可以删除 所以首先我使用了 NOT IN 子句 SELECT GraphicNr Graphicfile FROM dbo Graphic
  • 对哈希进行排序的最快方法是什么?

    人们经常问什么是best方式对哈希进行排序 但随后他们不会询问所需的后续问题 即什么是fastest方式 这确实决定了最好的方式 无论使用什么版本的 Ruby 在 Ruby 中对哈希进行排序的最快方法是什么 我正在寻找其他答案 以涵盖极端情
  • 从 Android 中 JSONString 中存储的 URL 加载 ImageView 中的图像

    我有一个JSON字符串 说出名称和 Url 我需要将名称提取到TextView并提取并显示图像ImageView 以下是上述场景的代码 public static final String JSON STRING WebImages Ima
  • 使用 VBA 动态创建 HTML 表格行

    我正在使用 VBA 在 Outlook 电子邮件中创建一个表 我已经弄清楚如何生成表 但我的问题是我需要动态调整表中的行数 对于某些电子邮件 将有两行数据 对于其他电子邮件 将有三行 依此类推 在下面的代码中rowstocontact is
  • setWebViewClient 与 setWebChromeClient 有什么区别?

    有什么区别setWebViewClient vs setWebChromeClient在安卓中 来自源代码 Instance of WebViewClient that is the client callback private vola