如何在Android中的Activity启动第三方应用程序?
如何在点击某个按键后,执行启动第三方应用程序界面?
/** * <功能描述> 启动应用程序 * * @return void [返回类型说明] */ private void startUpApplication(String pkg) { PackageManager packageManager = mContext.getPackageManager(); PackageInfo packageInfo = null; try { // 获取指定包名的应用程序的PackageInfo实例 packageInfo = packageManager.getPackageInfo(pkg, 0); } catch (NameNotFoundException e) { // 未找到指定包名的应用程序 e.printStackTrace(); // 提示没有GPS Test Plus应用 Toast.makeText(mSptActivity, mSptActivity.getString(R.string.gps_no_test_plus), Toast.LENGTH_SHORT).show(); return; } if (packageInfo != null) { // 已安装应用 Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null); resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER); resolveIntent.setPackage(packageInfo.packageName); List<ResolveInfo> apps = packageManager.queryIntentActivities( resolveIntent, 0); ResolveInfo ri = null; try { ri = apps.iterator().next(); } catch (Exception e) { e.printStackTrace(); return; } if (ri != null) { // 获取应用程序对应的启动Activity类名 String className = ri.activityInfo.name; // 启动应用程序对应的Activity Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_LAUNCHER); ComponentName componentName = new ComponentName(pkg, className); intent.setComponent(componentName); mContext.startActivity(intent); } } }
想要打开指定包名的应用时,提供包名即可:
// Gps Test Plus应用程序包名 startUpApplication("com.chartcross.gpstestplus");
上述的字符串:com.chartcross.gpstestplus即是Google提供的GPS Test Plus应用的包名。
疑问:
1. 现实情况是:可能在第一次刷机后,无法启动应用。如何解决此问题?
2. 留给未来…