首页
学习
活动
专区
工具
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.4K21

腾讯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

    3.1K70

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

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

    2.9K162

    使用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或者其他标识文件等,都可以

    50920

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

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

    1.9K20

    这是一份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

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

    基础设施层 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...,无论接收方是否存在 接收方可用时,发送给接收方消息可以即时送达 消息不丢失 但在我们手机上面使用微信小程序,微信肯定不是采用这种方式,应为这种方式最大问题就是效率和稳定性,在原生上面应该采用桥接方式

    90120

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

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

    2.1K20

    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.3K20

    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.9K10

    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.3K10

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

    耗时拆解 先分析下在移动端从用户点 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

    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

    用安卓 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 上跑起来啦~ ? ?

    12K13

    什么是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
    领券