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.exe`工具来创建快捷方式以及它的使用方法。 首先,我们来看一下`Shortcut.exe`这个程序。这是一个轻量级的应用程序,它的主要功能就是帮助用户创建快捷方式。运行`...
在C++编程中,创建和删除快捷方式是常见的操作,特别是在开发桌面应用程序或者需要自定义启动方式时。快捷方式提供了一种简便的方式,让用户能够快速访问程序或文件,而无需直接寻找它们在文件系统中的实际位置。...
在Delphi编程环境中,创建和删除桌面快捷方式是常见的任务,尤其在开发系统工具或桌面应用时。Delphi提供了一套API接口和组件,使得开发者能够轻松地完成这些操作。以下将详细介绍如何在Delphi中实现桌面快捷方式的...
要删除已创建的动态快捷方式,可以通过`ShortcutManager`的`removeDynamicShortcuts()`方法指定快捷方式ID进行删除。 ```java shortcutManager.removeDynamicShortcuts(Arrays.asList("shortcut_id")); ``` 对于静态...
删除已创建的动态快捷方式相对简单,只需调用`ShortcutManager`的`removeDynamicShortcuts()`方法,传入相应的快捷方式ID即可: ```java shortcutManager.removeDynamicShortcuts(Collections.singletonList(...
总的来说,Android提供了一套完整的快捷方式管理系统,开发者可以根据需要选择静态或动态方式创建快捷方式,同时还可以方便地检查、更新和删除它们,以满足用户的个性化需求。在实际应用中,应考虑快捷方式的适用...
本篇文章将深入探讨如何在Android中创建、删除快捷方式以及快捷方式的启动模式,同时也会提及一些需要注意的关键点。 **创建快捷方式** 在Android中创建快捷方式通常通过`Intent`和`ShortcutManager` API来实现。...
在C#编程环境中,开发Windows桌面应用程序时,有时我们需要对快捷方式进行操作,比如创建、查看、修改或删除。本文将详细讲解如何使用C#来实现这些功能,特别适合于Winform应用开发。我们将主要探讨以下几个方面: ...
本教程将详细讲解如何在Android中创建和删除快捷方式。 一、创建快捷方式 1. **定义Intent**: 创建快捷方式的关键在于定义一个指向目标Activity的Intent。Intent是Android中用于启动组件(如Activity)的信使。在`...
本文将详细介绍如何在Android系统中判断快捷方式是否存在、如何添加及删除快捷方式。 #### 一、权限声明 为了实现这些功能,首先需要在`AndroidManifest.xml`文件中声明相应的权限: ```xml ...
`Create Shortcut.Frm`和`Delete Shortcut.frm`可能是两个窗体文件,分别用于创建和删除快捷方式的用户界面。窗体可能会包含按钮、文本框等控件,让用户输入或选择目标程序的路径,然后调用上述的创建或删除逻辑。 ...
快捷方式助手(shortcut-helper)是Android开发者为了简化在Android 7.1及以上版本创建快捷方式过程而设计的一个开源库。这个库的目的是让开发者能够快速、便捷地为他们的应用程序添加自定义快捷方式功能,从而提高...
通过`ShortcutManager`,开发者可以添加、更新或删除快捷方式。然而,创建快捷方式可能需要特定的权限,例如`MANAGE_SHORTCUTS`。对于某些品牌,如华为,还需要额外的权限设置或者服务注册。 在`checkUtil.java`这...
在这个Demo中,我们将深入探讨快捷方式的创建过程,以及在不同设备上可能遇到的问题,特别是关于删除快捷方式的注意事项。 首先,我们需要了解Android快捷方式API。从Android 7.1(API级别25)开始,引入了全新的`...
在Android系统中,快捷方式(Shortcut...总的来说,创建和删除Android快捷方式是提升用户体验的重要手段。通过理解并熟练运用`ShortcutManager`,开发者可以更好地定制应用的快捷方式,提供更加便捷的操作路径给用户。
标题和描述中提到的是一个关于创建和删除桌面快捷方式的程序,主要涉及到Windows操作系统中的文件操作和编程技术。这个程序可以方便用户为指定的程序在桌面创建快捷方式,同时也能轻松删除任何目录的快捷方式。从...
本教程将深入探讨如何在Android中创建和删除快捷方式,通过示例项目"ShortcutsDemo"来讲解这一过程。 首先,为了创建一个快捷方式,我们需要在AndroidManifest.xml文件中声明一个IntentFilter,用于标识可以被快捷...
`Create Shortcut.Frm` 和 `Delete Shortcut.frm` 是VB的窗体文件,可能包含了创建和删除快捷方式的界面设计。窗体上可能会有文本框让用户输入程序路径,按钮触发创建或删除操作。 `Create Shortcut.frx` 和 `...
在本案例中,"MFC添加删除快捷方式源码"涉及到了在MFC应用中创建、管理和删除Windows快捷方式(Shortcut)的功能。 Windows快捷方式是一种特殊类型的文件,具有.LNK扩展名,它们指向其他文件或程序,允许用户快速...
"删除添加快捷方式"这个主题涉及到如何在Android应用中实现快捷方式的创建与移除。以下将详细讲解这一知识点。 首先,从Android 7.1(API级别25)开始,Android引入了动态快捷方式(Dynamic Shortcuts),允许...