启动器和选择器学习-----(3)选择器之电话和短信息
在Windows Phone中电话和即时消息有很好的集成。通过PhoneNumberChooserTask以及相关的SavePhoneNumberTask、PhoneCallTask和SmsComposeTask,可以要求用户选择或保持联系人电话号码、主动拨打电话或发送文本消息。
1、SavePhoneNumberTask
使用SavePhoneNumberTask可以是英语程序将新的电话号码记录到内置的Constacts英语程序中,如下面的代码所示。注意这个选择器有点像启动器因为它除了会返回号码是否被保存成功外不会再向应用程序返回任何信息。
1 public partial class ChooserTask : PhoneApplicationPage 2 { 3 private SavePhoneNumberTask nSavePhoneNum = new SavePhoneNumberTask(); 4 5 public ChooserTask() 6 { 7 InitializeComponent(); 8 9 nSavePhoneNum.Completed += new EventHandler<TaskEventArgs>(nSavePhoneNum_Completed); 10 } 11 12 void nSavePhoneNum_Completed(object sender, TaskEventArgs e) 13 { 14 if (e.TaskResult == TaskResult.OK) 15 MessageBox.Show("电话号码已经保存!"); 16 else 17 MessageBox.Show("电话号码没有保存!"); 18 } 19 20 private void Button_Click(object sender, RoutedEventArgs e) 21 { 22 if (!string.IsNullOrEmpty(PhoneNum.Text)) 23 { 24 nSavePhoneNum.PhoneNumber = PhoneNum.Text; 25 nSavePhoneNum.Show(); 26 } 27 } 28 }
2、PhoneNumberChooserTask
PhoneNumberChooserTask允许用户从手机联系人列表中选择一个电话号码,只要创建PhoneNumberChooserTask实例并调用show方法就可以。
1 public partial class ChooserTask : PhoneApplicationPage 2 { 3 private PhoneNumberChooserTask nPhoneNumChooser = new PhoneNumberChooserTask(); 4 5 public ChooserTask() 6 { 7 InitializeComponent(); 8 9 nPhoneNumChooser.Completed += new EventHandler<PhoneNumberResult>(nPhoneNumChooser_Completed); 10 } 11 12 void nPhoneNumChooser_Completed(object sender, PhoneNumberResult e) 13 { 14 if (e.TaskResult == TaskResult.OK) 15 { 16 PhoneNumChooser.Text = e.PhoneNumber; 17 } 18 } 19 20 private void Button_Click_1(object sender, RoutedEventArgs e) 21 { 22 nPhoneNumChooser.Show(); 23 } 24 }
3、PhoneCallTask
获得电话号码后,我们可以创建一个PhoneCallTask类的实例,并设置PhoneNumber属性,既可以发起一个主动的电话呼叫。
1 private void Button_Click_2(object sender, RoutedEventArgs e) 2 { 3 if (!string.IsNullOrEmpty(PhoneNumChooser.Text)) 4 { 5 PhoneCallTask nPhoneCall = new PhoneCallTask(); 6 nPhoneCall.PhoneNumber = PhoneNumChooser.Text; 7 nPhoneCall.Show(); 8 } 9 }
此外还可以设置DisplayName属性来显示呼叫人姓名。
4、SmsComposeTask
Windows Phone中是不允许在后台偷偷的发送短信的,只能通过SmsComposeTask设置电话号码or、and指定的短信内容来启动短信应用程序。
1 private void Button_Click_3(object sender, RoutedEventArgs e) 2 { 3 if (!string.IsNullOrEmpty(PhoneNumChooser.Text)) 4 { 5 SmsComposeTask nSendSms = new SmsComposeTask(); 6 nSendSms.To = PhoneNumChooser.Text; 7 nSendSms.Body = "http://www.hugwp.com/thread-3624-1.html" + "卤面和亿动联合,重拳出击,夏日清凉来袭~ Lumia800带回家~"; 8 nSendSms.Show(); 9 } 10 }