测试环境为Adnroid 2.1以上。

第一步:AndroidManifest.xml 权限配置:

添加快捷方式权限:

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

验证快捷方式是否存在权限:
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />

删除快捷方式权限:
<uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" />

代码:

 1 public class ShortCutSample {
 2     /**
 3     * 添加快捷方式
 4     * */
 5     public void creatShortCut(Activity activity,String shortcutName,int resourceId)
 6     {
 7         Intent intent = new Intent();
 8         intent.setClass(activity, activity.getClass());
 9         /*以下两句是为了在卸载应用的时候同时删除桌面快捷方式*/
10         intent.setAction("android.intent.action.MAIN");
11         intent.addCategory("android.intent.category.LAUNCHER");
12
13         Intent shortcutintent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
14
15          //不允许重复创建
16          shortcutintent.putExtra("duplicate", false);
17          //需要现实的名称
18          shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_NAME, shortcutName);
19          //快捷图片
20          Parcelable icon = Intent.ShortcutIconResource.fromContext(activity.getApplicationContext(), resourceId);
21          shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);
22          //点击快捷图片,运行的程序主入口
23          shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, intent);
24          //发送广播。OK
25          activity.sendBroadcast(shortcutintent);
26     }
27     /**
28     * 删除快捷方式
29     * */
30     public void deleteShortCut(Activity activity,String shortcutName)
31     {
32         Intent shortcut = new Intent("com.android.launcher.action.UNINSTALL_SHORTCUT");
33         //快捷方式的名称
34         shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME,shortcutName);
35         //在网上看到到的基本都是一下几句,测试的时候发现并不能删除快捷方式。
36         //String appClass = activity.getPackageName()+"."+ activity.getLocalClassName();
37         //ComponentName comp = new ComponentName( activity.getPackageName(), appClass);
38         //shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(Intent.ACTION_MAIN).setComponent(comp));
39         /**改成以下方式能够成功删除,估计是删除和创建需要对应才能找到快捷方式并成功删除**/
40         Intent intent = new Intent();
41         intent.setClass(activity, activity.getClass());
42         intent.setAction("android.intent.action.MAIN");
43         intent.addCategory("android.intent.category.LAUNCHER");
44         shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT,intent);
45         activity.sendBroadcast(shortcut);
46     }
47     /**
48     * 判断是否存在快捷方式
49     * */
50     public boolean hasShortcut(Activity activity,String shortcutName)
51     {
52         String url = "";
53         int systemversion = Integer.parseInt(android.os.Build.VERSION.SDK);
54         /*大于8的时候在com.android.launcher2.settings 里查询(未测试)*/
55         if(systemversion < 8){
56               url = "content://com.android.launcher.settings/favorites?notify=true";
57         }else{
58             url = "content://com.android.launcher2.settings/favorites?notify=true";
59         }
60         ContentResolver resolver = activity.getContentResolver();
61         Cursor cursor = resolver.query(Uri.parse(url), null, "title=?",new String[] {shortcutName}, null);
62         if (cursor != null && cursor.moveToFirst()) {
63                 cursor.close();
64                 return true;
65         }
66         return false;
67     }
68 }

调用测试代码:

   public class mainActivity extends Activity {/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);ShortCutSample sample =new ShortCutSample();String shortcutName=getString(R.string.app_name);if(sample.hasShortcut(this, shortcutName))sample.deleteShortCut(this,shortcutName);elsesample.creatShortCut(this,shortcutName,R.drawable.icon);}
}

在网上找了很久都是一样的代码,删除那块搞了一个下午才弄好,其实很简单的东东。

第一次发文章,Adnroid新人。多多交流和指导呀。呵呵。

转载于:https://www.cnblogs.com/yeqw1985/archive/2013/02/06/2907704.html

Android 创建,验证和删除桌面快捷方式 (删除快捷方式测试可用)相关推荐

  1. win10系统桌面计算机图标怎么删除,win10 移除快捷方式的图标怎么操作_win10怎样删除桌面上的快捷方式图标...

    刚更新完w10系统的小伙伴可能都会发现这么一个问题,就是刚更新完都会发现电脑桌面上的图标有一些都是带着一个快捷方式的小箭头,这个时候肯定会有小伙伴们看着难受想要吧快捷方式的图标删除,那么win10 移 ...

  2. win7删除桌面计算机图标怎么删除,桌面无法删除的图标,详细教您win7桌面图标删不掉怎么办...

    很多朋友在工作的时候,在电脑系统中安装或卸载软件时,可能会在系统桌面上留下一些奇怪的图标,想要将其移动到回收站中,却显示无法删除的提示.那么应该用什么方法才能把这些顽固的"钉子户" ...

  3. Android 创建,删除,检测桌面快捷方式

    2019独角兽企业重金招聘Python工程师标准>>> 参考 Android 创建快捷方式 Android 快捷方式动画 创建桌面快捷方式需权限 <uses-permissio ...

  4. Android 开机自动运行和添加删除桌面快捷方式

    <一>开机自启动 当Android启动时,会发出一个系统广播,内容为ACTION_BOOT_COMPLETED,它的字符串常量表示为android.intent.action.BOOT_C ...

  5. python桌面快捷图标_Python创建、删除桌面、启动组快捷方式的例子分享

    一.Python创桌面建快捷方式的2个例子 例子一: 代码如下: import os import pythoncom from win32com.shell import shell from wi ...

  6. Android创建桌面快捷方式所遇到的问题与解决方案

    将近二个多月没写博客了.      之前一段时间一直在搞红包助手,就没抽时间写博客,但写这个真的是很好玩.没想到居然在Android上实现模拟点击,从而实现自动抢红包,有兴趣的同学可以参考https: ...

  7. 修改/删除桌面快捷方式/图标时提示“你需要来自XXX\Administrator的权限才能对此文件进行更改” Win10

    博主在重装系统(Win10)后,发现无论是修改还是删除桌面快捷方式,都会弹出提示"你需要来自XXX\Administrator的权限才能对此文件进行更改" (如图),并且在尝试过网 ...

  8. win8 桌面显示计算机图标怎么删除,win8系统桌面图标显示快捷方式箭头怎么删除...

    打开win8系统电脑发现一个奇怪现象,win8系统桌面图标显示快捷方式箭头,虽然不影响正常使用,但是看着非常奇怪,影响桌面美观.上网查找一些去除的方法,但是操作方法比较复杂.本文系统城小编向大家介绍w ...

  9. 恢复和删除桌面快捷方式图标箭头

    方法一:注册表删除和恢复        一.删除方法     1.运行注册表编辑器(regedit),打开hkey_classes_root\lnkfile分支.     2.在lnkfile子键下面 ...

最新文章

  1. rsa加密算法java实例,java实现的RSA加密算法详解
  2. Mac 技术篇-查看python安装位置,查看java安装位置
  3. Javascript高级程序设计第二版第十四章--异常--笔记
  4. PAT甲题题解-1128. N Queens Puzzle (20)-做了一个假的n皇后问题
  5. 《前端工程化体系设计与实践》-笔记
  6. 建立分析模型和设计模型
  7. vb中SendMessage函数
  8. numpy线性代数基础 - Python和MATLAB矩阵处理的不同
  9. 深度学习笔记_损失函数softmax和SVM
  10. 数据库基础、使用C语言构建一个数据库、SQL语言、MySQL
  11. minigui 交叉编译
  12. H5前端学习之一HTML和CSS基础认识
  13. 关于线性稳压器的五个设计细节
  14. Rasa原文-编写对话数据
  15. 南非醉茄来源的天然产物之活性大盘点
  16. matlab解含gamma函数的方程组,matlab积分结果中的gamma()函数参数问题,急求解答!!!...
  17. 如何关闭vivado的Jtag自动检测
  18. Immo Tool ECU软件 可对发动机ECU和防盗锁进 行维修和编码
  19. Sell-In, Sell-Through, Sell Out都神马意思 江湖黑话
  20. 计算机网络(十二)IPv6介绍

热门文章

  1. C++ 贪吃蛇小游戏
  2. java中8种数据类型和默认值所占字节数
  3. 字符串字符和数字分割
  4. Flash网站流量统计的方法
  5. 七个重要习惯——读《高效能人士的七个习惯》整理
  6. [转]JavaScript面向对象的特性
  7. 找出一个字符串中出现次数最多的字_487,重构字符串
  8. Linux字符界面和图形界面
  9. Visual Studio属性配置中使用宏
  10. c语言n次方怎么输入_C语言实现斐波拉契数列