Picture Hubで任意の写真1枚をFacebookやWindows Liveなどで共有したい場合など、Picture Hubから写真の情報をパラメータとして渡し、特定のWindows Phone OS 7.1向けアプリケーションを起動することが出来ます。
現在のところ、Windows Phone OS 7.0とOS7.1とでは手順が異なりますので、どちらのSDKを使うかによって使い分けて頂ければと思います。Windows Phone OS 7.0向けアプリケーションの場合はこちらをご覧ください。
WMAppManifest.xmlを編集します。ソリューションエクスプローラー開いて頂き、Propertiesフォルダを開きます。

一番下にあるWMAppManifest.xmlを開きます。以下のようにApp要素の子要素として、以下のExtensions要素を追加します。ExtensionNameやConsumerIDの値は変更しないでください。
<Extensions> <Extension ExtensionName="Photos_Extra_Share" ConsumerID="{5B04B775-356B-4AA0-AAF8-6491FFEA5632}" TaskID="_default" /> </Extensions>
どこに追加して良いのか判らない方がいるかもしれませんのでWMAppManifest.xmlを全文表示します。
<?xml version="1.0" encoding="utf-8"?> <Deployment xmlns="http://schemas.microsoft.com/windowsphone/2009/deployment" AppPlatformVersion="7.1"> <App xmlns="" ProductID="{25000fe8-f99e-454a-a115-a48a0eb15606}" Title="PictureHubWP71Test" RuntimeType="Silverlight" Version="1.0.0.0" Genre="apps.normal" Author="author" Description="" Publisher="PictureHubWP71Test"> <IconPath IsRelative="true" IsResource="false">ApplicationIcon.png</IconPath> <Capabilities> <Capability Name="ID_CAP_GAMERSERVICES"/> <Capability Name="ID_CAP_IDENTITY_DEVICE"/> <Capability Name="ID_CAP_IDENTITY_USER"/> <Capability Name="ID_CAP_LOCATION"/> <Capability Name="ID_CAP_MEDIALIB"/> <Capability Name="ID_CAP_MICROPHONE"/> <Capability Name="ID_CAP_NETWORKING"/> <Capability Name="ID_CAP_PHONEDIALER"/> <Capability Name="ID_CAP_PUSH_NOTIFICATION"/> <Capability Name="ID_CAP_SENSORS"/> <Capability Name="ID_CAP_WEBBROWSERCOMPONENT"/> <Capability Name="ID_CAP_ISV_CAMERA"/> <Capability Name="ID_CAP_CONTACTS"/> <Capability Name="ID_CAP_APPOINTMENTS"/> </Capabilities> <Tasks> <DefaultTask Name ="_default" NavigationPage="MainPage.xaml"/> </Tasks> <Tokens> <PrimaryToken TokenID="PictureHubWP71TestToken" TaskName="_default"> <TemplateType5> <BackgroundImageURI IsRelative="true" IsResource="false">Background.png</BackgroundImageURI> <Count>0</Count> <Title>PictureHubWP71Test</Title> </TemplateType5> </PrimaryToken> </Tokens> <Extensions> <Extension ExtensionName="Photos_Extra_Share" ConsumerID="{5B04B775-356B-4AA0-AAF8-6491FFEA5632}" TaskID="_default" /> </Extensions> </App> </Deployment>
端末へのデプロイ後にPictures Hubで任意の写真を選択し、「共有…」を選択しました。
自アプリケーション側でパラメータを受け取る
起動パラメータにtokenが付与されています。開かれたページで「FileID」のパラメータをMediaLibraryクラスのGetPictureFromTokenメソッドの引数とすることで、画像のストリームが取得出来ます。
protected override void OnNavigatedTo(NavigationEventArgs e) { // Get a dictionary of query string keys and values. IDictionary<string, string> queryStrings = this.NavigationContext.QueryString; // Ensure that there is at least one key in the query string, and check // whether the "FileId" key is present. if (queryStrings.ContainsKey("FileID")) { // Retrieve the picture from the media library using the FileID // passed to the application. MediaLibrary library = new MediaLibrary(); Picture picture = library.GetPictureFromToken(queryStrings["FileID"]); // Create a WriteableBitmap object and add it to the Image control Source property. BitmapImage bitmap = new BitmapImage(); bitmap.CreateOptions = BitmapCreateOptions.None; bitmap.SetSource(picture.GetImage()); WriteableBitmap picLibraryImage = new WriteableBitmap(bitmap); retrievePic.Source = picLibraryImage; } }








