android:我如何从我的应用程序中打开另一个应用程序?

mtm*_*ock 22 api android android-activity

我了解如何在我自己的应用程序中打开另一个活动时使用intents和startActivity(),但是如何启动另一个应用程序?特别:

  • 如何确定用户是否在其设备上安装了所需的应用程序?
  • 你是如何开始这个应用程序的?
  • 如何将参数传递给该应用程序?
  • 如何找到特定应用程序(例如Adobe阅读器或谷歌地图)的所有这些信息?

Tim*_*ger 32

如何查看Intent是否可用:

  1. 尝试调用Intent并处理ActivityNotFoundException它是否不可用

    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setDataAndType(path, "application/pdf");
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    
    try {
        startActivity(intent);
    } 
    catch (ActivityNotFoundException e) {
        Toast.makeText(OpenPdf.this, 
            "No Application Available to View PDF", 
            Toast.LENGTH_SHORT).show();
    }
    
    Run Code Online (Sandbox Code Playgroud)

    要么

  2. 查询程序包管理器以查看它是否提前:

    PackageManager packageManager = getPackageManager();
    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setType("application/pdf");
    
    List list = packageManager.queryIntentActivities(intent,
        PackageManager.MATCH_DEFAULT_ONLY);
    
    if (list.size() > 0) {
        intent.setDataAndType(path, "application/pdf");
        startActivity(intent);
    }
    
    Run Code Online (Sandbox Code Playgroud)

如何将参数传递给应用程序或了解其功能:

  1. Google应用程序的可用意图列表
  2. 第三方@ OpenIntents的意向清单