マイ連絡先の共有

重要

マイ連絡先は、KB5034203 が適用された Windows 11 および Windows 10 バージョンではサポートされなくなりました。

マイ連絡先機能を使用すると、ユーザーは連絡先をタスクバーにピン留めすることができ、どのアプリケーションで接続していても、Windows のどこからでも簡単に連絡を取り合えるようになりました。 ユーザーは、エクスプローラーからマイ連絡先ピンにファイルをドラッグすることで、ピン留めされた連絡先とコンテンツを共有できるようになりました。 標準の共有チャームを通じて、Windows 連絡先ストア内の任意の連絡先と共有することもできます。 アプリケーションをマイ連絡先の共有ターゲットとして有効にする方法については、この後で説明します。

My people sharing panel

要件

  • Windows 10 と Microsoft Visual Studio 2019。 インストールの詳細については、「Visual Studio のセットアップ」を参照してください。
  • C# またはこれに類似するオブジェクト指向プログラミング言語に関する基本的な知識。 C# で作業を開始するには、「"Hello, world" アプリを作成する」を参照してください。

概要

アプリケーションをマイ連絡先の共有ターゲットとして有効にするには、次の 3 つの手順を実行する必要があります。

  1. アプリケーション マニフェストで shareTarget アクティブ化コントラクトのサポートを宣言します。
  2. アプリを使用してユーザーが共有できる連絡先に注釈を付けます。
  3. アプリケーションの複数のインスタンスの同時実行をサポートします。 ユーザーは、アプリケーションの完全バージョンを他のユーザーと共有しながら、そのアプリケーションを操作できる必要があります。 複数の共有ウィンドウで同時に使用することもできます。 この動作をサポートするために、アプリケーションは複数のビューを同時に実行できる必要があります。 そのための方法については、「アプリの複数のビューの表示」記事を参照してください。

これらの手順が完了すると、アプリケーションがマイ連絡先の共有ウィンドウに共有ターゲットとして表示されます。このウィンドウは次の 2 つの方法で開くことができます。

  1. 連絡先を共有チャームから選択する。
  2. タスクバーにピン留めされた連絡先にファイルをドラッグ アンド ドロップする。

共有コントラクトのサポートを宣言する

アプリケーションのサポートを共有ターゲットとして宣言するには、まず Visual Studio でアプリケーションを開きます。 ソリューション エクスプローラーで、Package.appxmanifest を右クリックし、[ファイルを開くアプリケーションの選択] を選択します。 メニューから [XML (テキスト) エディター] を選択し、[OK] をクリックします。 その後、マニフェストを次のように変更します。

<Applications>
	<Application Id="MyApp"
	  Executable="$targetnametoken$.exe"
	  EntryPoint="My.App">
	</Application>
</Applications>

<Applications>
	<Application Id="MyApp"
	  Executable="$targetnametoken$.exe"
	  EntryPoint="My.App">
		<Extensions>
			<uap:Extension Category="windows.shareTarget">
				<uap:ShareTarget Description="Share with MyApp">
					<uap:SupportedFileTypes>
						<uap:SupportsAnyFileType/>
					</uap:SupportedFileTypes>
					<uap:DataFormat>Text</uap:DataFormat>
					<uap:DataFormat>Bitmap</uap:DataFormat>
					<uap:DataFormat>Html</uap:DataFormat>
					<uap:DataFormat>StorageItems</uap:DataFormat>
					<uap:DataFormat>URI</uap:DataFormat>
				</uap:ShareTarget>
			</uap:Extension>
		 </Extensions>
	</Application>
</Applications>

このコードはすべてのファイルとデータ形式のサポートを追加しますが、サポートするファイルの種類とデータ形式を指定することもできます (詳細については ShareTarget クラスのドキュメントを参照)。

連絡先に注釈を付ける

マイ連絡先の共有ウィンドウに連絡先の共有ターゲットとしてアプリケーションが表示されるようにするには、連絡先を Windows 連絡先ストアに書き込む必要があります。 連絡先を書き込む方法については、「連絡先カードの統合のサンプル」を参照してください。

アプリケーションを連絡先と共有するときにマイ連絡先の共有ターゲットとして表示されるようにするには、注釈をその連絡先に書き込む必要があります。 注釈は、アプリケーションからのデータの一部であり、連絡先に関連付けられます。 注釈では、目的のビューに対応するアクティブ化可能なクラスを ProviderProperties メンバーに含め、Share 操作のサポートを宣言する必要があります。

アプリの実行中はいつでも連絡先に注釈を付けることができますが、一般的には、連絡先が Windows 連絡先ストアに追加されたらすぐに注釈を付けることをお勧めします。

if (ApiInformation.IsApiContractPresent("Windows.Foundation.UniversalApiContract", 5))
{
	// Create a new contact annotation
	ContactAnnotation annotation = new ContactAnnotation();
	annotation.ContactId = myContact.Id;

	// Add appId and Share support to the annotation
	String appId = "MyApp_vqvv5s4y3scbg!App";
	annotation.ProviderProperties.Add("ContactShareAppID", appId);
	annotation.SupportedOperations = ContactAnnotationOperations::Share;

	// Save annotation to contact annotation list
	// Windows.ApplicationModel.Contacts.ContactAnnotationList 
	await contactAnnotationList.TrySaveAnnotationAsync(annotation);
}

「appId」はパッケージ ファミリ名の後に、「!」 とアクティブ化可能なクラス ID を付けたものです。 パッケージ ファミリ名を見つけるには、既定のエディターを使用して Package.appxmanifest を開き、[パッケージ化] タブを確認します。ここで、「App」は、[共有ターゲット] ビューに対応するアクティブ化可能なクラスです。

マイ連絡先の共有ターゲットとして実行する

最後に、アプリを実行するために、アプリのメイン クラスの OnShareTargetActivated メソッドを、共有ターゲットのアクティブ化を処理するようにオーバーライドします。 ShareTargetActivatedEventArgs.ShareOperation.Contacts プロパティは、共有相手の連絡先を格納するか、または標準の共有操作の場合 (マイ連絡先の共有ではない場合) は空になります。

protected override void OnShareTargetActivated(ShareTargetActivatedEventArgs args)
{
	bool isPeopleShare = false;
	if (ApiInformation.IsApiContractPresent("Windows.Foundation.UniversalApiContract", 5))
	{
		// Make sure the current OS version includes the My People feature before
		// accessing the ShareOperation.Contacts property
		isPeopleShare = (args.ShareOperation.Contacts.Count > 0);
	}

	if (isPeopleShare)
	{
  		// Show share UI for MyPeople contact(s)
	}
	else
	{
		// Show standard share UI for unpinned contacts
	}
}

関連項目