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中在桌面上创建快捷方式源码,删除快捷方式在某些机器上会不成功,因此最好只添加不删除
本文实例讲述了Android编程实现创建,删除,判断快捷方式的方法。分享给大家供大家参考,具体如下: /** * 为程序创建桌面快捷方式 ,这样写,在程序卸载的时候,快捷方式也会一并删除 */ private void addShortcut() ...
一、Python创桌面建快捷方式的2个例子 例子一: 代码如下:import osimport pythoncomfrom win32com.shell import shell from win32com.shell import shellcon def createDesktopLnk(filename,lnkname): shortcut...
*(2019/03/27)-删除了实验性快捷方式类型“本机”以避免混淆 •2.35。*(2019/03/27)-添加到选项部分:chrome:// settings / downloads的快捷方式 •2.34。*(2019/03/25)-添加到选项部分:能够禁用上下文菜单...
代码如下:public class ShortcutUtil { public static void createShortCut(Activity act, int iconResId, int appnameResId) { // com.android.launcher.permission.INSTALL_SHORTCUT Intent shortcutintent =...
需要权限: com.android.launcher.permission.INSTALL_SHORTCUT 检测是否存在快捷键 为程序创建桌面快捷方式 删除程序的快捷方式
如何用VB建立快捷方式(ShortCut) 如何直接开启一个文件 设定Mouse 在某个固定范围 隐藏Mouse 显示、隐藏win95任务栏 建立Floating Window(Top Most的window) 建立与读取.ini文件 检查开机方式及Mouse Buttons...
IE编程的一些实例,包括简单的浏览器的实现【\MyBrowser】 删除IE相关历史记录【\DelHistory】 将应用程序加入到IE工具栏【\AddToToolBar】 超级链接的实现【\HyperLink】 ...创建桌面快捷方式和活动桌面【\ShortCut】
语言:English 自动发送消息 该工具使您可以创建,编辑和删除自己的Omegle快捷方式。 设置标题,消息,然后按一个键发送您的消息!
* 为程序创建桌面快捷方式 */ private void addShortcut(){ Intent shortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT"); //快捷方式的名称 shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, ...
禁止浏览某些网站【\chap4\StopTravel】 IE收藏夹【\chap4\ MyBrowser】 创建桌面快捷方式和活动桌面【\chap4\ShortCut】 <br>(5)基本网络编程实例 点对点文件传输【\chap5\Transfer】 大型...
10. "Shortcut" 自解压脚本命令和在 "高级自解压选项" 对话框中 "添加快捷方式..."命令现在允许指定一个图标文件来让快捷方式关联一个图标文件。 11. 在 "设置/安全" 对话框中提供新的 "清除临时文件" 选项提供更好...
10. "Shortcut" 自解压脚本命令和在 "高级自解压选项" 对话框中 "添加快捷方式..."命令现在允许指定一个图标文件来让快捷方式关联一个图标文件。 11. 在 "设置/安全" 对话框中提供新的 "清除临时文件" 选项提供更好...
简单的浏览器的实现【\chap4\MyBrowser】 删除IE相关历史记录【\chap4\DelHistory】 将应用程序加入到IE工具栏【\chap4\AddToToolBar】 超级链接的实现【\chap4\...创建桌面快捷方式和活动桌面【\chap4\ShortCut】
管理快捷方式 <br> 复制快捷方式 创建快捷方式 删除快捷方式 移动快捷方式 <br> 操纵系统注册表 远程运行脚本 对脚本进行签名 WSH 和 Windows 管理规范 (WMI) WSH 演练 WSH ...
129. 如何用Windows Script Host创建桌面快捷方式 473 130. 如何用Windows Script Host进行磁盘碎片整理 475 131. 如何用Windows Script Host打开管理工具中的选项 476 132. 如何获得系统中的逻辑驱动器 476 133...
创建桌面快捷方式和活动桌面【\chap4\ShortCut】 (5)基本网络编程实例 点对点文件传输【\chap5\Transfer】 大型文件传输【\chap5\Transfer】 端口扫描程序【\chap5\ MyPortScanner】 Finger编程【\chap5\MyFinger...
创建桌面快捷方式和活动桌面【\chap4\ShortCut】 (5)基本网络编程实例 点对点文件传输【\chap5\Transfer】 大型文件传输【\chap5\Transfer】 端口扫描程序【\chap5\ MyPortScanner】 Finger编程【\chap5\MyFinger...