启动App的Intent


类似桌面图标打开App的Intent

程序中需要一种通知,点击后的效果需要像点击桌面图标那样:

  • 程序在前台就什么也不干。
  • 程序在后台,就切换到前台。
  • 程序未启动,就启动程序。

点击通知后,通知本身跳转到Receiver,然后onReceive方法里面处理通知的跳转intent,startActivity使用onReceive的context或者Application都行。 创建打开app的intent,自己尝试了一些写法有点bug——多次打开app——偶然性,而且不稳定? 最终从 launcher的源码中找到了系统桌面图标的点击打开app使用的Intent:

ComponentName className = new ComponentName(packageName, activityName);
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setComponent(className);
int launchFlags = Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED;
intent.setFlags(launchFlags);

注意: 上面最关键的是launchFlags,可以避免多次启动程序:也就是程序已经启动了,在后台,然后点击通知后又闪出启动页面。

优质内容筛选与推荐>>
1、void与其他类型的转化
2、MovieReview—Kingsman THE SECRET SERVICE(王牌特工之特工学院)
3、upload_OSS.sh
4、C# 截取带路径的文件名字,扩展名,等等 的几种方法
5、webpack务虚扫盲


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号