如何在點擊某個按鍵后,執行啟動第三方應用程序界面?
/** * <功能描述> 啟動應用程序 * * @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. 留給未來…