Android WebView 网页使用本地字体_android 字体包给webview使用-程序员宅基地

技术标签: 【Android进阶】  

要求在网页里面调用android app中assets目录下的某个字体文件。

网页加载通常有两种方式:
1、loadDataWithBaseURL
2、loadUrl

一、loadDataWithBaseURL

网页中直接使用file://指定assets文件路径即可

示例:

font-family: url('file:///android_asset/xxx.TTF')

二、loadUrl

这种情况网页中不能直接使用file://来指定文件路径,否则会如下错误。

"Not allowed to load local resource: file:///android_asset/fonts/xxx.TTF"

正确做法:必须通过WebView来拦截。

1、在网页中指定字体

font-family: url('/android_asset_font/xxx.TTF')

2、重写WebViewClient 的shouldInterceptRequest方法

		String INJECTION_TOKEN = "/android_asset_font/";

		@Override
		public WebResourceResponse shouldInterceptRequest(WebView webView, String url) {
    
			if (url != null && url.contains(INJECTION_TOKEN)) {
    
				try {
    
					String assetPath = url.substring(url.indexOf(INJECTION_TOKEN) + INJECTION_TOKEN.length(), url.length());
					return new WebResourceResponse(
							"application/octet-stream",
							"UTF8", getContext().getAssets().open(assetPath)
					);
				} catch (Exception e) {
    
					e.printStackTrace();
				}
			}
			return super.shouldInterceptRequest(webView, url);
		}

参考:
https://stackoverflow.com/questions/19997146/kitkat-kills-not-allowed-to-load-local-resource-file-android-asset-webkit-a/20992306#20992306

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/feng88724/article/details/102800845

智能推荐

STL源码刨析_stack & _queue_stl stack 的底层-程序员宅基地

文章浏览阅读433次。queue(队列)是一种容器适配器,它提供了一种先进先出(FIFO)的数据结构。特点:queue是一种具有特定功能的容器,它在队尾进行元素的插入操作,而在队头进行元素的删除操作。插入操作称为入队(push),删除操作称为出队(pop)。队列中的元素按照先进先出的顺序进行处理。使用容器:queue的实现通过在内部使用其他容器来存储元素。默认情况下,STL中的queue使用deque(双端队列)作为底层容器。也可以通过指定其他容器类型来创建自定义底层容器的queue。_stl stack 的底层

QTP资料_qtp10使用教程-程序员宅基地

文章浏览阅读1.5k次。1、 QTP专业网站http://www.advancedqtp.com/http://knowledgeinbox.com/http://www.learnqtp.com/http://relevantcodes.com/http://www.intellipro.co.uk/http://www.softwareinquisition.com/http://www_qtp10使用教程

如何用 client-go 拓展 Kubernetes 的 API 【转载】_client go api-程序员宅基地

文章浏览阅读479次。本文是转载信息如下,如有侵权,立删,原作者信息章骏| 才云科技云开源软件工程师毕业于武汉大学软件工程专业,之前就职于百度,担任算法策略研发工程师,主要负责搜索相关性的指标。加入才云科技后,现主要负责负载均衡和灰度发布的工作。今天给大家介绍一下如何使用 client-go 来拓展 Kubernetes API,写一个 Kubernetes 的控制器。client-go 是 Kuber..._client go api

启动TOMCAT报错 java.util.zip.ZipException: invalid LOC header (bad signature)_zip文件读取 java.util.zip.zipexception: invalid end he-程序员宅基地

文章浏览阅读1.2w次。at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:303) at org.apach_zip文件读取 java.util.zip.zipexception: invalid end header

JDK源码解读由浅入深(一) 从源码分析equals和==_jdk源码 字符串比较为什么用==-程序员宅基地

文章浏览阅读276次。好久没写代码,也不知为何,上一趟csdn,难的看不懂,简单的不屑看,眼高手低说的就是我了。。也不知道从什么地方提高自己,对我来说,什么东西似乎都能说上一点,但是再往后,知识储备就不足了,再继续写下去也怕误人子弟。也许有生之年,我能补完自己之前埋下的坑呢?。。这次准备长期写下去的就是源码解读,有一说一,我不喜欢像某些csdn的5年,10年的账号一样,一天到晚发一些基础知识,啃老本,我甚至怀疑..._jdk源码 字符串比较为什么用==

Gstreamer函数使用总结_gst_parse_launch-程序员宅基地

文章浏览阅读2.6k次,点赞5次,收藏16次。1、GSteamer的基本API的使用2、创建元件并且链接起来3、添加衬垫,添加回调,手动链接衬垫4、打印gstreamer的版本信息5、gstreamer封装的argparse6、创建gst元件对象7、查看插件8、链接元件9、箱柜(箱柜本身是一个元件,但是它内部还可以是一串链接起来的元件)10、bus总线..._gst_parse_launch

随便推点

KSFramework:Unity3D开发框架快速入门_ksframework怎么样-程序员宅基地

文章浏览阅读1.1k次。转自:https://www.jianshu.com/p/ccb491ed4260KSFramework是一个Unity 5 Asset Bundle开发框架和工具集,专注于运行时热重载,使用了SLua作为脚本引擎。https://github.com/mr-kelly/KSFrameworkKSFramework是一个整合KEngine、SLua和一些开发组件组成的全功能Unity 5开发框架,..._ksframework怎么样

Linux 查看指令 cd,ls,pwd_cd查看目录-程序员宅基地

文章浏览阅读1k次。这个指令会打印出文件的权限 (-rw-rw-r-- 之后我们在细说这个), 用户名, 文件大小, 修改日期, 文件名。功能:查看文件/文件夹内容,支持排序、大小、属性、权限查看。功能:这里的文件大小使用了 K, MB, GB 之类概括。功能:显示所有文件,包括隐藏的文件 (以 . 开头的)2)ls -a (all 的简写) 显示所有文件。功能:输出详细信息 -l (long 的简写)3)ls -lh (human) 显示给人看。4)ls --help 帮助。功能:查看当前目录绝对路径。功能:进入指定目录。_cd查看目录

python基础(5)-range函数、循环语句、流程控制语句、嵌套循环_range等于range+i-程序员宅基地

文章浏览阅读615次。#range函数建立#range函数是内置函数,可以直接调用#range对象所占内存相同,只有使用时才能range对象表示的列表内容不同i=range(5)print(list(i))#[0, 1, 2, 3, 4]j=range(2,5)print(list(j))#[2, 3, 4]z=range(1,5,2)print(list(z))#[1, 3]print(3 in z)#Trueprint(2 not in z)#True#while语句-循环语句a=0 ._range等于range+i

人工智能轨道交通行业周刊-第46期(2023.5.22-5.28)-程序员宅基地

文章浏览阅读622次。本期关键词:数字孪生、AI铁路人、道岔、施封锁、图像质量评价、大模型小型化

网页JS弹出广告代码,头部,右下角,网页中漂浮,对联广告代码等大全-程序员宅基地

文章浏览阅读238次。01.借鉴:网页JS弹出广告代码,头部,右下角,网页中漂浮,对联广告代码等大全 02.网页头部弹出广告: 03.<!--首页头部广告--> 04.<script src="http://www.ce.cn/inc1/top_ad.js" type="text/javascript" language="javascript"></script&g..._春节 网站弹出banner js代码

hibernate mysql 外键查询null_[解决方法]Hibernate查询部分字段(含外键)出错,报空指针异常...-程序员宅基地

文章浏览阅读138次。假设当前表结构如下:food表字段有foodid,name,外键businessid,外键typebusiness表字段有,name,外键typetype表字段有id,name,foodidHibernate生成的对应POJO分别是Food,Business,Type需要查询food表部分字段,如name和外键businessid则可在Food类中添加只有相应成员变量的构造方法,Food(Stri..._hibernate 外键查询为null

推荐文章

热门文章

相关标签