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

使用目标API24链接到WebView中的本地文件

是指在Android应用中使用WebView组件加载并显示本地文件。在目标API24及以上的版本中,由于安全性考虑,直接加载本地文件的方式发生了变化。

在目标API24之前的版本中,可以通过WebView的loadUrl()方法直接加载本地文件的路径,例如:

webView.loadUrl("file:///android_asset/index.html");

然而,在目标API24及以上的版本中,为了增强安全性,WebView不再允许直接加载本地文件路径。取而代之的是,需要使用FileProvider来获取本地文件的URI,并通过WebView的loadUrl()方法加载URI。以下是实现的步骤:

  1. 在AndroidManifest.xml文件中添加FileProvider的配置:<provider android:name="androidx.core.content.FileProvider" android:authorities="com.example.myapp.fileprovider" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths" /> </provider>其中,android:authorities属性指定了FileProvider的authority,可以自定义。
  2. 在res/xml目录下创建file_paths.xml文件,并添加以下内容:<paths xmlns:android="http://schemas.android.com/apk/res/android"> <external-path name="external_files" path="." /> </paths>这里的配置指定了可以访问应用的外部文件路径。
  3. 在代码中获取本地文件的URI,并加载到WebView中:File file = new File(getFilesDir(), "index.html"); Uri fileUri = FileProvider.getUriForFile(this, "com.example.myapp.fileprovider", file); webView.loadUrl(fileUri.toString());这里的"index.html"是本地文件的路径,可以根据实际情况进行修改。

需要注意的是,加载本地文件时,还需要为WebView设置权限,以允许访问文件:

代码语言:txt
复制
webView.getSettings().setAllowFileAccess(true);

这样,就可以在目标API24及以上的版本中,使用WebView加载本地文件了。

推荐的腾讯云相关产品:腾讯云移动浏览器(https://cloud.tencent.com/product/tcbrowser

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

相关·内容

如何创建修改远程仓库 + 如何删除远程仓库 + 如何删除远程仓库某个文件文件夹 + 如何使用git将本地仓库连接到多个远程仓库

六、删除Github已有的仓库某个文件文件夹(即删除远程仓库某个文件文件夹) 我们知道,在Github上我们只能删除仓库,并不能删除文件或者文件夹,所以只能用命令来解决。...即我们通过删除本地仓库某个文件文件夹后,再将本地仓库与远程仓库同步,即可删除远程仓库某个文件文件夹。...6.1、本地仓库和远程仓库同时删除文件文件夹 1、我们先在本地仓库删除掉文件a.txt ? 2、然后执行以下命令,即可删除远程仓库文件了 ? 删除远程仓库文件夹同理。不在演示。...6.2、只删除远程仓库文件文件夹,不删除本地仓库文件文件夹 假如我们想要在远程仓库中将文件夹test01删除掉,但在本地仓库并不想把它删除: ? 在命令窗口输入以下命令: ?...七、如何使用git将本地仓库连接到多个远程仓库 1、先在GiuHub(国外)、Gitee码云(国内) 和 Coding(国内) 上分别新建一个远程仓库,参考“二、创建远程仓库”。

7.4K20

腾讯TMQ在线沙龙|Robotium自动化测试介绍

另一种在服务端开通修改数据库接口,用例在需要修改数据库时,通过发送http接口请求完成数据库更新操作。 2、如何拿到被测APK签名? 答:被测APK签名文件一般存放于被测工程,需要找开发团队。...6、如何在Robotium里使用junit4里参数化测试,目前Android并不支持junit4 答:目前Android是支持junit4,可以参考AndroidJUnit4及AndroidJUnitRunner...元素是否出现、判断webviewProgress进度条、webview是否加载完成等等,具体使用哪种方式做为判断条件可能得看具体场景。...看了下api24,这个类被抛弃 答:是的,继承于ActivityInstrumentationTestCase2,或者继承于其它继承自InstrumentationTestCase类,例如SingleLaunchActivityTestCase...API24起,确实抛弃了ActivityInstrumentationTestCase2,官方API上推荐ActivityTestRule,这也是Android一个趋势吧,把test相关都以android.support

1.7K50
  • Android中导致内存泄漏竟然是它----Dialog

    WebView 导致内存泄漏众所周知 带着怀疑心态并且为了证明清白,我一个个点进去看了,总共有三条不同引用。为了后续说明,这里取了个名字: ① AuthDialog 引用 ?...第三方 jar 包使用 WebView 这可如何是好 根据以上 AuthDialog 引用,楼主把目标锁定了某sdk: 翻了一阵子恶心混淆后代码,找到下面这么一段。...如上图,MAT 引用 AuthDialog$3 指就是这里 OnDismissListener 匿名内部类!...在 VM ,每一个栈帧都是本地变量集合,而垃圾回收器是保守:只要存在一个存活引用,就不会回收它。...总结一些注意点 针对 Android4.3 及以下版本,或者使用 DVM Android 版本 使用 WebView 时候,需要注意确保调用 destroy() 考虑是否使用 applicationContext

    3K70

    H5开屏从龟速到闪电,企微是如何做到

    离线包更新机制:客户端加载时根据offid检测到本地离线包存在,则直接使用拉起,同时启动异步版本检测和更新。...Hybird应用WebView初始化是比较耗时环节,这里我们针对iOS WebView做了测试。...2)渲染路预热提速 预热流程 我们目标是消除白屏,这里理想方案是找到一种和业务无关通用解法。方案主要思路是预热,把能提前做都做了。预热是不是就是把WebView提前创建出来就好了呢?...,这里会进行收集,将曝光url业务key参数拼接到preUrl来初始化WebView,这些作为通用能力。...进一步优化 1)离线包安全 在离线包安全方面,为了防止包篡改,每我们次打包发布时都会生成包签名和文件md5。客户端在使用解析离线包时会校验完整性,在返回离线资源时会校验文件完整性。

    2.8K162

    使用Python批量复制源目录下所有Excel文件复制到目标目录

    他自己代码如下: import os import shutil import glob # 指定源目录和目标目录 source_dir = r"D:\设计类工作资料" target_dir =...r"D:\xx" #获取源目录下所有Excel文件文件名 excel_files = glob.glob(os.path.join(source_dir, "*.xlsx")) # 将源目录下所有...Excel文件复制到目标目录 for file in excel_files: shutil.copyfile(file, os.path.join(target_dir, file)) # 将库文件复制到目标目录...import shutil import os def copy_file(path): # (root,dirs,files)分别为:遍历文件夹,遍历文件夹下所有文件夹,遍历文件夹下所有文件...' copy_file(source_path) 这个代码适用性还是很强,可以自己修改,比方说移动pdf或者其他标识文件等,都可以

    49320

    Google 最新模拟器重磅来袭!秒开并还原到之前工作状态!

    为了解决这个问题,从 API24 开始,Google 提过了包含其服务系统镜像版本,可以正常使用Google 服务,就像是在真机上一样。...性能改进 使用模拟器 快速、高效 开发一直是Google团队持续目标,在过去时间里,不断研究模拟器开发性能影响,特别是内存使用情况。...拖拽 APK和文件 通过拖动APK文件到模拟器上,便可实现快速安装;也可以直接拖拽文件到模拟器上,并在模拟器DownLoad 文件夹中找到它。...本地复制和粘贴 可以在本地和模拟器直接复制粘贴文本 两个手指动作 在使用谷歌地图时,按住ctrl(Windows、Linux)或者⌘(Mac),并用鼠标即可实现缩放或放大效果。...本地键盘 可以使用本地外设键盘进行内容输入 虚拟短信和电话呼叫 屏幕缩放 窗口大小缩放 网络代理支持 到 代理 选项下设置界面,为模拟器添加自定义HTTP代理。

    1.9K20

    实现微信小程序编译和运行环境系列 (核心篇一)

    基础设施层 Infrastructure Layer 本地层 Native Layer 操作系统层 OS Layer # 展现层 UI Simulator Layer 小程序页面显示,菜单标题等展示内容...API 其他 # 基础设施层 Infrastructure Layer Log 文件系统 日志文件存储 Level DB 数据存储 # 基本地层 Native Layer 本地层主要负责设备具体操作...APPSERVICE webview 创建完成后 自动连接到 socket server 获取网络信息 获取粘贴板数据 其他 # 创建 HOME PAGEFRAME WEBVIEW 基于小程序配置,...解析主页路径 创建主页 Webview,创建完成后 自动动连接到 socket server 发布 xWebVideoSupported 到 appservice vdSync 到 appservice...,无论接收方是否存在 接收方可用时,发送给接收方消息可以即时送达 消息不丢失 但在我们手机上面使用微信小程序,微信肯定不是采用这种方式,应为这种方式最大问题就是效率和稳定性,在原生上面应该采用桥接方式

    89420

    这是一份Android全面&详细-Webview使用攻略

    作用 显示和渲染Web页面 直接使用html文件(网络上或本地assets)作布局 可和JavaScript交互调用 WebView控件功能强大,除了具有一般View属性和设置外,还可以对url请求...使用介绍 一般来说Webview可单独使用,可联合其子类一起使用,所以接下来,我会介绍: Webview自身常见方法; Webview最常用子类 (WebSettings类、WebViewClient...//LOAD_CACHE_ELSE_NETWORK,只要本地有,无论是否过期,或者no-cache,都使用缓存数据。...App里面使用webview控件时候遇到了诸如404这类错误时候,若也显示浏览器里面的那种错误提示页面就显得很丑陋了,那么这个时候我们app就需要加载一个本地错误提示页面,即webview如何加载一个本地页面...3.4.1 不在xml定义 Webview ,而是在需要时候在Activity创建,并且Context使用 getApplicationgContext() LinearLayout.LayoutParams

    4.3K20

    双11主会场性能体验提升 - 秒开优化

    梳理了全路性能埋点、定义新性能口径(从用户点击到可视),使用了预渲染、数据预请求、资源加速下载、离线资源等优化手段,既能全维度来度量,也能拆分到各个子阶段细粒度数据。...新变化是从用户体感出发,全视角来看体验。使用全新可视时间口径,即从用户点击到看到页面内容展示。新挑战要将各部分数据口径统一和信息整合。...从数据上来看,这部分在整个耗时占比较高,优化收益明显,是优化重点部分。...资源加载提速 资源加载加速 资源加载加速,依赖ZCache提供能力,对于业务依赖一些通用、固定、很少变动静态资源文件(html/js/css等),在使用之前提前加载放到本地缓存,并做好版本管理和动态下发能力...数据快照 为了能够做到真正“秒开”,让用户不再有白屏等待体感,本次主会场仿照手淘客户端首页渲染策略,将用户上次访问数据进行了本地缓存,在预创建WebView内渲染时,优先使用上次数据作为打底数据进行占位渲染

    2.1K20

    移动端体验优化经验总结与实践

    耗时拆解 先分析下在移动端从用户点 H5 链接到页面渲染完成展示给用户,需要经历粗略过程,示意如下图: ?...从页面请求可以看到,其中 1.js 下载是比较耗时,是应用比较核心 js 文件,必须等待此文件下载完成,才有可能继续后面的页面渲染。...客户端视角 从客户端角度入手,其实是客户端预加载静态资源或者提前内置到手机本地,因此客户端需要维护要加载到本地静态资源列表,当页面打开时,拦截 webview 资源请求,根据资源 URL 路由到本地对应资源...webview 初始化 webview 是移动端浏览器实例,几乎具备 PC 端浏览器绝大多数能力,客户端在使用 webview 打开 H5 页面前,需要实例化 webview 对象,其初始化过程在...有一种手段是使用对象复用机制,提前创建 webview 对象池,需要使用 webview 时直接从池中获取初始化完毕对象,这种类似于线程池方式可以避免每次打开 H5 页面都要初始化 webview

    1.6K20

    移动 H5 首屏秒开优化方案探讨

    前端能做最大限度缓存策略是:HTML 文件每次都向服务器询问是否有更新,JS/CSS/Image资源文件则不请求更新,直接使用本地缓存。那 JS/CSS 资源文件如何更新?...常见做法是在在构建过程给每个资源文件一个版本号或hash值,若资源文件有更新,版本号和 hash 值变化,这个资源请求 URL 就变化了,同时对应 HTML 页面更新,变成请求新资源URL,资源也就更新了...这些缓存策略可以实现 JS/CSS 等资源文件以及用户数据缓存全缓存,可以做到每次都直接使用本地缓存数据,不用等待网络请求。...但 HTML 文件缓存做不到,对于 HTML 文件,如果把 Expires / max-age 时间设长了,长时间只使用本地缓存,那更新就不及时,如果设短了,每次打开页面都要发网络请求询问是否有更新,...根据配置表,打开某个业务时转接到打开离线包入口页面。 拦截网络请求,对于离线包已经有的文件,直接读取离线包数据返回,否则走 HTTP 协议缓存逻辑。

    3.5K50

    Android:你不知道 WebView 使用漏洞

    上述功能是由 AndroidWebView 实现,但是 WebView 使用过程存在许多漏洞,容易造成用户数据泄露等等危险,而很多人往往会忽视这个问题 今天我将全面介绍 Android WebView...(), "myObj"); // 参数1:Android本地对象 // 参数2:JS对象 // 通过对象映射将Android本地对象和JS对象进行关联,从而实现JS调用Android对象和方法...如可以执行命令获取本地设备SD卡文件等信息从而造成信息泄露 具体获取系统类描述:(结合 Java 反射机制) Android对象有一公共方法:getClass() ; 该方法可以获取到当前类...使其不能加载本地 html 文件,如下图: 移动版 Chrome 默认禁止加载 file 协议文件 ?...;执行完这条命令之后,就生成了这个文件,并且将 Cookie 文件接到了 xx.html 上。

    3.2K20

    WebView深度学习(三)之WebView内存泄漏、漏洞以及缓存机制原理和解决方案

    new JSObject(), "myObj"); // 参数1:Android本地对象 // 参数2:JS对象 // 通过对象映射将Android本地对象和JS对象进行关联...(比如**我们可以执行命令获取本地设备SD卡文件等信息从而造成信息泄露**) 具体获取系统类描述:(结合 Java 反射机制) Android对象有一公共方法:getClass() ;...功能,使其不能加载本地 html 文件,( 移动版 Chrome 默认禁止加载 file 协议文件 ) ,如下图: ?...,表示浏览器禁止从 file url JavaScript 读取其它本地文件。...具体攻击步骤:(在该命令执行前 xx.html 是不存在;执行完这条命令之后,就生成了这个文件,并且将 Cookie 文件接到了 xx.html 上。) 1.

    2.8K10

    Carson带你学Android:你不知道 WebView 使用漏洞

    (), "myObj"); // 参数1:Android本地对象 // 参数2:JS对象 // 通过对象映射将Android本地对象和JS对象进行关联,从而实现JS调用Android对象和方法...如可以执行命令获取本地设备SD卡文件等信息从而造成信息泄露 具体获取系统类描述:(结合 Java 反射机制) Android对象有一公共方法:getClass() ; 该方法可以获取到当前类...使其不能加载本地 html 文件,如下图: 移动版 Chrome 默认禁止加载 file 协议文件 解决方案: 对于不需要使用 file 协议应用,禁用 file 协议; setAllowFileAccess... javascript 读取其它本地文件。...是不存在;执行完这条命令之后,就生成了这个文件,并且将 Cookie 文件接到了 xx.html 上。

    1.2K10

    Carson带你学Android:最全面的Webview使用详解

    作用 显示和渲染Web页面 直接使用html文件(网络上或本地assets)作布局 可和JavaScript交互调用 WebView控件功能强大,除了具有一般View属性和设置外,还可以对url请求...使用介绍 一般来说Webview可单独使用,可联合其子类一起使用,所以接下来,我会介绍: Webview自身常见方法; Webview最常用子类 (WebSettings类、WebViewClient...//LOAD_CACHE_ELSE_NETWORK,只要本地有,无论是否过期,或者no-cache,都使用缓存数据。...App里面使用webview控件时候遇到了诸如404这类错误时候,若也显示浏览器里面的那种错误提示页面就显得很丑陋了,那么这个时候我们app就需要加载一个本地错误提示页面,即webview如何加载一个本地页面...3.4.1 不在xml定义 Webview ,而是在需要时候在Activity创建,并且Context使用 getApplicationgContext() LinearLayout.LayoutParams

    1.6K40

    什么是SDK,哪种SDK容易受到攻击?

    使用 HTTPs 替代 HTTP 已成为一种趋势,然而仍有许多第三方 SDK 使用 HTTP 协议,通过网络连接到云服务器,这意味着很高安全风险。   ...如果证书符合以下要求,则被认为有效:(1) 每个证书都没有过期或撤销;(2) 根证书由 CA 在客户端密钥库中发起;(3) 在多于 1 个证书情况下,每个证书必须在放入后立即由 CA 签名...另外,第三方SDK可以与主机应用程序共享manifest文件权限,也就是说,即使 SDK 在开发文档没 有声明需要某些权限,如果 manifest 文件声明,那么它也可以使用这些权限。...(2) 使用不安全API 当第三方SDK在 WebView使用 JavaScriptInterface 时,远程 Web页面可以通过这个接口执行本地命令。...当 WebView 显示页面时,会在JavaScript代码调用本地代码。远程网页可以利用反射机制来执行自己命令。

    2K30

    用安卓 WebView 做一个“套壳”应用

    随后在 「MainActivity.java」 文件添加一个 createWebView 函数(不要忘记导入用到包),并在生命周期 onCreate 调用该函数,来创建一个 WebView 实例并对其进行配置...实例并通过 id 绑定我们刚在布局创建 WebView 标签 // 这里 R.id.webview 就是 activity_main.xml WebView 标签 id...2.4 使用虚拟机运行应用 我们开发时候可以随时使用模拟器来预览我们应用,也可以将手机连接到电脑上进行调试(这里就不展开了)。...中加载 HTTP 网页会报 net::ERR_CLEARTEXT_NOT_PERMITTED 错误,不方便本地进行调试。...android:usesCleartextTraffic="true"> 可以看到我本地 Cocos Creator 项目已经成功在安卓 WebView 上跑起来啦~ ? ?

    11.5K13

    鸿蒙-webview使用和JS交互(附源码)【鸿蒙专题04】

    日常我们在开发项目时,为了项目快速开发和迭代,难免会用到H5页面。使用鸿蒙进行项目开发时,也一样免不了要加载H5页面,在移动开发打开H5页面需要使用WebView组件。...点击"加载本地网页"按钮加载本地Web页面,点击"发送消息给本地html"或者Web页面"调用Java方法"按钮,实现应用与Web页面间交互。...加载本地Web页面 将本地HTML文件放在"resources/rawfile/"目录下,在本教程命名为test.html。...在HarmonyOS系统WebView要访问本地Web文件,需要通过DataAbility方式进行访问,DataAbility具体使用方法可以参考开发 DataAbility,关于DataAbility...实现应用与WebViewWeb页面间通信 本教程以本地Web页面"resources/rawfile/test.html"为例介绍如何实现应用与WebViewWeb页面间交互。

    3.7K20
    领券