1. private List<Map<String, Object>> list = null;
  2. private PackageManager mPackageManager;
  3. private List<ResolveInfo> mAllApps;
  4. private Context mContext;
  5. /**
  6. * 检查系统应用程序。并打开
  7. */
  8. private void openApp(){
  9. //应用过滤条件
  10. Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
  11. mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
  12. mPackageManager = mContext.getPackageManager();
  13. mAllApps = mPackageManager.queryIntentActivities(mainIntent, 0);
  14. //按报名排序
  15. Collections.sort(mAllApps, new ResolveInfo.DisplayNameComparator(mPackageManager));
  16. for(ResolveInfo res : mAllApps){
  17. //该应用的包名和主Activity
  18. String pkg = res.activityInfo.packageName;
  19. String cls = res.activityInfo.name;
  20. // 打开QQ
  21. if(pkg.contains("qq")){
  22. ComponentName componet = new ComponentName(pkg, cls);
  23. Intent intent = new Intent();
  24. intent.setComponent(componet);
  25. intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  26. mContext.startActivity(intent);
  27. }
  28. }
  29. }
  30. 非常多人使用startActivity时候,会碰到例如以下的异常:

    Caused by: android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?

    我以前也遇到过。只是后来研究了一下之后。明确了原理,记下来,以为碰到相同困扰的兄弟们解惑。

    都知道。Context中有一个startActivity方法,Activity继承自Context,重载了startActivity方法。假设使用Activity的startActivity方法,不会有不论什么限制,而假设使用Context的startActivity方法的话。就须要开启一个新的task。遇到上面那个异常的,都是由于使用了Context的startActivity方法。

    解决的方法是,加一个flag。

    [java] view
    plain
    copy

    1. intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

    这样就能够再新的task里面启动这个Activity了。

最新文章

  1. 2000条你应知的WPF小姿势 基础篇&lt;74-77 WPF 多窗口Tips&gt;
  2. C 语言学习:班级同学的博客地址列表
  3. Nodejs的第一个页面
  4. 夺命雷公狗---2016-linux---3之目录一般作用
  5. linux 时钟源初步分析linux kernel 时钟框架详细介绍
  6. poj - 3723 Conscription(最大权森林)
  7. 语法:MySQL中INSERT INTO SELECT的使用(转)
  8. algorithms中计算时间的渐近表示
  9. Java NIO内存映射---上G大文件处理(转)
  10. git clone出现SSL错误
  11. [BZOJ1385] [Baltic2000] Division expression (数学)
  12. 【Qt编程】Qt学习笔记&lt;二&gt;
  13. 转摘: MySQL详解--锁
  14. dubbo服务暴露
  15. VMware Workstation Pro网络配置(WiFi配置等)
  16. 朝花夕拾 - 应用了6年久经实际项目考验未变的代码 - singleton模式
  17. Android 滑动定位+吸附悬停效果实现
  18. Python框架学习之用Flask创建一个简单项目
  19. CentOS7 设置软件镜像源
  20. 学习笔记6—pandas中ix,loc,iloc有什么区别?

热门文章

  1. hdoj-- Walking Ant
  2. B1260 [CQOI2007]涂色paint 区间dp
  3. web 端即时通讯
  4. Python金融量化
  5. /etc/rsyslog.conf配置文件说明
  6. wcf 学习程序
  7. Web-数据库-mysql篇
  8. Py基础+中级
  9. 参数转对象 类似 ?camera=1&amp;travel=0&amp;faceScore=1
  10. VS2012 +PTVS配置