最近需要做一个仿微信公众号发送到桌面快捷方式的功能,一直在找资料,做到一定阶段时顺便记录下,如写的不好的地方请各位大大指点。
微信公众号一直有这么一个功能——>将该公众号添加到桌面,然后点击快捷方式直接进入该公众号,
经过测试发现它点击该快捷方式直接进入该公众号,其他的activtiy都将被销毁掉,比如可以这样测试,首先将公众号发送到桌面,然后再进入另外一个公众号,然后点击主页,再点击桌面上创建的快捷方式进入公众号,你会发现只有打开了默认的这个公众号的页面,(PS:一般正常情况下,是会启动两个应用的,你关闭一个还会出现第二个)。
说到这里肯定有人会猜想是不是activtiy的启动模式有关,没错,我刚开始也是这么想的,所以测试发现,activity的四种启动模式都达不到我要的需求(http://blog.csdn.net/shinay/article/details/7898492),最后找到一个资料http://blog.csdn.net/lincyang/article/details/6893852,看完就猜想应该是快捷方式创建的问题,最后附上创建快捷方式的代码
// 安装的Intent Intent shortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT"); // 快捷名称 shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, tName); // 快捷图标是否允许重复 shortcut.putExtra("duplicate", false); Intent shortcutIntent = new Intent(Intent.ACTION_MAIN); shortcutIntent.putExtra("参数名", "参数值");//可以不传 shortcutIntent.setClassName(getPackageName(), "您应用的入口activtiy的路径"); shortcutIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); // 快捷图标 TODO 图标处理 将网络图片下载并创建快捷方式图标 Intent.ShortcutIconResource iconRes = Intent.ShortcutIconResource.fromContext(this, R.drawable.ic_head); shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconRes); // 发送广播 sendBroadcast(shortcut);最最最重要的就是为图标添加Flag——>shortcutIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
添加这个flag的意思就是:必须要与FLAG_ACTIVITY_NEW_TASK配合使用,这个activity新启动一个栈,原来栈被清空,栈中的activity也被销毁。
所以只会出现一个activtiy且只打开一次应用,最后提一个问题:代码里面都有注释,我想讲网络图片下载并用它来创建快捷方式,不知道怎么处理?请懂得各位指点下,我觉得微信公众号也是这样做的,只是我还不知道怎么处理。。。。。