android launcher之检测应用程序图标在桌面是否存在
1.1 为什么要检测?
很多android应用在启动或者通过其他方式在桌面上添加快捷方式。为了防止重复添加,需要先检测当前应用是否已经将快捷方式放到桌面上。这里的快捷方式就是桌面图标,这些数据都是在前面提到的favorites表中,只要查询一下favorites表中的数据即可
通常一个快捷方式并不是对应于一个android应用,而是一个activity,而在favorites表中正好有一个intent字段存储了这些信息。
例如对于美图秀秀来说,该字段的值如下:
#intent;action=android.intent.action.MAIN;
category=android.intent.category.LAUNCHER;
launchFlags=0x10200000
package=com.mt.mtxx.mtxx
component=com.mt.mtxx.mtxx/.TopViewActiity;end
从intent字段的值可以看出,点击美图秀秀快捷方式显示的窗口是TopViewActivity,包是com.mt.mtxx.mtxx
所以只要查询intent字段中包含component=com.mt.mtxx.mtxx/.TopViewActiity;end字符串即可确认美图秀秀是否已经在桌面上创建了快捷方式。
需要在Androidmanifest.xml中配置的权限
如果需要修改favorites表中的数据,需要指定如下权限
执行如下代码可以删除桌面上的所有美图秀秀快捷方式
getContentResolver().delete(Uri.parse("content://com.cyanogenmod.trebuchet.settings/favorites", "intent like ?", new String[] {"%component=com.mt.mtxx.mtxx/.TopViewActivity"}));
注:本文的创作是根据李宁的书籍android深度探索进行分解的
更多相关文章
- “罗永浩抖音首秀”销售数据的可视化大屏是怎么做出来的呢?
- Nginx系列教程(三)| 一文带你读懂Nginx的负载均衡
- 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
- Android(安卓)判断用户2G/3G/4G移动数据网络
- Android应用优化(7)数据库操作
- 面试又来了
- Android如何连接MySQL数据库
- Android(安卓)的 Sqlite基本操作
- Android与webservice进行实体对象的传递