URI に応じた既定のアプリの起動

[Windows 10 の UWP アプリ向けに更新。 Windows 8.x の記事については、アーカイブをご覧ください ]

重要な API

URI (Uniform Resource Identifier) に応じて既定のアプリを起動する方法について説明します。 URI を使うと、別のアプリを起動して特定の作業を実行できます。 また、Windows に組み込まれている多くの URI スキームの概要についても説明します。 カスタム URI も起動することができます。 カスタム URI スキームを登録する方法と URI のアクティブ化を処理する方法について詳しくは、「URI のアクティブ化の処理」をご覧ください。

URI スキームでは、ハイパーリンクをクリックしてアプリを開くことができます。 mailto: を使って新しいメールの作成を開始できるのと同様に、http: を使って既定の Web ブラウザーを開くことができます。

このトピックでは、Windows に組み込まれている以下の URI スキームについて説明します。

URI スキーム 起動対象
bingmaps:、ms-drive-to:、ms-walk-to: マップ アプリ
http: 既定の Web ブラウザー
mailto: 既定のメール アプリ
ms-call: 通話アプリ
ms-chat: メッセージング アプリ
ms-people: People アプリ
ms-settings: 設定アプリ
ms-store: ストア アプリ
ms-tonepicker: トーンの選択コントロール
ms-yellowpage: 近隣の施設検索アプリ


たとえば、次の URI は既定のブラウザーを開き、Bing の Web サイトを表示します。

http://bing.com

カスタム URI スキームを起動することもできます。 その URI を処理するアプリがインストールされていない場合は、ユーザーにインストールするアプリを推奨することができます。 詳しくは、「URI を処理するアプリがない場合にアプリを推奨」をご覧ください。

一般的に、起動するアプリをアプリが選ぶことはできません。 どのアプリを起動するかはユーザーが決めます。 同じ URI スキームを処理するために、複数のアプリを登録できます。 この例外として、予約済みの URI スキームがあります。 予約済みの URI スキームの登録は無視されます。 予約済みの URI スキームの一覧については、「URI のアクティブ化の処理」をご覧ください。 複数のアプリが同じ URI スキームを登録している可能性がある場合は、アプリで特定のアプリを起動することを推奨できます。 詳しくは、「URI を処理するアプリがない場合にアプリを推奨」をご覧ください。

LaunchUriAsync を呼び出して URI を起動

URI を起動するには、LaunchUriAsync メソッドを使います。 このメソッドを呼び出すとき、アプリはユーザーに表示されるフォアグラウンド アプリである必要があります。 この要件は、ユーザーが制御を維持するのに役立ちます。 この要件を満たすために、すべての URI 起動がアプリの UI に直接結び付けられていることを確認します。 URI 起動を開始するには、常にユーザーがなんらかの操作を行う必要があります。 URI を起動しようとしたときにアプリがフォアグラウンドにない場合、起動は失敗し、エラー コールバックが呼び出されます。

最初に URI を表す System.Uri オブジェクトを作成し、それを LaunchUriAsync メソッドに渡します。 次の例のように、返される結果を使って呼び出しが成功したかどうかを確認します。

private async void launchURI_Click(object sender, RoutedEventArgs e)
{
   // The URI to launch
   var uriBing = new Uri(@"http://www.bing.com");

   // Launch the URI
   var success = await Windows.System.Launcher.LaunchUriAsync(uriBing);

   if (success)
   {
      // URI launched
   }
   else
   {
      // URI launch failed
   }
}

場合によって、ユーザーが実際にアプリを切り替えようとしているかどうかを確認するダイアログがオペレーティング システムにより表示されます。

灰色で表示されたアプリの背景にオーバーレイで表示された警告ダイアログ。 アプリを切り替えるかどうかをたずねるメッセージと、右下隅に [はい] と [いいえ] のボタンが表示されます。 [いいえ] ボタンが強調表示されています。

この確認ダイアログを常に表示する場合は、Windows.System.LauncherOptions.TreatAsUntrusted プロパティを使って、オペレーティング システムが警告を表示することを指定します。

// The URI to launch
var uriBing = new Uri(@"http://www.bing.com");

// Set the option to show a warning
var promptOptions = new Windows.System.LauncherOptions();
promptOptions.TreatAsUntrusted = true;

// Launch the URI
var success = await Windows.System.Launcher.LaunchUriAsync(uriBing, promptOptions);

URI を処理するアプリがない場合にアプリを推奨

場合によっては、起動中の URI を処理するアプリがインストールされていないこともあります。 既定では、オペレーティング システムによってストア上の適切なアプリを検索するリンクが表示されて、これらのケースは対処されます。 このシナリオで入手する必要のあるアプリに関する特定の推奨事項を示す場合は、起動中の URI と共に推奨事項を渡すことができます。

推奨事項は、URI スキームを処理するアプリが複数登録されているときにも役立ちます。 特定のアプリを推奨すると、そのアプリが既にインストールされている場合、Windows はそのアプリを開きます。

アプリを推奨するには、LauncherOptions.preferredApplicationPackageFamilyName を推奨するストア内のアプリのパッケージ ファミリ名に設定して、Windows.System.Launcher.LaunchUriAsync(Uri, LauncherOptions) メソッドを呼び出します。 オペレーティング システムではこの情報を使って、ストア内のアプリを検索する一般的なオプションを、ストアから推奨アプリを入手する固有のオプションに置き換えます。

// Set the recommended app
var options = new Windows.System.LauncherOptions();
options.PreferredApplicationPackageFamilyName = "Contoso.URIApp_8wknc82po1e";
options.PreferredApplicationDisplayName = "Contoso URI Ap";

// Launch the URI and pass in the recommended app
// in case the user has no apps installed to handle the URI
var success = await Windows.System.Launcher.LaunchUriAsync(uriContoso, options);

残りの表示の基本設定

LaunchUriAsync を呼び出すソース アプリは、URI の起動後も画面上に留まることを要求できます。 既定では、利用可能なスペース全体がソース アプリと URI を処理するターゲット アプリとで均等に共有されます。 ソース アプリでは、DesiredRemainingView プロパティを使って、利用可能なスペースをソース アプリのウィンドウがどの程度占めるかをオペレーティング システムに指示できます。 この DesiredRemainingView では、URI の起動後にソース アプリが画面上に留まる必要がなく、ターゲット アプリに完全に置き換わっても良いことも示せます。 このプロパティは呼び出し元アプリの優先ウィンドウのサイズだけを指定します。 画面に同時に表示されている可能性のある他のアプリの動作は指定しません。

ソース アプリの最終的なウィンドウ サイズは、複数の異なる要素が考慮されて決定されます。たとえば、ソース アプリの設定、画面上のアプリの数、画面の向きなどです。 DesiredRemainingView を設定しても、ソース アプリの特定のウィンドウ動作が保証されるわけではありません。

// Set the desired remaining view.
var options = new Windows.System.LauncherOptions();
options.DesiredRemainingView = Windows.UI.ViewManagement.ViewSizePreference.UseLess;

// Launch the URI
var success = await Windows.System.Launcher.LaunchUriAsync(uriContoso, options);

URI スキーム

各種 URI スキームについて以下に説明します。

通話アプリの URI スキーム

アプリで ms-call: URI スキームを使って、通話アプリを起動できます。

URI スキーム 結果
ms-call:settings アプリ設定のページを呼び出します。


メールの URI スキーム

アプリで mailto: URI スキームを使って、既定のメール アプリを起動できます。

URI スキーム 結果
mailto: 既定のメール アプリを起動します。
mailto:[email address] メール アプリを起動し、宛先行で指定されているメール アドレスを使用して新しいメッセージを作成します。 メールは、ユーザーが [送信] をタップするまで送信されません。


HTTP の URI スキーム

アプリで http: URI スキームを使って、既定の Web ブラウザーを起動できます。

URI スキーム 結果
http: 既定の Web ブラウザーを起動します。


マップ アプリの URI スキーム

アプリで bingmaps:ms-drive-to:ms-walk-to: の各 URI スキームを使って、Windows マップ アプリを起動し、特定の地図、ルート案内、検索結果を表示できます。 たとえば、次の URI は、Windows マップ アプリを開き、ニューヨークを中心とした地図を表示します。

bingmaps:?cp=40.726966~-74.006076

Windows マップ アプリの例。

詳しくは、「Windows マップ アプリの起動」をご覧ください。 独自のアプリでマップ コントロールを使うには、「2D、3D、Streetside ビューでの地図の表示」をご覧ください。

メッセージング アプリの URI スキーム

アプリで ms-chat: URI スキームを使って、Windows メッセージング アプリを起動できます。

| URI スキーム |結果 | |-- ---------|--------| | ms-chat: | メッセージング アプリを起動します。 | | ms-chat:?ContactID={contacted} | 特定の連絡先の情報を使ってメッセージング アプリケーションを起動することを許可します。 | | ms-chat:?Body={body} | メッセージの内容として使用する文字列を使ってメッセージング アプリケーションを起動することを許可します。| | ms-chat:?Addresses={address}&Body={body} | 特定のアドレスの情報とメッセージの内容として使用する文字列を使って、メッセージング アプリケーションを起動することを許可します。 注: アドレスは連結することができます。 | | ms-chat:?TransportId={transportId} | 特定のトランスポート ID を使ってメッセージング アプリケーションを起動することを許可します。 |

トーンの選択コントロールの URI スキーム

アプリで ms-tonepicker: URI スキームを使って、トーン、アラーム、システム音を選択できます。 また、新しいトーンを保存したり、トーンの名前を表示したりできます。

URI スキーム 結果
ms-tonepicker: トーン、アラーム、システム音を選択します。

パラメーターは ValueSet を介して LaunchURI API に渡されます。 詳しくは、「ms-tonepicker URI スキームを使ったトーンの選択と保存」をご覧ください。

近隣の施設検索アプリの URI スキーム


アプリで ms-yellowpage: URI スキームを使って、近隣の施設検索アプリを起動できます。

URI スキーム 結果
ms-yellowpage:?input=[keyword]&method=[String または T9] 近隣の施設検索アプリを起動します。 input 検索するキーワードを指定します。 method 検索の種類 (文字列検索か T9 検索) を指定します。
methodT9 (キーボードの種類) である場合、keyword は T9 キーボードの文字にマップされた数字の検索文字列になります。
methodString の場合は、keyword は検索するキーワードになります。


People アプリの URI スキーム

アプリで ms-people: URI スキームを使って、People アプリを起動できます。 詳しくは、「People アプリの起動」をご覧ください。


設定アプリの URI スキーム

アプリで ms-settings: URI スキームを使って、Windows 設定アプリを起動できます。 設定アプリの起動は、個人データにアクセスするアプリの開発の重要な部分です。 アプリが機密性の高いリソースにアクセスできない場合、そのリソースのプライバシー設定への便利なリンクをユーザーに提供することをお勧めします。 たとえば、次の URI は設定アプリを開き、カメラのプライバシー設定を表示します。

ms-settings:privacy-webcam

カメラのプライバシー設定。

詳しくは、「Windows 設定アプリの起動」と「個人データにアクセスするアプリのガイドライン」をご覧ください。


ストア アプリの URI スキーム

アプリで ms-windows-store: URI スキームを使って、Windows ストア アプリを起動できます。 製品の詳細ページ、製品のレビュー ページ、検索ページなどを開きます。たとえば、次の URI は、Windows ストア アプリを開き、ストアのホーム ページを起動します。

ms-windows-store://home/

詳しくは、「Windows ストア アプリの起動」をご覧ください。