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深度探索进行分解的

更多相关文章

  1. “罗永浩抖音首秀”销售数据的可视化大屏是怎么做出来的呢?
  2. Nginx系列教程(三)| 一文带你读懂Nginx的负载均衡
  3. 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
  4. Android(安卓)判断用户2G/3G/4G移动数据网络
  5. Android应用优化(7)数据库操作
  6. 面试又来了
  7. Android如何连接MySQL数据库
  8. Android(安卓)的 Sqlite基本操作
  9. Android与webservice进行实体对象的传递

随机推荐

  1. android Activity 设置大小
  2. android Fragment FragmentActivity 选项
  3. android发送通知
  4. Android鍏ラ棬绡囦竴锛欰ndroid Activity
  5. Android和Java ME的区别与联系
  6. Android一些常用的依赖
  7. Android Intent应用,打开网页,安装程序,打电
  8. android中给图片打水印
  9. Android 源码 图形系统之硬件渲染器绘制
  10. 碎片概述(Fragments Overview)----(1)