先说下我的思路:
luancher3里面更换图标的逻辑如下:
先从APP资源包里查询--数据库查询--其他地方查询ICON
因此,我们只需要把 从数据库获取ICON 代码提前到 从APP资源包提取即可。
再来我们外部APP只需对Launcher.db的 ICON字段进行 添加图标,即可。再通知桌面去更新图标,即可完成整个桌面的 图标自动更换的效果。
这样做的优点:
代码修改量少,主题的APP无须跟Launcher3这个桌面APP有任何关联。相当于外部应用。
(前面第8我已经稍微简单介绍了下launcher3的内容提供者,需要写入2个权限)
具体思路比较简单清晰。并且实现了。
有需要的可以留言,我可以给demo哈。
读取按钮:
通过内容提供者对Launcher.db数据库进行读取信息并解析成List<shotCupInfo>对象,方便后面进行遍历更新图标到数据库。
更新按钮:点击后,将根据前面获取到的APP的ID进行指定更新Launcher.db的 ICON数据库。在这里我们会将SD卡里面ICON转为字节数组,进行保存到数据库。
应用主题:通知桌面去刷新。(这一步其实不用做的,因为当你进行第二步,更新操作的时候,访问数据库时候,桌面的数据库注册了观察者监听数据库发生改变,则进行workspace图标的更新。)