
Android开发笔记
文章平均质量分 89
Android开发笔记,记录安卓开发工作中的经验分享与总结,方便读者迅速提高Android开发技能。本专栏内容分为五大类:显示、存储、通信、发布与调优、进阶用法。
aqi00
好好做技术,认真写博文
展开
-
Android开发笔记(一百九十)增强了日志功能的第二版Logcat
从Android Studio Dolphin开始,查看应用日志的Logcat全面升级,堪称Logcat 2.0版本。下面就让我们看看LogcatV2.0究竟带来了什么新特性吧。对于Android Studio的老用户来说,小海豚版本新出的LogcatV2.0在用法上有不小的差异,一开始会让人比较茫然。有些老用户可能更习惯之前的Logcat,可以通过以下办法关闭LogcatV2.0,重新启用旧的Logcat功能。原创 2022-12-30 08:00:00 · 1306 阅读 · 0 评论 -
Android开发笔记(一百八十九)利用LAME录制MP3音频
无论是普通音频的amr和aac格式,还是原始音频的pcm格式,都不能在电脑上直接播放,也不能在苹果手机上播放,因为它们属于安卓手机的定制格式,并非通用的音频格式。若想让录音文件放之四海而皆能播放,就得事先将其转为通用的MP3格式,虽然Android官方的开发包不支持MP3转换,不过借助第三方的LAME库,能够将原始音频转存为MP3文件。原创 2022-11-07 08:00:00 · 1643 阅读 · 4 评论 -
Android开发笔记(一百八十八)工作管理器WorkManager
Android11不光废弃了AsyncTask,还把IntentService一起废掉了,对于后台的异步服务,官方建议改为使用工作管理器WorkManager。其实除了IntentService之外,Android也提供了其它后台任务工具,例如工作调度器JobScheduler、闹钟管理器AlarmManager等等。当然这些后台工具的用法各不相同,徒增开发者的学习时间而已,于是乎谷歌索性把它们统一起来,在Jetpack库中推出了工作管理器WorkManager。原创 2022-10-25 08:00:00 · 1931 阅读 · 0 评论 -
Android开发笔记(一百八十七)利用估值器实现弹幕动画
如今上网看电影电视越发流行了,追剧的时候经常看到视频上方数行评论向左边飘去,犹如子弹那样飞快掠过,这些评论文字因此得名“弹幕”。弹幕评论由正在观看的网友们即兴发表,故而连绵不绝从画面右端不断涌现,直到漂至画面左端才隐没消失。原创 2022-09-21 01:00:00 · 591 阅读 · 0 评论 -
Android开发笔记(一百八十六)管理SQLite的利器——应用检查器App Inspection
从Android Studio Bumblebee开始,Android Studio正式全面开启了数据库管理功能。首先确保已经安装了最新版的Android Studio Bumblebee,打开电脑上的Android Studio,并通过USB数据线连接待调试的设备(设备上同时启动待调试的应用)。然后依次选择菜单“View”→“Tool Windows”→“App Inspection”,Android Studio界面下方会弹出“App Inspection”窗口。...原创 2022-09-01 14:00:00 · 2691 阅读 · 0 评论 -
Android开发笔记(一百八十五)使用设备浏览器Device File Explorer导出存储卡的文件
只要打开了手机的USB调试功能,还是有办法拿到测试应用的数据文件。在上图所示的窗口中依次展开各级目录,一路进到/data/data/com.example.chapter06/shared_prefs,在该目录下看到了参数文件share.xml。原创 2022-08-15 01:00:00 · 1432 阅读 · 0 评论 -
Android开发笔记(一百八十四)利用TBS浏览各种文档
虽然使用POI库可以解析并显示Office文档,但这需要开发者自己搭个服务器,确实多有不便。倘若只是简单的浏览文档内容,完全可以利用第三方的开发包直接渲染,比如腾讯的TBS服务(全称Tencent Browser Service,即腾讯浏览服务)。通过集成TBS服务,App能够直接打开下列文件格式:doc、docx、ppt、pptx、xls、xlsx、pdf、txt、epub,可谓中小开发者的一大福音。TBS官网的接入说明网址为https://x5.tencent.com/docs/access.htm.原创 2022-04-14 01:00:00 · 1511 阅读 · 1 评论 -
Android开发笔记(一百八十三)利用HMS轻松扫描二维码
扫描二维码是HMS的一项基础服务,虽然谷歌公司也提供了zxing扫码框架,但是zxing框架的集成步骤不够简洁,而且它的识别速度偏慢,识别准确率也不高,远不如HMS的扫码服务来得好用。下面介绍如何在App工程中集成HMS的扫码服务。原创 2022-03-17 01:00:00 · 1969 阅读 · 2 评论 -
Android开发笔记(一百八十二)使用CameraX录像
通过CameraX实现录像功能的话,初始化相机的步骤与拍照时大同小异,区别在于增加了对视频捕捉器VideoCapture的处理。需要修改的代码主要有三个地方,分别说明如下。第一个地方是在AndroidManifest.xml里补充声明录音权限,完整的权限声明配置如下所示:<!-- 相机 --><uses-permission android:name="android.permission.CAMERA" /><!-- 录音 --><uses-perm原创 2022-02-16 01:00:00 · 3246 阅读 · 9 评论 -
Android开发笔记(一百八十一)使用CameraX拍照
常言道,眼睛是心灵的窗户,那么相机便是手机的窗户了,主打美颜相机功能的拍照手机大行其道,可见对于手机App来说,如何恰如其分地运用相机开发至关重要。Android的SDK一开始就自带了相机工具Camera,从Android5.0开始又推出了升级版的camera2,然而不管是初代的Camera还是二代的camera2,编码过程都比较繁琐,对于新手而言有点艰深。为此谷歌公司在Jetpack库中集成了增强的相机库CameraX,想让相机编码(包括拍照和录像)变得更加方便。CameraX基于camera2开发,它原创 2022-02-11 01:00:00 · 3698 阅读 · 3 评论 -
Android开发笔记(一百八十)使用Glide加载特殊图像
Android从9.0开始增加了新的图像解码器ImageDecoder,该解码器支持直接读取GIF文件的图形数据,结合图形工具Animatable即可在图像视图上显示GIF动图。虽然通过ImageDecoder能够在界面上播放GIF动画,但是一方面实现代码有些臃肿,另一方面在Android9.0之后才支持,显然不太好用。现在有了Glide,轻松加载GIF动图不在话下,简简单单只需下面一行代码:Glide.with(this).load(R.drawable.happy).into(iv_cover)原创 2022-01-20 01:00:00 · 1524 阅读 · 0 评论 -
Android开发笔记(一百七十九)避免方法数过多的问题
一个大规模的App工程,往往引入了数量繁多的第三方开发库,其中既有官方的Jetpack库,也有第三方厂商的开源包。有时候运行这种App会报错“Cannot fit requested classes in a single dex file (# methods: 65894 > 65536)”,意思是App内部引用的方法数量超过了65536个,导致App异常退出。原来Android的每个App代码都放在一个dex文件中,系统会把内部方法的索引保存在一个链表结构里,由于这个链表的长度变量是short原创 2022-01-12 01:00:00 · 552 阅读 · 0 评论 -
Android开发笔记(一百七十八)更安全的数据仓库DataStore
虽然SharedPreferences用起来比较方便,但是在一些特殊场景会产生问题。比如共享参数保存的数据较多时,初始化共享参数会把整个文件加载进内存,加载耗时可能导致主线程堵塞。又如调用apply方法保存数据时,频繁apply容易导致线程等待超时。为此Android官方推出了数据仓库DataStore,并将其作为Jetpack库的基础组件。DataStore提供了两种实现方式,分别是Preferences DataStore 和Proto DataStore,前者采用键值对存储数据,后者采用自定义类型存储原创 2021-12-30 13:28:50 · 2381 阅读 · 6 评论 -
Android开发笔记(一百七十七)借助FileProvider安装应用
除了发送彩信需要文件提供器,安装应用也需要FileProvider。不单单彩信的附件图片能到媒体库中查询,应用的APK安装包也可在媒体库找到。查找安装包依然借助于内容解析器,具体的实现过程和查询图片类似,比如事先声明如下的对象变量:private List<ApkInfo> mApkList = new ArrayList<ApkInfo>(); // 安装包列表private Uri mFilesUri = MediaStore.Files.getContentUri("e原创 2021-11-02 01:00:00 · 766 阅读 · 1 评论 -
Android开发笔记(一百七十六)借助FileProvider发送彩信
通过系统相册固然可以获得照片的路径对象,却无法知晓更多的详细信息,例如图片名称、文件大小、文件路径等等都不知道,也就无法进行个性化的定制开发。为了把更多的文件信息开放出来,Android设计了专门的媒体共享库,允许开发者通过内容组件从中获取更详细的媒体信息。就图片而言,相册媒体库的路径为MediaStore.Images.Media.EXTERNAL_CONTENT_URI,于是通过内容解析器即可从媒体库依次遍历得到图片列表详情。为便于代码管理,首先要声明如下的对象变量:private List&l原创 2021-10-27 01:00:00 · 932 阅读 · 0 评论 -
Android开发笔记(一百七十五)利用Room简化数据库操作
虽然Android提供了数据库帮助器,但是开发者在进行数据库编程时仍有诸多不便,比如每次增加一张新表,开发者都得手工实现以下代码逻辑:1、重写数据库帮助器的onCreate方法,添加该表的建表语句;2、在插入记录之时,必须将数据实例的属性值逐一赋给该表的各字段;3、在查询记录之时,必须遍历结果集游标,把各字段值逐一赋给数据实例;4、每次读写操作之前,都要先开启数据库连接;读写操作之后,又要关闭数据库连接;上述的处理操作无疑存在不少重复劳动,数年来引得开发者叫苦连连。为此各类数据库处理框架纷纷涌现,原创 2021-06-01 10:30:16 · 1021 阅读 · 4 评论 -
5G时代的Android App开发入门与项目实战
随着移动互联网的持续发展,Android系统从智能手机逐步拓展到平板电脑、智能电视、车载大屏、智能家居、智能手表等诸多设备,Android开发依然是前景可期的IT岗位。当然,整个社会正在迈向5G时代,这对新手学习Android开发构成了不小的挑战,如果新手仍旧按照几年前的Android书籍学习,就会发现学完之后学不到什么新技术。即使是Android初中级工程师,可能局限于平时的工作内容,也不容易接触新理念新潮流。在5G时代,Android App开发需要发挥5G优势给用户带来新体验、增添新功能、用得更省原创 2021-03-26 13:16:23 · 1281 阅读 · 0 评论 -
Android开发笔记(一百七十四)图像解码器ImageDecoder
早期的Android只支持三种图像格式,分别是JPEG、PNG和GIF,虽然这三类图片都能在ImageView上显示,但对于GIF格式来说,图像视图仅能显示动图的初始画面,无法直接播放动画效果。此外,由于JPEG、PNG和GIF三兄弟历史悠久,当时的图像压缩算法不尽完美,并且手机摄像头的分辨率越来越高,导致一张高清照片动辄几M乃至十几M大小,使得手机的存储空间越发吃紧,这也要求更高效的压缩算法。目前智能手机行业仅剩安卓和iOS两大阵营,为了争夺移动互联网时代的技术高地,两大阵营的盟主纷纷推出新的图像压缩算原创 2021-03-03 12:15:50 · 3495 阅读 · 1 评论 -
Android开发笔记(一百七十三)给安装包APK文件瘦身
App不但要求功能完善,其他方面也得综合考虑,比如APK安装包的文件大小就是很重要的因素。具备同样功能的两个安装包,一个很大很占用空间,另一个较小不怎么占空间,用户的选择结果自然不言而喻。如何减少打包后的APK文件大小,也就是所谓的APK瘦身,这涉及到很多技术手段,最常用的主要有四块:去除冗余功能、精简无用资源、减少图片大小、过滤无用的so文件,分别介绍如下:一、去除冗余功能每当开发者创建新的Android项目,打开模块的AndroidManifest.xml,看到默认的application节点是原创 2020-09-07 22:22:34 · 1025 阅读 · 1 评论 -
Android开发笔记(一百七十二)第二代翻页视图ViewPager2
正如RecyclerView横空出世取代ListView和GridView那样,Android也推出了二代翻页视图ViewPager2,打算替换原来的翻页视图ViewPager。与ViewPager相比,ViewPager2支持更丰富的界面特效,包括但不限于下列几点:1、不但支持水平方向翻页,还支持垂直方向翻页;2、支持RecyclerView.Adapter,允许调用适配器对象的notifyItem***方法,从而动态刷新某项视图;3、除了当前页,也支持展示左右两页的部分区域;4、支持在翻页过程中原创 2020-06-23 22:44:24 · 2548 阅读 · 3 评论 -
Android开发笔记(一百七十一)使用Glide加载网络图片
如何方便而又快速地显示网络图片,一直是安卓网络编程的热门课题,前些年图片缓存框架Picasso、Fresco等等大行其道,以至于谷歌按捺不住也开发了自己的Glide开源库。由于Android本身就是谷歌开发的,Glide与Android系出同门,因此Glide成为事实上的官方推荐图片缓存框架。不过Glide并未集成到Android的SDK当中,开发者需要另外给App工程导入Glide库,也就是修改模块的build.gradle,在dependencies节点内部添加如下一行依赖库配置: impl..原创 2020-05-25 22:31:51 · 2856 阅读 · 1 评论 -
Android开发笔记(一百七十)给App的应用页面注册快捷方式
元数据不单单能传递简单的字符串参数,还能传送更复杂的资源数据,从Android7.1开始新增的快捷方式便用到了这点,譬如在手机上桌面长按支付宝图标,会弹出如下图所示的菜单。点击菜单项“扫一扫”,直接打开支付宝的扫码页面;点击菜单项“付钱”,直接打开支付宝的付款页面;点击菜单项“收钱”,直接打开支付宝的收款页面。如此不必打开支付宝首页,即可迅速跳转到常用的App页面,这便是所谓的快捷方式。那么Android7.1又是如何实现快捷方式的呢?那得再琢磨琢磨元数据了。原来元数据的meta-data标签除了前原创 2020-05-10 22:57:25 · 1210 阅读 · 0 评论 -
Android开发笔记(一百六十九)利用BottomNavigationView实现底部标签栏
在Android Studio上创建官方默认的首屏标签页面很方便,首先右击需要添加标签栏的模块,在弹出的右键菜单中依次选择“New”——“Activity”——“Bottom Navigation Activity”,弹出下图所示的活动创建页面。在创建页面的“Activity Name”一栏填写新活动的名称,再单击页面右下角的Finish按钮,Android Studio就会自动创建该活动的...原创 2020-04-25 12:20:02 · 2686 阅读 · 1 评论 -
Android开发笔记(一百六十八)为应用绑定通知渠道并展示消息角标
为了分清消息通知的轻重缓急,从Android8开始新增了通知渠道,并且必须指定通知渠道才能正常推送消息。一个应用允许拥有多个通知渠道,每个渠道的重要性各不相同,有的渠道消息在通知栏被折叠成小行,有的渠道消息在通知栏展示完整的大行,有的渠道消息甚至会短暂悬浮于屏幕顶部,有的渠道消息在推送时会震动手机,有的渠道消息在推送时会发出铃声,有的渠道消息则完全静默推送,这些提示差别都有赖于通知渠道的特征管理。...原创 2020-04-12 16:44:49 · 2433 阅读 · 2 评论 -
Android开发笔记(一百六十七)Android8.0的画中画模式
前面的博文《Android开发笔记(一百五十九)Android7.0的分屏模式》介绍了Android7.0的多窗口特性,但是这个分屏的区域是固定的,要么在屏幕的上半部分,要么在屏幕的下半部分,不但尺寸无法调整而且还不能拖动,使得它的用户体验不够完美。为此Android8.0又带了另一种更高级的多窗口模式,号称“Picture in Picture”(简称PIP,即“画中画”)。应用一旦进入画中画模原创 2018-03-26 09:49:13 · 10900 阅读 · 3 评论 -
Android开发笔记(一百六十六)H5通过WebView录像上传
前面的博文《Android开发笔记(一百五十二)H5通过WebView上传图片》介绍了如何拍照上传给网页,不料客户又要求再加个摄像上传给网页。既然如此,那么再探讨一下如何实现这个摄像上传的功能。与拍照上传一样,摄像上传也要重写WebChromeClient的openFileChooser/onShowFileChooser方法,在这两个方法内部跳转到系统的摄像机页面,示例代码如下: priv原创 2018-03-21 09:39:50 · 3215 阅读 · 4 评论 -
Android开发笔记(一百六十五)利用红外发射遥控电器
红外遥控是一种无线控制技术,它具有功耗小、成本低、易实现等诸多优点,因而被各种电子设备特别是家用电器广泛采用,像日常生活中的电视遥控器、空调遥控器等等基本都采用红外遥控技术。不过遥控器并不都是红外遥控,也可能是射频遥控。红外遥控使用近红外光线(频率只有几万赫兹)作为遥控光源,而射频遥控使用超高频电磁波(频率高达几亿赫兹)作为信号载体。红外遥控器的顶部,有的镶嵌一个或多个小灯泡,有的是一小片黑色盖子原创 2018-03-06 09:37:57 · 7732 阅读 · 4 评论 -
Android开发笔记(一百六十四)仿京东首页的下拉刷新
上一篇文章介绍了高仿京东的沉浸式状态栏,可是跟京东首页的头部轮播图相比,依然有三处缺憾:1、京东的头部Banner上方,除了有悬浮着的状态栏,状态栏下面还有一行悬浮工具栏,内嵌扫一扫图标、搜索框,以及消息图标;2、把整个页面往上拉,状态栏的背景色从透明变为深灰,同时工具栏的背景也从透明变为白色;3、页面下拉到顶后,继续下拉会拉出带有“下拉刷新”字样的布局,此时松手则会触发页面的刷新动作;上面第一点原创 2018-02-28 09:32:42 · 3354 阅读 · 47 评论 -
Android开发笔记(一百六十三)高仿京东的沉浸式状态栏
前面的文章介绍了如何实现广告轮播的Banner效果,本想可以告一段落。然而某天产品经理心血来潮,拿着苹果手机,要求像iOS那样把广告图顶到状态栏这儿。刚接到这需求,不禁倒吸一口冷气,又要安卓开发去实现iOS的效果,真是强人所难。翻了翻资料,发现修改状态栏的颜色倒是可行,但要把轮播图顶上去就不容易了。再瞅瞅淘宝和当当,原来两个大厂的App都没做出这个效果。正想跟产品经理说这个实现不了,谁料产品大姐笑原创 2018-02-26 11:12:22 · 9288 阅读 · 6 评论 -
Android开发笔记(一百六十二)蓝牙设备的连接与配对
蓝牙是一种短距离无线通信技术,它由爱立信公司于1994年创制,原本想替代连接电信设备的数据线,但是后来发现它也能用于移动设备之间的数据传输,所以蓝牙技术在手机上获得了长足发展。因为手机内部的通讯芯片一般同时集成了2G/3G/4G、WIFI和蓝牙,所以蓝牙功能已经是智能手机的标配了。若想进行蓝牙方面的开发,需要在App工程的AndroidManifest.xml中补充下面的权限配置:原创 2018-02-23 11:01:31 · 9111 阅读 · 9 评论 -
Android开发笔记(一百六十一)NFC近场通信
NFC的全称是“Near Field Communication”,意思是近场通信、与邻近的区域通信。大众所熟知的NFC技术应用,主要是智能手机的刷卡支付功能。别看智能手机是近十年前才出现的,NFC的历史可比智能手机要悠久得多,它脱胎于上世纪的RFID无线射频识别技术。所谓RFID是“Radio Frequency Identification”的缩写,它通过无线电信号便可识别特定目标并读写数据,原创 2018-02-22 09:49:50 · 5199 阅读 · 3 评论 -
Android开发笔记(一百六十)休眠模式下的定时器控制
定时器AlarmManager常常用于需要周期性处理的场合,比如闹钟提醒、任务轮询等等。并且定时器来源于系统服务,即使App已经不在运行了,也能收到定时器发出的广播而被唤醒。似此回光返照的神技,便遭到开发者的滥用,造成用户手机充斥着各种杀不光进程,就算通过手机安全工具一再地清理内存,只要定时设定的时刻到达,刚杀掉的流氓App就会死灰复燃。长此以往,手机的运行速度越来越慢,内存也越来越不够用了,更糟原创 2018-02-14 11:03:06 · 4242 阅读 · 1 评论 -
Android开发笔记(一百五十九)Android7.0的分屏模式
现在的手机屏幕越来越大,使得在屏幕上同时开多个窗口不再奢侈,因此Android从7.0开始顺势推出了分屏功能,也被称作多窗口模式。比如把竖长的手机屏幕分成上下两个窗口,一边在上面的窗口中观看电影,一边在下面的窗口中聊天,可谓娱乐、工作两不误。那么分屏功能需要开发者进行哪些适配工作呢?接下来就详细阐述如何开关分屏模式,以及在编码的时候有哪些注意的地方。首先准备一部Android7.0及以上版本的手机原创 2018-02-13 23:06:53 · 7943 阅读 · 1 评论 -
Android开发笔记(一百五十八)运行时动态授权管理
App开发过程中,涉及到硬件设备的操作,比如拍照、录音、定位等等,都要在AndroidManifest.xml中声明相关的权限。可是Android系统为了防止某些App滥用权限,从而允许用户在系统设置里面对App禁用某些权限。然而这又带来另一个问题,用户打开App之后,App可能因为权限不足导致无法正常运行,甚至直接崩溃闪退。遇到这种情况,只需用户在系统设置中开启相关权限即可恢复正常,但是用户并非原创 2018-02-11 09:27:36 · 1089 阅读 · 0 评论 -
Android开发笔记(一百五十七)使用OpenGL实现翻书动画
上一篇文章介绍了如何通过纹理渲染绘制地球仪,当然OpenGL的三维图形处理能力是很强大的,只要善于利用OpenGL,就能很方便地虚拟各种现实生活中的动画效果。本文再来谈谈使用OpenGL实现浏览电子书时候的翻书动画。博主早期的博文《Android开发笔记(十八)书籍翻页动画》已经介绍了如何通过贝塞尔曲线实现翻书动画的过程,不过该方式展示动画时存在卡顿的现象,并且在书页范围之外还会经常拖着长长的影子原创 2018-02-05 10:45:12 · 4469 阅读 · 1 评论 -
Android开发笔记(一百五十六)通过渲染纹理展示地球仪
上一篇文章介绍了如何使用GL10描绘三维物体的线段框架,后面给出的立方体和球体效果图,虽然看起来具备立体的轮廓,可离真实的物体还差得远。因为现实生活中的物体不仅仅有个骨架,还有花纹有光泽(比如衣服),所以若想让三维物体更加符合实际,就得给它加一层皮,也可以说是加一件衣服,这个皮毛大衣用OpenGL的术语称呼则为“纹理”。三维物体的骨架是通过三维坐标系表示的,每个点都有x、y、z三个方向上的数值大小原创 2018-02-02 14:24:55 · 3127 阅读 · 13 评论 -
Android开发笔记(一百五十五)利用GL10描绘点、线、面
上一篇文章介绍了GL10的常用方法,包括如何设置颜色、如何指定坐标系、如何调整镜头参数、如何挪动观测方位等等,不过这些方法只是绘图前的准备工作,真正描绘点、线、面的制图工作并未涉及,那么本文就来谈谈如何利用GL10进行实际的三维绘图操作。首先在三维坐标系中,每个点都有x、y、z三个方向上的坐标值,这样需要三个浮点数来表示一个点。然后一个面又至少由三个点组成,例如三个点可以构成一个三角形,而四个点可原创 2018-01-24 13:45:12 · 3244 阅读 · 3 评论 -
Android开发笔记(一百五十四)OpenGL的画笔工具GL10
上一篇文章介绍了OpenGL绘制三维图形的流程,其实没有传说中的那么玄乎,只要放平常心把它当作一个普通控件就好了,接下来继续介绍OpenGL具体的绘图操作,这项工作得靠三维图形的画笔GL10来完成了。GL10作为三维空间的画笔,它所描绘的三维物体却要显示在二维平面上,显而易见这不是一个简单的伙计。为了理顺物体从三维空间到二维平面的变换关系,有必要搞清楚OpenGL关于三维空间的几个基本概念。下面就原创 2018-01-23 09:56:39 · 2457 阅读 · 0 评论 -
Android开发笔记(一百五十三)OpenGL绘制三维图形的流程
从这篇文章开始,接下来会连载一系列的OpenGL相关博文,好好探讨如何在Android中进行OpenGL开发。OpenGL的全称是“Open Graphics Library”,意思是开放图形库,它定义了一个跨语言、跨平台的图形图像程序接口。对于Android开发者来说,OpenGL就是用来绘制三维图形的技术手段,当然OpenGL并不仅限于展示静止的三维图形,也能用来播放运动着的三维动画。不管是三原创 2018-01-22 09:32:31 · 6530 阅读 · 1 评论 -
Android开发笔记(一百五十二)H5通过WebView上传图片
上一篇文章介绍了WebView与JS之间的数据交互,其实就是把字符串传来传去,这对文本格式的信息传输来说倒还凑合,倘若要传输图片信息就不管用了。所以,要想让h5网页支持从手机上传图片,还得另外想办法,当然各版本的Android系统也都提供了相应的解决办法。在Android 4.*系统上面,开发者可以重写WebChromeClient的openFileChooser函数;在Android 5.0以上原创 2018-01-19 10:11:46 · 2281 阅读 · 3 评论