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

你可能感兴趣的:(Android)