解析Android快捷方式以及启动两个应用
2014-11-03 13:38
253 查看
1、背景描述
最近有一次在研究市面上应用的时候,发现一个很奇怪的现象,就是我的测试机莫名其妙的多出了几个应用。开始的时候,我以为是我的手机被恶意程序,静默安装了一些乱七八糟的应用。然而当我点击下去的时候,开启的却是同一个应用,这是怎么回事呢?后来我仔细看看,发现这些图标并没有相对应的应用程序,这里存放的只是一个空壳子而已!!!
这里仅仅只是放了几个快捷方式的图标在桌面上,快捷方式与windows系统中的快捷方式是一个道理,在Android系统中如何创建应用程序的图标,在我的一篇博文中有过介绍,大家可以去读读看,这里不再赘述。Android如何隐藏桌面图标
2、创建图标的原理
2.1 删除图标
为了弄清楚桌面图标的原理,我在试验的时候,曾经做过这样一个测试,因为如下的两句代码,是显示用户图标的:<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
大家可以看我之前的博文,里面有描述。那么我想,这两句话删掉之后,应用应该不会出现在桌面上了吧?
事实的结果呢?我将这两句话删掉之后,程序报错了,提示说找不到入口函数。。。。这里我们不能直接删掉这两句代码,而只能删除其中的一句,就是下面的Launcher这个标识的这句代码,如果xml文件中,没有这句代码,应用可以被创建,但是没有图标,不会显示在用户列表中。
2.2 创建多个图标
关于隐藏图标和显示图标,不是本文所讨论的重点,如果有不清楚的同学,可以看之前的博文,这里只说一下如何创建多个图标。在上面的介绍中,我们已经简单了解到了,launcher是创建图标的关键,那么当我们想使用多个图标的时候,是不是在activity的xml描述中,添加launcher就可以了呢?事实情况是,确实是可行的。如果在多个activity中添加了launcher,那么也会同时创建多个launcher图标。但是你点击的时候,不一定就能够进入应用程序,因为你没有指定该launcher相对应的目标函数。
根据上面的描述,我们可以在activity的xml描述中,同时添加main和launcher,那么应用就可以启动了。
2.3 快捷方式
快捷方式的创建于程序在列表中显示,是两个不同的概念,前者表示的是类似windows中的快捷图标,而后者是Android系统中显示的应用列表,这个要区分开。在2.2中我们介绍的是创建图标而不是快捷方式,如果是快捷方式,代码应该如下:private static final String ACTION_INSTALL_SHORTCUT = "com.android.launcher.action.INSTALL_SHORTCUT"; /** * 是否可以有多个快捷方式的副本 */ private static final String EXTRA_SHORTCUT_DUPLICATE = "duplicate"; Intent shortcutIntent = new Intent(ACTION_INSTALL_SHORTCUT); shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME,getString(R.string.app_name)); // 是否可以有多个快捷方式的副本,参数如果是true就可以生成多个快捷方式,如果是false就不会重复添加 shortcutIntent.putExtra(EXTRA_SHORTCUT_DUPLICATE, false);
如果快捷方式对应的程序图标,可能还要加入如下代码:
ComponentName comp = new ComponentName(this.getPackageName(), this.getPackageName() + "." +this.getLocalClassName()); Intent intent = new Intent(Intent.ACTION_MAIN).setComponent(comp); intent.addCategory(Intent.CATEGORY_LAUNCHER); shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, intent);记得添加安装快捷方式的权限:
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
3、总结
快捷方式的创建,还有其他的方式。关于程序的多个launcher启动,可以参考一篇博文:http://www.icodelogic.com/?p=383
相关文章推荐
- 解析android创建快捷方式会启动两个应用的问题
- 关于android创建快捷方式会启动两个应用的问题(二)
- 关于android创建快捷方式会启动两个应用的问题
- android 添加快捷方式 启动两个应用
- 关于android创建快捷方式会启动两个应用的问题
- 解析Android应用启动后自动创建桌面快捷方式的实现方法
- 关于android创建快捷方式会启动两个应用的问题(一)
- 关于android创建快捷方式会启动两个应用的问题(一)
- android:在一个应用中创建其它应用的快捷启动方式Launcher
- Android应用启动后自动创建桌面快捷方式
- Android应用启动后自动创建桌面快捷方式
- Android应用启动后自动创建桌面快捷方式
- Android应用启动后自动创建桌面快捷方式
- Android 为某个App 添加/移除 启动快捷方式、书签快捷方式、应用市场快捷方式
- android 隐藏应用图标,用快捷方式做启动入口,实现伪动态改变图标
- Android应用启动后自动创建桌面快捷方式
- Android应用启动后自动创建桌面快捷方式
- android 一个应用两个入口一个应用两个快捷方式(不同图标显示)
- Android笔记:Android应用启动后自动创建桌面快捷方式
- Android开发:应用启动后自动创建桌面快捷方式(三星机常见)