我知道如何在我的应用程序中使用意图(intent)和startActivity()来打开另一个活动,但是如何启动不同的应用程序呢?具体而言:
- 如何确定用户是否在其设备上安装了所需的应用程序?
- 如何启动该应用程序?
- 如何向该应用程序传递参数?
- 如何找到特定应用程序(比如 Adobe Reader 或 Google Maps)的所有这些信息?
我知道如何在我的应用程序中使用意图(intent)和startActivity()来打开另一个活动,但是如何启动不同的应用程序呢?具体而言:
如何判断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();
}
或者
查询包管理器,以查看它是否为预编译:
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);
}
如何向一个应用程序传递参数或了解其功能:
http://developer.android.com/guide/topics/intents/intents-filters.html
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();
}