从意图开放第三方应用程序

时间:2012-03-08 17:24:58

标签: android android-intent

我正在开发一个应用程序,我打算打开其他应用程序。唯一的问题是我不知道如何引用第三方应用程序。我计划使用一个意图。你能引用它只使用packagename,还是需要Main Activity意图。有没有找到正确意图的简单方法,然后参考它。

1 个答案:

答案 0 :(得分:2)

  

我正在开发一个应用程序,我打算打开其他应用程序。

我认为这意味着您正在创建一个启动器,类似于在主屏幕上找到的启动器。

  

你能引用它只使用包名,还是需要主要活动意图。

发射器使用ACTION_MAIN / CATEGORY_LAUNCHER Intent

  

是否有任何简单的方法可以找到正确的意图,然后参考它。

使用PackageManager查找设备上所有可能的ACTION_MAIN / CATEGORY_LAUNCHER活动,然后将其显示给用户以供选择。然后,您可以构建一个合适的Intent来启动他们的特定选择。

实现启动器的

Here is a sample project

要提供可以启动的内容列表,该示例应用使用:

PackageManager pm=getPackageManager();
Intent main=new Intent(Intent.ACTION_MAIN, null);

main.addCategory(Intent.CATEGORY_LAUNCHER);

List<ResolveInfo> launchables=pm.queryIntentActivities(main, 0);

这是实际的启动逻辑,基于用户点击ListActivity中的其中一个“可启动”:

  @Override
  protected void onListItemClick(ListView l, View v,
                                 int position, long id) {
    ResolveInfo launchable=adapter.getItem(position);
    ActivityInfo activity=launchable.activityInfo;
    ComponentName name=new ComponentName(activity.applicationInfo.packageName,
                                         activity.name);
    Intent i=new Intent(Intent.ACTION_MAIN);

    i.addCategory(Intent.CATEGORY_LAUNCHER);
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
                Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
    i.setComponent(name);

    startActivity(i);    
  }