安卓AppWidget桌面小组件在国产移动设备的一些适配问题

前言

安卓AppWidget推出比较早,但似乎用的人并不多,也没有掀起什么使用潮流,不过近期公司要求做,所以去尝试接入使用,不过遇到一些坑的地方,所以想归纳一下问题。 关于如何使用小组件appWidget等相关内容就不谈了,按照官网的指导做就行安卓AppWidget

渠道的差异性

注意:请明确,是开发安卓小组件还是要接入各大厂商定制渠道的小组件,它们是两种不同的组件。 厂商小组件在安卓小组件基础上增加了厂商定制的特色功能,有"添加到负一屏"、"组件库能够被搜索到"等, 例如,小米澎湃 OS 的小部件支持 "无字模式",隐藏桌面上的应用与小部件名称,使桌面更加简约,曝光刷新、实时动态、负一屏和桌面相互拖拽等能力。vivo 的 OriginOS 采用磁贴式设计。华为的鸿蒙系统万能卡片将应用的重要信息或操作前置。OPPO 的 ColorOS 系统小部件在与系统的交互上,会融入闪达窗口等特色功能。

一般来说,我们希望可以主动添加组件,无需用户手动长按桌面进入组件库找到并添加,官方提供了方法:

boolean AppWidgetManager.requestPinAppWidget()

这个方法的作用是可以主动请求添加小组件,返回值为bool类型,支持添加则为true。 以下渠道表现归纳如下:

综合表现:调用方法会弹出小组件添加提示确认框,点击确认后,会将小组件添加到桌面上,当前桌面页面空间不足以放置,会自动在桌面开启新一页,将小组件放置到新一页。

华为/honor:

是否弹确认框:是 是否空间不足新增一页放置:否,空间不足系统提示"当前页面空间不足"

OPPO/三星:

是否弹确认框:是 是否空间不足新增一页放置:是

小米/红米:

是否弹确认框:否 是否空间不足新增一页放置:是 其他:方法请求时,如果应用未开启授予"桌面快捷方式"权限,将不会添加到桌面

vivo/iqoo:

是否弹确认框:否 是否空间不足新增一页放置:是 其他:若不接入vivo平台的原子组件SDK, 并将小组件上架到vivo组件平台,并通过vivo原子组件平台审核测试通过,则此方法将无任何效果,即你不能主动将小组件添加到桌面。 相关链接:vivo原子组件

其他表现:

  1. 小组件添加确认弹框形态各异,取决于渠道,以及安卓SDK版本
  2. AppWidgetManager.requestPinAppWidget() 方法的返回值是代表是否支持主动将小组件添加到桌面,所以不管小组件添加到桌面成功与否,方法返回值都是true【除极少安卓SDK低版本不支持】
  3. AppWidgetManager.requestPinAppWidget() 方法第三个参数,支持传入一个PendingIntent,当小组件添加到桌面成功后,将触发回调,若添加失败则不会触发回调。这里就存在一个问题,调用此方法后不会触发回调,小组件是"还未添加到桌面"还是"添加桌面失败",我们需要区分两种状态情景,以便异常处理。
  4. 华为不支持第3点,不管添加成功与否, 第三个参数PendingIntent都不会被隐式触发启动。
  5. 不同机型UI上的适配。在A设备小组件Cell占格可能为4 x 2, 到B设备就可能变为 5 x 3。此外小组件支持的UI控件与组件较少,在不同设备上要做好尺寸调整的UI适配。
  6. 关于小组件点击事件处理:app未启动,点击小组件的控件,触发PendingIntent,启动app,深度链接进入到指定页面,然后将app切到后台,回到桌面再次点击小组件同一控件,第二次触发PendingIntent启动,若Intent不设置Action主动清理Activity堆栈,app将自动由后台切回前台,此时如何取到Intent携带数据?在Activity的onNewIntent方法?没准你实践之后会有新思路。
  7. 关于将小组件添加到负一屏,目前没有统一的SDK,需要接入各大厂商渠道定制SDK或协议,由于繁杂,具体实操我暂时没有去处理,目前只将小组件添加到桌面。
  8. 请关注appWidget在系统字体调整后能否适应UI,不会出现遮挡、控件被截取等问题。
  9. appWidget在各大厂商叫法不同,"卡片"、"小组件"、"小部件"、"应用挂件"、"磁贴"等。
  10. 关于检测是否已经将appWidget添加到桌面成功,可通过AppWidgetManager获取组件ID个数getAppWidgetIds()方法判断,即添加前检测一次小组件已添加次数,点击添加后,延时再检测一次。

综上所述: 安卓小组件存在很多适配问题,如果需要实现较为优秀的交互和体验,需要接入各个厂商渠道定制的SDK,或遵循它们所制定的桌面组件管理系统的配置,光凭Android 官方提供的方法难以适配,效果不佳。如你有需求需要做此功能,建议做好前期调研,了解哪些可做,哪些难做,哪些做不了。

相关推荐
ZZH_AI项目交付1 天前
我把 AI 最容易改坏真实 App 的地方,整理成了 skills
人工智能·ios·app
YF02111 天前
Android 异形屏与横屏全屏沉浸式适配技术方案
android·app
曦月合一3 天前
语音识别网页版转化成APP版
app·语音识别·谷歌浏览器
私人珍藏库4 天前
【Android】Solid文件管理器3.5.2 安卓文件管理器
android·人工智能·app·工具·软件·多功能
YF02115 天前
深入剖析 Kotlin 的高效之道与核心实战
android·kotlin·app
私人珍藏库6 天前
【Android】小小最新AI--千变万化扮演任何角色--沉浸式互动
android·app·工具·软件·多功能
YF02116 天前
Android App 高效升级指南:OkDownload 多线程断点续传与全版本安装适配
android·okhttp·app
木风未来8 天前
四川 APP 开发企业排名
小程序·app·软件开发·app开发
洲洲不是州州9 天前
单片机onenet云平台的万能APP
单片机·onenet·app·嵌入式·云平台
私人珍藏库11 天前
[Android] 哔哩哔哩第三方安卓电视TVapp BV_0.3.16.r898
android·app·工具·软件·多功能