[Android] アプリのインストールチェック

アプリが端末へインストールされているか確認する

参考サイト
判定関数

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ストアへ移動するように通知させました
※遷移先のアプリがストアに存在している事

This entry was posted in Android, Java, プログラミング関連, 備忘録 and tagged . Bookmark the permalink.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です