`
Weich_JavaDeveloper
  • 浏览: 100275 次
  • 性别: 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);
 

 

分享到:
评论

相关推荐

    Shortcut创建快捷方式及使用说明

    在本教程中,我们将详细探讨如何使用`Shortcut.exe`工具来创建快捷方式以及它的使用方法。 首先,我们来看一下`Shortcut.exe`这个程序。这是一个轻量级的应用程序,它的主要功能就是帮助用户创建快捷方式。运行`...

    c++快捷方式创建与删除

    在C++编程中,创建和删除快捷方式是常见的操作,特别是在开发桌面应用程序或者需要自定义启动方式时。快捷方式提供了一种简便的方式,让用户能够快速访问程序或文件,而无需直接寻找它们在文件系统中的实际位置。...

    Delphi桌面创建及删除快捷方式

    在Delphi编程环境中,创建和删除桌面快捷方式是常见的任务,尤其在开发系统工具或桌面应用时。Delphi提供了一套API接口和组件,使得开发者能够轻松地完成这些操作。以下将详细介绍如何在Delphi中实现桌面快捷方式的...

    android shortcut桌面快捷方式demo

    要删除已创建的动态快捷方式,可以通过`ShortcutManager`的`removeDynamicShortcuts()`方法指定快捷方式ID进行删除。 ```java shortcutManager.removeDynamicShortcuts(Arrays.asList("shortcut_id")); ``` 对于静态...

    动态注册快捷方式和删除快捷键方式

    删除已创建的动态快捷方式相对简单,只需调用`ShortcutManager`的`removeDynamicShortcuts()`方法,传入相应的快捷方式ID即可: ```java shortcutManager.removeDynamicShortcuts(Collections.singletonList(...

    android 检查是否创建桌面快捷方式以及创建快捷方式

    总的来说,Android提供了一套完整的快捷方式管理系统,开发者可以根据需要选择静态或动态方式创建快捷方式,同时还可以方便地检查、更新和删除它们,以满足用户的个性化需求。在实际应用中,应考虑快捷方式的适用...

    Android 创建快捷方式 删除快捷方式 启动模式

    本篇文章将深入探讨如何在Android中创建、删除快捷方式以及快捷方式的启动模式,同时也会提及一些需要注意的关键点。 **创建快捷方式** 在Android中创建快捷方式通常通过`Intent`和`ShortcutManager` API来实现。...

    C#创建查看修改删除快捷方式源码

    在C#编程环境中,开发Windows桌面应用程序时,有时我们需要对快捷方式进行操作,比如创建、查看、修改或删除。本文将详细讲解如何使用C#来实现这些功能,特别适合于Winform应用开发。我们将主要探讨以下几个方面: ...

    创建和删除Shortcut的例子

    本教程将详细讲解如何在Android中创建和删除快捷方式。 一、创建快捷方式 1. **定义Intent**: 创建快捷方式的关键在于定义一个指向目标Activity的Intent。Intent是Android中用于启动组件(如Activity)的信使。在`...

    android系统判断快捷方式是否存在、添加删除快捷方式

    本文将详细介绍如何在Android系统中判断快捷方式是否存在、如何添加及删除快捷方式。 #### 一、权限声明 为了实现这些功能,首先需要在`AndroidManifest.xml`文件中声明相应的权限: ```xml ...

    为指定程序在桌面在创建快捷方式,并可删除任一目录的快捷方式(2

    `Create Shortcut.Frm`和`Delete Shortcut.frm`可能是两个窗体文件,分别用于创建和删除快捷方式的用户界面。窗体可能会包含按钮、文本框等控件,让用户输入或选择目标程序的路径,然后调用上述的创建或删除逻辑。 ...

    shortcut-helper,一个android库可以轻松创建新的android 7.1快捷方式。.zip

    快捷方式助手(shortcut-helper)是Android开发者为了简化在Android 7.1及以上版本创建快捷方式过程而设计的一个开源库。这个库的目的是让开发者能够快速、便捷地为他们的应用程序添加自定义快捷方式功能,从而提高...

    android 快捷方式的权限判断。

    通过`ShortcutManager`,开发者可以添加、更新或删除快捷方式。然而,创建快捷方式可能需要特定的权限,例如`MANAGE_SHORTCUTS`。对于某些品牌,如华为,还需要额外的权限设置或者服务注册。 在`checkUtil.java`这...

    android创建快捷方式demo

    在这个Demo中,我们将深入探讨快捷方式的创建过程,以及在不同设备上可能遇到的问题,特别是关于删除快捷方式的注意事项。 首先,我们需要了解Android快捷方式API。从Android 7.1(API级别25)开始,引入了全新的`...

    android 生成和删除快捷方式

    在Android系统中,快捷方式(Shortcut...总的来说,创建和删除Android快捷方式是提升用户体验的重要手段。通过理解并熟练运用`ShortcutManager`,开发者可以更好地定制应用的快捷方式,提供更加便捷的操作路径给用户。

    为指定程序在桌面在创建快捷方式,并可删除任一目录的快捷方式(25KB)...

    标题和描述中提到的是一个关于创建和删除桌面快捷方式的程序,主要涉及到Windows操作系统中的文件操作和编程技术。这个程序可以方便用户为指定的程序在桌面创建快捷方式,同时也能轻松删除任何目录的快捷方式。从...

    Android中Shortcut的demo

    本教程将深入探讨如何在Android中创建和删除快捷方式,通过示例项目"ShortcutsDemo"来讲解这一过程。 首先,为了创建一个快捷方式,我们需要在AndroidManifest.xml文件中声明一个IntentFilter,用于标识可以被快捷...

    为指定程序在桌面在创建快捷方式VB

    `Create Shortcut.Frm` 和 `Delete Shortcut.frm` 是VB的窗体文件,可能包含了创建和删除快捷方式的界面设计。窗体上可能会有文本框让用户输入程序路径,按钮触发创建或删除操作。 `Create Shortcut.frx` 和 `...

    MFC添加删除快捷方式源码

    在本案例中,"MFC添加删除快捷方式源码"涉及到了在MFC应用中创建、管理和删除Windows快捷方式(Shortcut)的功能。 Windows快捷方式是一种特殊类型的文件,具有.LNK扩展名,它们指向其他文件或程序,允许用户快速...

    删除添加快捷方式

    "删除添加快捷方式"这个主题涉及到如何在Android应用中实现快捷方式的创建与移除。以下将详细讲解这一知识点。 首先,从Android 7.1(API级别25)开始,Android引入了动态快捷方式(Dynamic Shortcuts),允许...

Global site tag (gtag.js) - Google Analytics