Android应用程序添加、删除快捷方式

news/2024/11/25 18:44:56/


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

参考文章: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对该广播未进行处理,比如魅族、小米自己做的系统,我没这两个桌面源码,但我猜测是这个原因。

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


http://www.ppmy.cn/news/586719.html

相关文章

Android建快捷方式app,创建快捷方式最新版下载-创建快捷方式appv1.17 安卓版-腾牛安卓网...

创建快捷方式app是专为安卓手机用户制作的快捷方式创建工具,软件可以帮助用户轻松一键创建快捷方式,更便捷智慧使用手机,需要的朋友可以前来下载使用。 创建快捷方式app使用说明: 先选择一个应用,再选择应用里的活动,创建快捷方式。 每个界面中: 单击标题栏:回到顶部。…

Android应用快捷方式

有的App会给用户提供快捷方式&#xff0c;8.0之前我们多是通过发送com.android.launcher.action.INSTALL_SHORTCUT 广播的方式来实现。但在8.0的系统行为变更中指出&#xff0c;该广播变为私有的隐式广播&#xff0c;因此原来创建快捷方式的方法在8.0的系统上将不再有效&#x…

轻松彻底对付桌面无法删除的恶意IE快捷方式

轻松彻底对付桌面无法删除的恶意IE快捷方式 近日&#xff0c;同事、朋友不断问到同一个问题&#xff0c;桌面上突然出现了一个无法删除的与InternetExplorer“一模一样”的图标&#xff0c;也亲自处理了几台&#xff0c;症状表现为选中后按DEL无效&#xff0c;右键菜单中选删…

【转】[win7] 桌面IE快捷方式无法删除 解决办法

[win7] 桌面IE快捷方式无法删除 解决办法 WIN7:桌面多处很多IE的快捷方式或者就是IE图标&#xff0c;右键属性执行IE后面跟WW.XXXX.COM流氓网址&#xff0c;或者右键属性里面只有创建快捷方式等。无论用360安全卫士亦或其他软件都无法彻底删除&#xff0c;重启后又会出现。 问题…

实验篇(7.2) 18. 星型安全隧道 - 分支互访(IPsec) ❀ 远程访问

【简介】Hub-and-Spoke&#xff1a;各分支机构利用VPN设备与总部VPN设备建立VPN通道后&#xff0c;除了可以和总部进行通讯&#xff0c;还可以利用总部VPN设备互相进行数据交换&#xff0c;而各VPN分支机构不需要进行VPN的隧道连接。 实验要求与环境 OldMei集团深圳总部部署了域…

【测试学习】Junit5的简单使用

目录 &#x1f31f;需要知道&#xff1a; &#x1f31f;Junit学习 &#x1f308;1、常用的注解 &#x1f308;2、测试用例的执行顺序 &#x1f308;3、参数化 &#x1f308;4、断言 &#x1f308;5、测试套件 &#x1f31f;需要知道&#xff1a; 问题1&#xff1a;Selen…

小米的故事:创新如何将一家公司从死亡漩涡中拯救出来

小米通过在爆品体系打造、贴地的新媒体策略及小米之家新零售模式上的努力&#xff0c;成功地克服了低潮&#xff0c;在经历了两年的震荡后&#xff0c;在软件、硬件和新零售的增长飞轮上实现了新的外延&#xff0c;并在2015年至2021年期间持续增长。小米的多元化爆品和创新的零…

faker和劫的图片_这张图影响了LOL玩家多年,劫的新皮肤首次摘下面具

原标题&#xff1a;这张图影响了LOL玩家多年&#xff0c;劫的新皮肤首次摘下面具 最近&#xff0c;LOL官方发布了一款劫的全新皮肤"弑神者"&#xff0c;这款皮肤是奥德赛系列的另一款皮肤&#xff0c;作为一款传说级别的皮肤&#xff0c;"弑神者 劫"拥有非…