酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

Windows PhoneでSaveContactTaskを使って連絡先を登録する

概要

Windows Phone OS 7.1で追加されました。SaveContactTaskは、ピクチャーハブに連絡先を保存するセレクターです。

名前空間:Microsoft.Phone.Tasks

System.Object
 +--Microsoft.Phone.Tasks.ChooserBase<SaveContactResult>
  +--Microsoft.Phone.Tasks.SaveContactTask

Tips

SaveContactTaskを使って連絡先を登録する

SaveContactTaskは、ピクチャーハブに連絡先を保存するセレクターです。SaveContactTaskクラスのShowメソッドを実行すると、ピープルハブが起動します。

Showメソッドを呼ぶ前に会社名(Companyプロパティ)や名前(FirstName、LastNameプロパティ)、電話番号(MobilePhoneプロパティ)などに、あらかじめ入力しておくことが可能です。

設定が可能な項目は27項目あり、本記事にて全ての項目を説明する事が出来ませんので、MSDNライブラリのSaveContactTask Propertiesを参照して頂ければと思います。

ピープルハブの連絡帳に連絡先を保存することが可能です。連絡先の保存、またはユーザーによってキャンセルされると、Completedイベントハンドラが呼び出しされ、連絡先の保存に成功したかどうかを判断することが出来ます。

C#

using System;
using System.Windows;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Tasks;

namespace SaveContactTaskTest {
    public partial class MainPage : PhoneApplicationPage {
        // コンストラクター
        public MainPage() {
            InitializeComponent();
        }

        private void button1_Click(object sender, RoutedEventArgs e) {
            var task = new SaveContactTask();
            task.Completed += new EventHandler<SaveContactResult>(task_Completed);

            try {
                // 登録したい項目を事前に入力しておくことも可能
                task.Company = "Softbuild";
                task.FirstName = "Kenji";
                task.LastName = "Wada";
                task.MobilePhone = "090123456789";
                task.Website = "http://ch3cooh.jp/";

                task.Show();
            } catch (InvalidOperationException ex) {
                MessageBox.Show(ex.Message);
            }
        }

        void task_Completed(object sender, SaveContactResult e) {
            switch (e.TaskResult) {
                case TaskResult.OK:
                    // 連絡先の保存に成功
                    break;
                case TaskResult.Cancel:
                    // ユーザーによって保存をキャンセルされた
                    break;
                case TaskResult.None:
                    // 連絡先は保存されなかった
                    break;
            }
        }
    }
}

VB.NET

Imports System.Windows
Imports Microsoft.Phone.Controls
Imports Microsoft.Phone.Tasks

Namespace SaveContactTaskTest
    Public Partial Class MainPage
        Inherits PhoneApplicationPage
       ' コンストラクター
        Public Sub New()
            InitializeComponent()
        End Sub

        Private Sub button1_Click(sender As Object, e As RoutedEventArgs)
            Dim task = New SaveContactTask()
            task.Completed += New EventHandler(Of SaveContactResult)(AddressOf task_Completed)

            Try
               ' 登録したい項目を事前に入力しておくことも可能
                task.Company = "Softbuild"
                task.FirstName = "Kenji"
                task.LastName = "Wada"
                task.MobilePhone = "090123456789"
                task.Website = "http://ch3cooh.jp/"

                task.Show()
            Catch ex As InvalidOperationException
                MessageBox.Show(ex.Message)
            End Try
        End Sub

        Private Sub task_Completed(sender As Object, e As SaveContactResult)
            Select Case e.TaskResult
                Case TaskResult.OK
                   ' 連絡先の保存に成功
                    Exit Select
                Case TaskResult.Cancel
                   ' ユーザーによって保存をキャンセルされた
                    Exit Select
                Case TaskResult.None
                   ' 連絡先は保存されなかった
                    Exit Select
            End Select
        End Sub
    End Class
End Namespace

Windows Phoneの実機に、Windows LiveやGoogleなどのクラウド上に連絡先を保存可能なアカウントの設定を行っている場合は、追加を行いたいサービス(Windows LiveやGoogle)が表示されるのでいずれかを選択します。

クラウド上に保存可能なアカウントが設定されていない場合は、下図のように電話機本体に保存が可能です。

f:id:ch3cooh393:20160504125057p:plain

参照