您的位置:首页 > 移动开发 > Android开发

解析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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: