【发布时间】:2011-02-24 18:44:19
【问题描述】:
我了解在我自己的应用中打开另一个 Activity 时如何使用 Intent 和 startActivity(),但是如何启动另一个应用?具体来说:
- 您如何确定用户的设备上是否安装了所需的应用程序?
- 如何启动该应用程序?
- 如何将参数传递给该应用程序?
- 如何找到特定应用程序(例如 Adobe 阅读器或谷歌地图)的所有这些信息?
【问题讨论】:
标签: android api android-activity
我了解在我自己的应用中打开另一个 Activity 时如何使用 Intent 和 startActivity(),但是如何启动另一个应用?具体来说:
【问题讨论】:
标签: android api android-activity
这对我有用:
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();
}
【讨论】:
如何查看 Intent 是否可用:
如果不可用,请尝试调用 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();
}
或
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);
}
如何将参数传递给应用程序或了解其功能:
【讨论】:
您正在寻找的是 intents 和 intent 过滤器。
Android 开发者指南中详细介绍了您想了解的一切。
http://developer.android.com/guide/topics/intents/intents-filters.html
【讨论】: