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

android:如何从我的应用程序中打开另一个应用程序?,android,api,android-activity,Android,Api,Android Activity,我知道在我自己的应用程序中打开另一个活动时如何使用intents和startActivity(),但如何启动不同的应用程序?具体而言: 如何确定用户的设备上是否安装了所需的应用程序 你如何启动这个应用程序 如何将参数传递给该应用程序 您如何找到特定应用程序(如Adobe reader或google maps)的所有这些信息 您正在寻找的是意图和意图过滤器 你想知道的一切都在Android开发者指南中有详细说明 如何查看意图是否可用: 尝试调用Intent并处理ActivityNotFoundE

我知道在我自己的应用程序中打开另一个活动时如何使用intents和startActivity(),但如何启动不同的应用程序?具体而言:

  • 如何确定用户的设备上是否安装了所需的应用程序
  • 你如何启动这个应用程序
  • 如何将参数传递给该应用程序
  • 您如何找到特定应用程序(如Adobe reader或google maps)的所有这些信息

您正在寻找的是意图意图过滤器

你想知道的一切都在Android开发者指南中有详细说明


如何查看意图是否可用:

  • 尝试调用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();
    }
    

  • 要查看是否提前完成,请执行以下操作:

    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);
    }
    
  • 如何向应用程序传递参数或了解其功能:

  • 这对我很有用:

    Intent launchIntent = getPackageManager().getLaunchIntentForPackage("com.example.testing_app");
    if (launchIntent != null) {
        startActivity(launchIntent);
    } else {
        Toast.makeText(MainActivity.this, "testing_app is not installed", Toast.LENGTH_LONG).show();
    }