关于android创建快捷方式会启动两个应用的问题

转载 2012年03月25日 13:41:37

接下来讲一种完美的方案。

因为第一个界面是欢迎界面,所以快捷方式启动的界面也是欢迎界面,刚开始就怀疑快捷方式创建的代码有问题,但不知道问题出在哪儿。猜测可能会是快捷方式的错误导致系统创建两个应用,就也是同一个应用会有两个PID,结果在控制台查看打印的LOG,不同方式启动的LOG如下:

09-22 09:39:11.929: INFO/ActivityManager(61): Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.android.xxx/.activity.InitActivity } from pid 19304
09-22 09:39:12.876: INFO/ActivityManager(61): Displayed com.android.xxx/.activity.InitActivity: +763ms


09-22 09:39:47.668: INFO/ActivityManager(61): Starting: Intent { act=android.intent.action.MAIN flg=0x10000000 cmp=com.android.xxx/.activity.InitActivity bnds=[5,392][115,510] } from pid 19304
09-22 09:39:48.737: INFO/ActivityManager(61): Displayed com.android.xxx/.activity.InitActivity: +995ms

最后发现两个PID是一致的(InitActivity是欢迎界面的Activity),可能是意外,把这两个LOG作比较会发现从列表中点击图标启动应用时是上面的LOG,通过快捷方式启动的是下面的LOG,通过比较会发现,以快捷方式启动应用时会比另外一种方式少了cat=[android.intent.category.LAUNCHER] ,于是乎在代码中加上(请参照上一篇的代码,只添加了第三行):

[java] view plaincopy
  1. ComponentName comp = new ComponentName(this.getPackageName(), this.getPackageName() + "." +this.getLocalClassName());     
  2. Intent intent = new Intent(Intent.ACTION_MAIN).setComponent(comp);  
  3. intent.addCategory(Intent.CATEGORY_LAUNCHER);  
  4. shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, intent);  

再跑应用一切OK,不会启动两个应用,退出也只需要一次,太给力了!至于为什么就留给看客你了。

关于android创建快捷方式会启动两个应用的问题(一)

 在做创建应用快捷方式时遇到两个问题: 一、创建快捷方式OK,但测试时MOTO部分机型会报错,原因也在Log里面给提示,如下: [java] view plain cop...
  • sinat_29384657
  • sinat_29384657
  • 2016年09月01日 16:06
  • 905

Android开启应用时自动创建快捷方式

今天在使用360手机助手时,发现它会自动创建一个快捷启动方式,感觉挺有意思的,所以就上网百度了一些方法,试了一下,有一种方法是挺不错的,我借鉴来用用,先保存下来,我也写了一个测试小程序。      ...
  • tfs080640234
  • tfs080640234
  • 2014年12月22日 14:10
  • 1369

NDK 调用 so 时的异常问题解决

这两天开始学习下android ndk的使用,给自己提了两个问题1。 .so文件时怎么生成的? 2。 生成了so文件之后要怎么取调用呢 3。 为什么要用so文件,为什么要用java调用c/c++代码呢...
  • u013708985
  • u013708985
  • 2017年07月17日 20:21
  • 244

黑马程序员-----隐藏应用图标,显示快捷方式,动态定义图标

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
  • Maiuiie
  • Maiuiie
  • 2014年09月10日 11:07
  • 504

android快捷方式创建权限

android快捷方式创建权限(市场大部分launcher) 添加快捷方式 --> uses-permission android:name="com.android.launcher....
  • miao309410364
  • miao309410364
  • 2015年09月07日 09:58
  • 2668

Android 创建快捷方式

Android 创建快捷方式 ONE Goal, ONE Passion ! 1,查看Launcher源码.找到创建快捷方式的BroadcastReceiver.在清单文件中查看配置的recei...
  • fengltxx
  • fengltxx
  • 2016年08月12日 19:46
  • 784

一个APP两个程序主入口,两个图标,互不干扰

在做项目的过程中碰到了一个需求,就是只需要两个Activity,但是两个Activity又互相不需要跳转,通过后台服务发送的广播来启动,这个时候就需要在清单文件中做文章了! ...
  • dadai_
  • dadai_
  • 2015年10月30日 14:19
  • 2663

如何实现跨应用启动Service

跨应用启动Service需要注意的地方有2点: 1.目标service需要声明exported=true 的属性,表示允许其他应用访问该服务. 2.android5.0之前是可以通过设置隐式意图来跨...
  • mChenys
  • mChenys
  • 2015年11月01日 23:03
  • 5388

Android 快捷方式的创建

一、在日常开发中,我们经常会遇到这样的需求就是网桌面添加快捷方式:常见的快捷方式有两种:一是APP的快捷方式,一是widget插件的快捷方式。下面详细介绍这两种情况的应用:    参考网站:http:...
  • lenmoyouzi
  • lenmoyouzi
  • 2013年11月25日 10:34
  • 16718

Android创建应用快捷方式(ShortCut)的有效方式

有时候我们需要为自己的APP,创建桌面快捷方式,本文将介绍有效的方式,避免出现重复创建,或者创建失败的情况。通常应用安装后,第一次打开,去检测当前应用的快捷方式是否创建,如果没有创建,我们就帮生成桌面...
  • dzsw0117
  • dzsw0117
  • 2016年04月18日 09:24
  • 4709
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于android创建快捷方式会启动两个应用的问题
举报原因:
原因补充:

(最多只允许输入30个字)