アプリが端末へインストールされているか確認する
参考サイト
・判定関数
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ストアへ移動するように通知させました
※遷移先のアプリがストアに存在している事
