首页 > 移动平台 > 详细

Android调用第三方App

时间:2014-12-24 11:43:25      阅读:311      评论:0      收藏:0      [点我收藏+]
  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.  */  
  9. private void openApp(){  
  10.     //应用过滤条件  
  11.     Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);  
  12.     mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);  
  13.     mPackageManager = mContext.getPackageManager();  
  14.     mAllApps = mPackageManager.queryIntentActivities(mainIntent, 0);  
  15.     //按报名排序  
  16.     Collections.sort(mAllApps, new ResolveInfo.DisplayNameComparator(mPackageManager));  
  17.   
  18.     for(ResolveInfo res : mAllApps){  
  19.         //该应用的包名和主Activity  
  20.         String pkg = res.activityInfo.packageName;  
  21.         String cls = res.activityInfo.name;  
  22.   
  23.         // 打开QQ  
  24.         if(pkg.contains("qq")){  
  25.             ComponentName componet = new ComponentName(pkg, cls);  
  26.             Intent intent = new Intent();  
  27.             intent.setComponent(componet);  
  28.             intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
  29.             mContext.startActivity(intent);  
  30.         }  
  31.     }  
  32. }  

  33. 很多人使用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 plaincopy
    1. intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);    

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


Android调用第三方App

原文:http://blog.csdn.net/devilnov/article/details/42121859

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!