最近项目需要做一个快捷方式,不是应用程序的快捷方式,而是应用程序某一个功能的快捷方式,比如金山电池的“快捷省电”桌面快捷方式,在做的过程中,遇到了一些问题,现在记录一下,万一有人和我碰到同样的问题,不用走我的冤枉路了。

参考文章:http://www.cnblogs.com/mengdd/p/3837592.html

注:本文代码均来自于参考文章,但是根据自己项目中出现的问题,添加了一些自己的看法

1.manifest添加权限

    <!-- 添加快捷方式 --><uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" /><!-- 移除快捷方式 --><uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" /><!-- 查询快捷方式 --><uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />

注:基本网上都说需要添加权限,但是我实测几部手机,没有添加权限,也是可以的,但是为了保险,我还是把权限加上了

2.添加快捷方式

private void addShortcut(String name) {Intent addShortcutIntent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");// 不允许重复创建addShortcutIntent.putExtra("duplicate", false);// 经测试不是根据快捷方式的名字判断重复的      // 名字addShortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, name);// 图标addShortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,Intent.ShortcutIconResource.fromContext(MainActivity.this,R.drawable.ic_launcher));// 设置关联程序Intent launcherIntent = new Intent(Intent.ACTION_MAIN);launcherIntent.setClass(MainActivity.this, MainActivity.class);launcherIntent.addCategory(Intent.CATEGORY_LAUNCHER);addShortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, launcherIntent);// 发送广播sendBroadcast(addShortcutIntent);}

注1: 在添加快捷方式的测试过程中,我发现有手机出现手机重启或待机一段时间以后,快捷方式名称改变了,不是创建时候的名称了,后来发现原因。

在创建过程中要注意以下:

1)需要快捷方式的activity等在manifest文件中需要添加android:label项

否则手机重启后快捷方式名称将变为应用名称

2)在创建快捷方式时,快捷方式名称和activity的android:label项相同

否则手机重启后快捷方式名称将变为activity名称

当然,这个问题并不是所有的机型都会出现,我测试了好几个手机,只有一个手机出现了名称改变的问题。

注2:在添加快捷方式的测试过程中,出现了不能添加的情况,原因如下:

快捷方式名称一定不要和桌面上已有的快捷方式同名,否则有些机型快捷方式添加不上。

3.移除快捷方式

private void removeShortcut(String name) {// remove shortcut的方法在小米系统上不管用,在三星上可以移除Intent intent = new Intent("com.android.launcher.action.UNINSTALL_SHORTCUT");// 名字intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, name);// 设置关联程序Intent launcherIntent = new Intent(MainActivity.this,MainActivity.class).setAction(Intent.ACTION_MAIN);intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, launcherIntent);// 发送广播sendBroadcast(intent);}

注:参考文章说该方法在三星手机上有效,但在小米手机上无效,我在实际测试的时候发现用的几款测试手机中,只有三星手机可以移除快捷方式,其他的均不行。

查看广播注册消息,发现桌面确实接收到了移除快捷方式的广播,但事实上并没有移除。

查看了YunOS桌面源码,发现问题出在广播上:

“com.android.launcher.action.UNINSTALL_SHORTCUT“ 这个是通常移除快捷方式的广播,但是在YunOS中添加了另外一个广播:

“com.aliyun.homeshell.action.UNINSTALL_SHORTCUT”,并且在源码中仅处理了这个广播的消息,这就是为什么用上一个广播无法移除快捷方式的原因。

值得注意的是,"com.android.launcher.action.INSTALL_SHORTCUT"是通常创建快捷方式的广播,然而YunOS中也添加了一个广播:

"com.aliyun.homeshell.action.INSTALL_SHORTCUT",如果使用前一个创建快捷方式失败,不妨尝试下这个广播。

4.小结

本文中快捷方式的创建和移除都是使用的发送广播形式(有不使用广播的形式,暂未研究),功能的实现与否和广播有很大的关系,所以如果出现不能创建或者移除的情况,可能是桌面app对该广播未进行处理,比如魅族、小米自己做的系统,我没这两个桌面源码,但我猜测是这个原因。

以上均为本人实际测试心得,小菜鸟一枚,如有错误,欢迎指正!

Android应用程序添加、删除快捷方式相关推荐

  1. 为Python程序添加桌面快捷方式

    写了许多Python的程序,每次运行都要翻到程序所在的文件夹下打开命令行窗口,再输入python ***.py来运行程序,着实不方便. 查了一下网上的资料,可以在桌面添加一个快捷方式,目标一栏填写py ...

  2. android 删除插件,Android手机如何添加删除桌面图标和插件

    基于Android系统的手机还是很人性化的,安装容易删除和卸载也不难,朴素的风格下对新手来说刚开始操作还是会有些不适应的.除可在应用市场上删除应用外,还可利用手机本身来删除图标,下面一起来看看操作方法 ...

  3. android 彩信附件添加删除

    添加附件. 在ComposeMessageActivity里 addAttachment(int type) 函数 根据type的不同,分成6个case case A:  MediaSelectLis ...

  4. 为Android应用程序添加社会化分享功能

    正在做个android的小应用,有点想尝试一下社会化分享,比如分享到新浪微博啥的.看一下新浪,人人网的API,说实话功能很全很强大,但虽说有相对的SDK,但是总觉得不方便.因为正在使用友盟的统计SDK ...

  5. Android应用程序创建桌面快捷方式

    2019独角兽企业重金招聘Python工程师标准>>> public static final String READ_SETTINGS_PERMISSION = "com ...

  6. 微信小程序添加删除线

    微信小程序中没有<s></s>标签,使用s标签后,被包裹的值会消失,应在css样式中添加text-decoration属性来设置 如下: text-decoration:und ...

  7. 如何将android例子程序添加到Eclipse进行调试运行

    website:http://blog.csdn.net/whwzm88/article/details/6342583 1.打开Eclipse,选择File->new->Android ...

  8. Android中程序向桌面和Launcher添加快捷方式

    最近感觉这个添加快捷方式挺有趣的,就查资料自己写了个demo---简单的例子,这个例子就是有两个按钮,点击"将此程序添加到快捷方式",则手机桌面增加一个快捷方式,同时launche ...

  9. Android 创建,验证和删除桌面快捷方式 (删除快捷方式测试可用)

    测试环境为Adnroid 2.1以上. 第一步:AndroidManifest.xml 权限配置: 添加快捷方式权限: <uses-permission android:name="c ...

  10. android 4.2 桌面快捷方式,Android 添加桌面快捷方式操做

    /** android * 为程序建立桌面快捷方式 app */ ide private void addShortcut(){ this Intent shortcut = new Intent(& ...

最新文章

  1. 如何制作风格迁移图?
  2. MFC菜鸟学编程——第一篇
  3. JAVA EXCEL API详解
  4. MyBatis入门基础(一)
  5. 设置linux环境变量
  6. Linux 命令(27)—— echo 命令
  7. typescript面试题_vue 248+个知识点(面试题)为你保驾护航
  8. 统计学贾俊平第六版pdf下载|贾俊平统计学第六版pdf下载电子书
  9. Python基础 4 字符串的变形 判断
  10. T3.2是什么级别?
  11. 【NYNU 1151】轻羽飞扬 数塔DP
  12. JavaWeb - 小米商城网 - 项目启动
  13. 利用Dockerfile制作自己的Docker镜像
  14. 主动学习(Active Learning)概述及最新研究
  15. 【转】常见蓝屏错误信息
  16. 奥林匹克徽标设计大全(1924-2012)
  17. [Mitchell 机器学习读书笔记]——人工神经网络
  18. 基于机器学习的车牌识别系统
  19. php处理微信消息,微信开发之处理微信客户端发来的消息
  20. 三年级优秀书籍推荐_三年级推荐书单

热门文章

  1. displayport1.4
  2. C语言二维数组传参问题
  3. 【新知实验室】TRTC这么简单的demo快来试试吧
  4. 学C语言的大佬们帮帮小弟吧小弟感激不尽
  5. CDN月95计费方式
  6. 工作3年以上的程序员现在都在做什么工作?
  7. 德保罗大学计算机专业,2020年德保罗大学排名TFE Times美国最佳计算机科学硕士专业排名第75...
  8. (ICCV-2015)使用 3D 卷积网络学习时空特征
  9. 点赋科技:如何提高淘宝店铺的流量?
  10. CPU飙升到100%问题排查