以下のようにして調べるだけでなく、インストールされていない場合はマーケットを起動させる。
public class Main extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); PackageManager pm = getPackageManager(); try { pm.getApplicationInfo("info.justoneplanet.android.kaomoji", 0); Intent intent = new Intent("info.justoneplanet.android.kaomoji"); startActivityForResult(intent, 1); } catch (NameNotFoundException e) { confirmMarket(); } return true; } /** * confirmMarket * ダイアログを出してマーケットからアプリをダウンロードさせる */ private void confirmMarket() { AlertDialog.Builder alertDialoBuilder = new AlertDialog.Builder(this); alertDialoBuilder.setTitle(R.string.client_not_installed); alertDialoBuilder.setMessage(R.string.confirm_goto_market); alertDialoBuilder.setPositiveButton( R.string.yes, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Uri uri = Uri.parse("market://search?q=pname:info.justoneplanet.android.kaomoji"); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent); } } ); alertDialoBuilder.setNegativeButton(R.string.no, null); AlertDialog alertDialog = alertDialoBuilder.create(); alertDialog.show(); } }
外部アプリを起動するだけで良い場合は以下のようにする。
try { Intent intent = new Intent(Intent.ACTION_MAIN); intent.setClassName(Constants.MESSENGERE_PACKAGE_NAME, Constants.MESSENGERE_ACTIVITY_NAME); startActivity(intent); } catch (ActivityNotFoundException e) { Uri uri = Uri.parse("market://search?q=pname:" + Constants.MESSENGERE_PACKAGE_NAME); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent); }