アプリが端末へインストールされているか確認する
参考サイト
・判定関数
static final String PACKAGE_NAME = "<パッケージ名>"; static final String TARGET_APP = "<クラス名を含めたパッケージ名>"; boolean existsVisualTextClipper() { boolean result = false; List<ResolveInfo> installedAppList = new ArrayList<ResolveInfo>(); // メインアプリケーションインテント Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); // パッケージマネージャからインストール済みメインアプリリストを取得 installedAppList = getPackageManager().queryIntentActivities(mainIntent, 0); for (ResolveInfo info : installedAppList) { ActivityInfo activityInfo = info.activityInfo; if (activityInfo.packageName.equals(PACKAGE_NAME)) { result = true; break; } } return result; }
私が必要な箇所だけ抜き取っただけです、すいません(´・ω・)
・作成した関数を使ってインストール済みか判断する
flg_app_check = existsVisualTextClipper(PACKAGE_NAME); if(flg_app_check){ Intent i_app= new Intent(Intent.ACTION_MAIN); i_app.setClassName(PACKAGE_NAME, TARGET_APP); i_app.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK); startActivity(i_app); } else{ new AlertDialog.Builder(<クラス名>.this) .setTitle("アプリがありません") .setMessage("GooglePlayストアへ移動します\nよろしいですか?") .setPositiveButton("ストアへ移動", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { Uri uri = Uri.parse("market://details?id=<アプリのパッケージ名>"); Intent marketIntent = new Intent(Intent.ACTION_VIEW, uri); startActivity(marketIntent); } }) .setNegativeButton("アプリへ戻る", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { dialog.cancel(); } }) .show(); }
今回はダイアログで通知しました
通知方法は各々で設定しちゃってください
アプリがある場合は何事も無く遷移しますが
アプリが存在しない場合GooglePlayストアへ移動するように通知させました
※遷移先のアプリがストアに存在している事