`
Weich_JavaDeveloper
  • 浏览: 98161 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

shortcut 快捷方式创建及删除

 
阅读更多

AndroidShortCutUtils.java

/**
	 * 添加到Shortcut选项中(默认桌面上长按调出)
	 * @param activity
	 * @param pakageName
	 * @param className
	 * @param shortcutName
	 * @param icon
	 * @param duplicate
	 * 
	 * 同时需要在manifest中为activity提供一个包含
	 * action="android.intent.action.CREATE_SHORTCUT"的intent-filter
	 */
	public static void addShortcutToOptions(Activity activity, String pakageName, String className, String shortcutName, Drawable icon, boolean duplicate){
		Intent shortcut = new Intent();
		String label = shortcutName;
		BitmapDrawable iconBitmapDrawabel = (BitmapDrawable)icon;
		PackageManager packageManager = activity.getPackageManager();
		try {
			ApplicationInfo appInfo = packageManager.getApplicationInfo(pakageName, PackageManager.GET_META_DATA|PackageManager.GET_UNINSTALLED_PACKAGES);
			if(label==null){
				label = packageManager.getApplicationLabel(appInfo).toString();
			}
			if(iconBitmapDrawabel==null){
				iconBitmapDrawabel = (BitmapDrawable) packageManager.getApplicationIcon(appInfo);
			}
		} catch (NameNotFoundException e) {
			e.printStackTrace();
			Toast.makeText(activity, e.toString(), Toast.LENGTH_SHORT);
			return;
		}
		shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, label);
		shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON, iconBitmapDrawabel.getBitmap());
		ComponentName comp = new ComponentName(pakageName, className);
		shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(Intent.ACTION_MAIN).setComponent(comp));
		activity.setResult(Activity.RESULT_OK, shortcut);
	}

	static final String ACTION_INSTALL = "com.android.launcher.action.INSTALL_SHORTCUT";
	static final String ACTION_UNINSTALL = "com.android.launcher.action.UNINSTALL_SHORTCUT";
	
	/**
	 * 添加快捷方式到桌面
	 * @param context
	 * @param pakageName
	 * @param className
	 * @param shortcutName 可手动指定快捷方式的名称,删除时也要一致。null则使用默认名称
	 * @param icon 手动指定快捷方式的图标,null则使用默认图标
	 * @param duplicate
	 * 
	 * 同时需要在manifest中设置以下权限:
	 * <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
	 */
	public static void addShortcutToDesktop(Context context, String pakageName, String className, String shortcutName, Drawable icon, boolean duplicate){
		Intent shortcut = new Intent(ACTION_INSTALL);
		String label = shortcutName;
		BitmapDrawable iconBitmapDrawabel = (BitmapDrawable)icon;
		PackageManager packageManager = context.getPackageManager();
		try {
			ApplicationInfo appInfo = packageManager.getApplicationInfo(pakageName, PackageManager.GET_META_DATA|PackageManager.GET_ACTIVITIES);
			if(label==null){
				label = packageManager.getApplicationLabel(appInfo).toString();
			}
			if(iconBitmapDrawabel==null){
				iconBitmapDrawabel = (BitmapDrawable) packageManager.getApplicationIcon(appInfo);
			}
		} catch (NameNotFoundException e) {
			e.printStackTrace();
			Toast.makeText(context, e.toString(), Toast.LENGTH_SHORT);
			return;
		}
		
		shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, label);
		shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON, iconBitmapDrawabel.getBitmap());
		shortcut.putExtra("duplicate", duplicate); 
		ComponentName comp = new ComponentName(pakageName, className);
		shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(Intent.ACTION_MAIN).setFlags(Intent.FLAG_FROM_BACKGROUND).setComponent(comp));
		context.sendBroadcast(shortcut);
	}
	
	/**
	 * 删除桌面快捷方式
	 * @param context
	 * @param pakageName
	 * @param className
	 * @param shortcutName 如果当初制定的快捷方式名称并非应用名,请手动指定,否则无法删除。null则使用默认名称
	 * 
	 * 同时需要在manifest中设置以下权限:
	 * <uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" />
	 */
	public static void delShortcutFromDesktop(Context context, String pakageName, String className, String shortcutName){
		Intent shortcut = new Intent(ACTION_UNINSTALL);
		String label = shortcutName;
		PackageManager packageManager = context.getPackageManager();
		try {
			ApplicationInfo appInfo = packageManager.getApplicationInfo(pakageName, PackageManager.GET_META_DATA|PackageManager.GET_UNINSTALLED_PACKAGES);
			if(label==null){
				label = packageManager.getApplicationLabel(appInfo).toString();
			}
		} catch (NameNotFoundException e) {
			e.printStackTrace();
			Toast.makeText(context, e.toString(), Toast.LENGTH_SHORT);
			return;
		}
		shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, label);
		ComponentName comp = new ComponentName(pakageName, className);
		shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(Intent.ACTION_MAIN).setComponent(comp));
		context.sendBroadcast(shortcut);
	}

 PS:关于删除

网上有人说shortcut的删除需要root。其实是不用的。

只是在删除的时候有点和创建不同的地方,看代码:

 

AndroidShortCutUtils.addShortcutToDesktop(this, this.getPackageName(), ".MainActivity", null, null, false);
//删除的时候className需要包括有package的信息。
AndroidShortCutUtils.delShortcutFromDesktop(this,  this.getPackageName(), "com.knowhow.android.client.MainActivity", null);
 

 

分享到:
评论

相关推荐

    Android中Shortcut的demo

    在Android中创建与删除快捷方式(shortcut)的demo

    android创建快捷方式demo

    android中在桌面上创建快捷方式源码,删除快捷方式在某些机器上会不成功,因此最好只添加不删除

    Android编程实现创建,删除,判断快捷方式的方法

    本文实例讲述了Android编程实现创建,删除,判断快捷方式的方法。分享给大家供大家参考,具体如下: /** * 为程序创建桌面快捷方式 ,这样写,在程序卸载的时候,快捷方式也会一并删除 */ private void addShortcut() ...

    Python创建、删除桌面、启动组快捷方式的例子分享

    一、Python创桌面建快捷方式的2个例子 例子一: 代码如下:import osimport pythoncomfrom win32com.shell import shell from win32com.shell import shellcon def createDesktopLnk(filename,lnkname): shortcut...

    保存为快捷方式「Save as Shortcut」-crx插件

    *(2019/03/27)-删除了实验性快捷方式类型“本机”以避免混淆 •2.35。*(2019/03/27)-添加到选项部分:chrome:// settings / downloads的快捷方式 •2.34。*(2019/03/25)-添加到选项部分:能够禁用上下文菜单...

    解析Android应用启动后自动创建桌面快捷方式的实现方法

    代码如下:public class ShortcutUtil { public static void createShortCut(Activity act, int iconResId, int appnameResId) { // com.android.launcher.permission.INSTALL_SHORTCUT Intent shortcutintent =...

    java_android_创建删除快捷图标工具类

    需要权限: com.android.launcher.permission.INSTALL_SHORTCUT 检测是否存在快捷键 为程序创建桌面快捷方式 删除程序的快捷方式

    VB精华文章,CHM文件 很不错!

    如何用VB建立快捷方式(ShortCut) 如何直接开启一个文件 设定Mouse 在某个固定范围 隐藏Mouse 显示、隐藏win95任务栏 建立Floating Window(Top Most的window) 建立与读取.ini文件 检查开机方式及Mouse Buttons...

    VC_IE.rar_Browser Helper Obje_IE_VC_IE_ie 工具栏_删除历史记录

    IE编程的一些实例,包括简单的浏览器的实现【\MyBrowser】 删除IE相关历史记录【\DelHistory】 将应用程序加入到IE工具栏【\AddToToolBar】 超级链接的实现【\HyperLink】 ...创建桌面快捷方式和活动桌面【\ShortCut】

    Omegle Shortcut Messages-crx插件

    语言:English 自动发送消息 该工具使您可以创建,编辑和删除自己的Omegle快捷方式。 设置标题,消息,然后按一个键发送您的消息!

    android开发使用例子

    * 为程序创建桌面快捷方式 */ private void addShortcut(){ Intent shortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT"); //快捷方式的名称 shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, ...

    C++网络编程实例二.rar

    禁止浏览某些网站【\chap4\StopTravel】 IE收藏夹【\chap4\ MyBrowser】 创建桌面快捷方式和活动桌面【\chap4\ShortCut】 &lt;br&gt;(5)基本网络编程实例 点对点文件传输【\chap5\Transfer】 大型...

    WinRAR 3.80 正式版 简体中文已注册

    10. "Shortcut" 自解压脚本命令和在 "高级自解压选项" 对话框中 "添加快捷方式..."命令现在允许指定一个图标文件来让快捷方式关联一个图标文件。 11. 在 "设置/安全" 对话框中提供新的 "清除临时文件" 选项提供更好...

    WinRAR3.8(单文件,不用安装,已注册版)

    10. "Shortcut" 自解压脚本命令和在 "高级自解压选项" 对话框中 "添加快捷方式..."命令现在允许指定一个图标文件来让快捷方式关联一个图标文件。 11. 在 "设置/安全" 对话框中提供新的 "清除临时文件" 选项提供更好...

    vc++IE编程

    简单的浏览器的实现【\chap4\MyBrowser】 删除IE相关历史记录【\chap4\DelHistory】 将应用程序加入到IE工具栏【\chap4\AddToToolBar】 超级链接的实现【\chap4\...创建桌面快捷方式和活动桌面【\chap4\ShortCut】

    Windows 脚本技术参考手册

    管理快捷方式 &lt;br&gt; 复制快捷方式 创建快捷方式 删除快捷方式 移动快捷方式 &lt;br&gt; 操纵系统注册表 远程运行脚本 对脚本进行签名 WSH 和 Windows 管理规范 (WMI) WSH 演练 WSH ...

    Foxpro 开发答疑160问

    129. 如何用Windows Script Host创建桌面快捷方式 473 130. 如何用Windows Script Host进行磁盘碎片整理 475 131. 如何用Windows Script Host打开管理工具中的选项 476 132. 如何获得系统中的逻辑驱动器 476 133...

    《Visual C++网络通信编程实用案例精选》配套源码

    创建桌面快捷方式和活动桌面【\chap4\ShortCut】 (5)基本网络编程实例 点对点文件传输【\chap5\Transfer】 大型文件传输【\chap5\Transfer】 端口扫描程序【\chap5\ MyPortScanner】 Finger编程【\chap5\MyFinger...

    VC++网络编程源码

    创建桌面快捷方式和活动桌面【\chap4\ShortCut】 (5)基本网络编程实例 点对点文件传输【\chap5\Transfer】 大型文件传输【\chap5\Transfer】 端口扫描程序【\chap5\ MyPortScanner】 Finger编程【\chap5\MyFinger...

Global site tag (gtag.js) - Google Analytics