参考资料:

http://blog.csdn.net/yudajun/article/details/8512970

http://chroya.iteye.com/blog/724804

    private List<Map<String, Object>> list = null;private PackageManager mPackageManager;private List<ResolveInfo> mAllApps;private Context mContext;/*** 检查系统应用程序,并打开*/private void openApp(){//应用过滤条件Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);mPackageManager = mContext.getPackageManager();mAllApps = mPackageManager.queryIntentActivities(mainIntent, 0);//按报名排序Collections.sort(mAllApps, new ResolveInfo.DisplayNameComparator(mPackageManager));for(ResolveInfo res : mAllApps){//该应用的包名和主ActivityString pkg = res.activityInfo.packageName;String cls = res.activityInfo.name;// 打开QQif(pkg.contains("qq")){ComponentName componet = new ComponentName(pkg, cls);Intent intent = new Intent();intent.setComponent(componet);intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);mContext.startActivity(intent);}}}

很多人使用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。

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  

这样就可以再新的task里面启动这个Activity了。

Android调用第三方App相关推荐

  1. Android 调用第三方 APP

    本文导读 如果想要在 App 1 中调用 App 2 的 Activity1,则操作流程如下: 1)首先被调用的 App 2 中要声明 Activity1 是可以被启动的 或者 Activity 是对 ...

  2. Android调用第三方App Activity

    在App A中调用App B的Activity1.需要做两方面的配置. (1)App B要表明,Activity1是对外可见的,或是可以被启动的Activity. 可在AndroidManifest. ...

  3. android qq第三方登录,Android调用第三方QQ登录代码分享

    本文为大家分享了调用QQ登录的相关代码,希望对大家有帮助,减少项目开发的时间,具体内容如下 1.去QQ开放平台注册帐号(http://open.qq.com/),为应用申请QQ的APP_ID , 并下 ...

  4. Android预装第三方app

    Android预装第三方app Android.mk device-common.mk Android.mk 解压apk中的lib并对*.so库文件进行整体打包,PRESIGNED使用apk预签名 L ...

  5. uni-app 唤醒调用第三方app并传参(一 显示调用)

    1.离线打包设置 包名:  com.xxx.xxxAPP(其实只需要包名就行) 执行activity:io.dcloud.PandoraEntry 2.调用方代码 //判断app是否存在 if(plu ...

  6. android 安装第三方app,Android识别预装的第三方App方法实例

    前言 新买一台手机,里面会有很多App,有的属于系统App,不可卸载,有的属于第三方App,厂商会预装一些常用的或者给了他们广告费的App,这些是可以卸载的. 如果要详细划分,系统App还可根据其路径 ...

  7. androidAPP调用第三方APP(java.lang.SecurityException: Permission Denial: starting Intent { flg=0x16c70 cm)

    在写APP调用时出现的的一个问题,简单记录 1.当前调用的app中代码为: Intent paramAdapterView = new Intent();paramAdapterView.setCom ...

  8. Android 调用相机APP获取拍照图片和从相册选择图片

    源码部分分析 Camera.java → 点我定位,注意研究1134行与2023行的两个方法. 通过源码可以发现,输出的图片有2个分支 如果你没有指定Intent里面的Extra参数,它就返回一个序列 ...

  9. android 调用第三方应用市场,给自身应用评分

     项目需求,设置里面有一个给APP好评,实际上就是调用第三方的应用市场,给自身应用评分. 效果图 实现起来非常简单. <span style="font-size:14px;" ...

最新文章

  1. 集成、知识蒸馏和自蒸馏有区别?
  2. Selenium之运行效果展示
  3. android 让应用恢复前台显示_android – 当应用程序返回前台时出现问题
  4. JS实现各种复制到剪贴板
  5. .NET HttpGet 获取服务器文件下的图片信息 同步和异步方式处理
  6. 安装linux18双系统,Win10 安装Linux ubuntu-18.04双系统(安装指南)
  7. stm32cubemx中文_用 STM32 通用定时器做微秒延时函数(STM32CubeMX版本)
  8. Oracle WorkFlow(工作流)(一)
  9. 后台服务器端技术点(前沿了解)
  10. 某外企招聘程序员部分面试题,求作答!!!
  11. loadrun Java 添加参数_loadrunner手动关联参数化问题总结
  12. python3.7安装, 解决pip is configured with locations that require TLS/SSL问题
  13. org.apache.commons.lang.StringUtils中常用的方法
  14. Python入门--字典生成式,生成字典的公式
  15. python3编码(encode,decode)
  16. html中的邮件标签
  17. VMWare SCSI硬盘识别
  18. gromacs ngmx_GROMACS使用教程要点
  19. Qt--ipad滑屏效果
  20. A NOVEL DEEP FEATURE FUSION NETWORK FOR REMOTE SENSING SCENE CLASSIFICATION(论文翻译)

热门文章

  1. 二进制加法 | 循序递进---@二十一画
  2. RacingGame学习记录1——辅助类
  3. IDEA编译项目提示程序包不存在、符号错误,最终幻想
  4. ad如何绘制拼版_Altium Designer PCB拼板流程权威指导
  5. 励志 - 体重18公斤北航新生到校报到
  6. 【婚礼司仪】婚礼主持稿
  7. iOS教程之BUG终结者-欧阳坚-专题视频课程
  8. 计算机二级access查询条件,注意!注意!全国计算机二级Access上机考点解析
  9. “网红”故宫背后的消费升级
  10. iOS第三方键盘高度获取方法