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

时间:2010-05-27 17:14:07

标签: android api android-activity

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

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

3 个答案:

答案 0 :(得分: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();
    }
    

  2. Query the Package Manager看看是否提前:

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

    1. List of Available Intents for Google Applications
    2. List of Intents by 3rd parties @ OpenIntents

答案 1 :(得分:1)

您要找的是意图意图过滤器

您想了解的所有内容都在Android开发人员指南中详细说明。

http://developer.android.com/guide/topics/intents/intents-filters.html

答案 2 :(得分:0)

这对我有用:

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();
}