web-dev-qa-db-ja.com

android:アプリから別のアプリを開くにはどうすればよいですか?

自分のアプリ内で別のアクティビティを開くときにインテントとstartActivity()を使用する方法を理解していますが、別のアプリを開始するにはどうすればよいですか?具体的には:

  • ユーザーが必要なアプリをデバイスにインストールしているかどうかをどのように判断しますか?
  • そのアプリをどのように起動しますか?
  • そのアプリにパラメーターをどのように渡しますか?
  • 特定のアプリ(Adobe ReaderやGoogleマップなど)のこのすべての情報をどのように見つけますか?
22
mtmurdock

インテントが利用可能かどうかを確認する方法:

  1. Intentを呼び出して、利用できない場合はActivityNotFoundExceptionに対処してみてください

    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setDataAndType(path, "application/pdf");
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    
    try {
        startActivity(intent);
    } 
    catch (ActivityNotFoundException e) {
        Toast.makeText(OpenPdf.this, 
            "No Application Available to View PDF", 
            Toast.LENGTH_SHORT).show();
    }
    

    または

  2. パッケージマネージャーに問い合わせる 事前に確認する:

    PackageManager packageManager = getPackageManager();
    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setType("application/pdf");
    
    List list = packageManager.queryIntentActivities(intent,
        PackageManager.MATCH_DEFAULT_ONLY);
    
    if (list.size() > 0) {
        intent.setDataAndType(path, "application/pdf");
        startActivity(intent);
    }
    

パラメータをアプリケーションに渡す方法、またはその機能を知る方法:

  1. Googleアプリケーションで利用可能なインテントのリスト
  2. サードパーティによるインテントのリスト@ OpenIntents
33
Tim Kryger

あなたが探しているのはインテントインテントフィルターです。

知りたいことはすべてAndroid開発者ガイド)に詳しく説明されています。

http://developer.Android.com/guide/topics/intents/intents-filters.html

1
HXCaine