@blog.justoneplanet.info

日々勉強

androidで外部アプリがインストールされているか調べる

以下のようにして調べるだけでなく、インストールされていない場合はマーケットを起動させる。

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);
}

コメントはまだありません»

No comments yet.

RSS feed for comments on this post.TrackBack URL

Leave a comment