Android创办和删除桌面快捷方式

Android创建和删除桌面快捷方式

   

1, 创建 

/**
 * 为程序创建桌面快捷方式
 */
private void addShortcut(){
	Intent shortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
		
	//快捷方式的名称
	shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name));
	shortcut.putExtra("duplicate", false); //不允许重复创建
		
	//指定当前的Activity为快捷方式启动的对象: 如 com.everest.video.VideoPlayer
	//注意: ComponentName的第二个参数必须加上点号(.),否则快捷方式无法启动相应程序
	ComponentName comp = new ComponentName(this.getPackageName(), "."+this.getLocalClassName());
	shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(Intent.ACTION_MAIN).setComponent(comp));

	//快捷方式的图标
	ShortcutIconResource iconRes = Intent.ShortcutIconResource.fromContext(this, R.drawable.icon);
	shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconRes);
		
	sendBroadcast(shortcut);
}

  

2, 删除

/**
 * 删除程序的快捷方式
 */
private void delShortcut(){
	Intent shortcut = new Intent("com.android.launcher.action.UNINSTALL_SHORTCUT");
		
	//快捷方式的名称
	shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name));
		
	//指定当前的Activity为快捷方式启动的对象: 如 com.everest.video.VideoPlayer
	//注意: ComponentName的第二个参数必须是完整的类名(包名+类名),否则无法删除快捷方式
	String appClass = this.getPackageName() + "." +this.getLocalClassName();
	ComponentName comp = new ComponentName(this.getPackageName(), appClass);
	shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(Intent.ACTION_MAIN).setComponent(comp));
		
	sendBroadcast(shortcut);
		
}

 

 

3, 声明权限

在AndroidManifest.xml 文件中声明 创建和删除快捷方式时声明权限

 

<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
<uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" />

 

 

1 楼 mapeijie888 2010-11-19  
实验环境 sdk2.2  创建 ok 删除失败
2 楼 huangbq 2010-12-21  
楼主,卸载程序的时候自动删除“程序的快捷方式 ”怎么实现,能不能提供一种可行方案?
3 楼 mermaid 2011-01-05  
huangbq 写道
楼主,卸载程序的时候自动删除“程序的快捷方式 ”怎么实现,能不能提供一种可行方案?

卸载程序的时候不是自动删除快捷方式吗?系统自己处理的
4 楼 1846396994 2012-04-21  
总结的关于添加和删除及判断是否存在快捷方式,Android应用添加(创建)和删除及判断是否存在桌面快捷方式
5 楼 huangbq 2012-04-26  
mermaid 写道
huangbq 写道
楼主,卸载程序的时候自动删除“程序的快捷方式 ”怎么实现,能不能提供一种可行方案?

卸载程序的时候不是自动删除快捷方式吗?系统自己处理的

有这样一个需求,就是应用更换了图标.当应用升级时我需要删掉原来就的快捷方式,创建新的,或者有没有什么广播告诉桌面我的快捷方式的图标改变,不知道你有没有好的思路;
6 楼 huangbq 2012-04-26  
1846396994 写道
总结的关于添加和删除及判断是否存在快捷方式,Android应用添加(创建)和删除及判断是否存在桌面快捷方式

多谢回答,不过我有个疑问,现在市面的桌面非常的多,而每个桌面保存快捷方式缓存的数据库不尽相同(博客只给出Android自带桌面的标准数据库判断是否已经创建的快捷方式的方法),并且删掉快捷方式的方法不起作用;
7 楼 1846396994 2012-04-27  
huangbq 写道
1846396994 写道
总结的关于添加和删除及判断是否存在快捷方式,Android应用添加(创建)和删除及判断是否存在桌面快捷方式

多谢回答,不过我有个疑问,现在市面的桌面非常的多,而每个桌面保存快捷方式缓存的数据库不尽相同(博客只给出Android自带桌面的标准数据库判断是否已经创建的快捷方式的方法),并且删掉快捷方式的方法不起作用;



那你只能一个个去测试了, 毕竟这些桌面都是私有,他们有没有提供api不一定。