Windows Phone開發(fā)(24):啟動器與選擇器之發(fā)送短信
本節(jié)我們通過一個簡單的發(fā)送短信示例來演示一下如果配合使用PhoneNumberChooserTask和SmsComposeTask類。
PhoneNumberChooserTask是選擇器,它用于從你的電話簿里選擇你要發(fā)送短信的電話號碼;
SmsComposeTask就是用來啟動發(fā)送短信組件并顯示發(fā)送窗口。
注意,這些操作都在用戶的操控之中,發(fā)送短信一定會顯示可視化頁面的,而且不會偷偷地在后臺發(fā)送,因為Windows phone是以用戶體驗和安全為原則的,后臺發(fā)送是不允許的,而且發(fā)送過程是由用戶控制的,你可以選擇取消或退出。
SmsComposeTask類的To屬性就是目標電話號碼,Body就是你要發(fā)送的短信的正文。
同樣,你會很輕松地就完成這個任務,不信,看看代碼吧。
- <phone:PhoneApplicationPage
- x:Class="SMSSample.MainPage"
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
- xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
- xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
- xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
- mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768"
- FontFamily="{StaticResource PhoneFontFamilyNormal}"
- FontSize="{StaticResource PhoneFontSizeNormal}"
- Foreground="{StaticResource PhoneForegroundBrush}"
- SupportedOrientations="Portrait" Orientation="Portrait"
- shell:SystemTray.IsVisible="True">
- <!--LayoutRoot 是包含所有頁面內(nèi)容的根網(wǎng)格-->
- <Grid x:Name="LayoutRoot" Background="Transparent">
- <Grid.RowDefinitions>
- <RowDefinition Height="Auto"/>
- <RowDefinition Height="*"/>
- </Grid.RowDefinitions>
- <!--TitlePanel 包含應用程序的名稱和頁標題-->
- <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
- <TextBlock x:Name="ApplicationTitle" Text="我的應用程序" Style="{StaticResource PhoneTextNormalStyle}"/>
- <TextBlock x:Name="PageTitle" Text="發(fā)送短信" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
- </StackPanel>
- <!--ContentPanel - 在此處放置其他內(nèi)容-->
- <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
- <TextBlock Height="40" HorizontalAlignment="Left" Margin="33,69,0,0" Name="textBlock1" Text="接收者:" VerticalAlignment="Top" FontSize="30" Width="144" />
- <TextBox Height="72" HorizontalAlignment="Left" Margin="12,116,0,0" Name="txtPhoneNumber" Text="" VerticalAlignment="Top" Width="418" >
- <TextBox.InputScope>
- <InputScope>
- <InputScopeName NameValue="Number"/>
- </InputScope>
- </TextBox.InputScope>
- </TextBox>
- <TextBlock FontSize="30" Height="40" HorizontalAlignment="Left" Margin="33,235,0,0" Name="textBlock2" Text="短信內(nèi)容:" VerticalAlignment="Top" Width="213" />
- <TextBox Height="233" HorizontalAlignment="Left" Margin="12,283,0,0" Name="txtMessage" Text="" VerticalAlignment="Top" Width="418" TextWrapping="Wrap" />
- <Button Content="發(fā)送" Height="79" HorizontalAlignment="Left" Margin="48,522,0,0" Name="btnSend" VerticalAlignment="Top" Width="357" Click="btnSend_Click" />
- <Button Content="選擇電話號碼" Height="72" HorizontalAlignment="Left" Margin="185,45,0,0" Name="btnChoose" VerticalAlignment="Top" Width="220" Click="btnChoose_Click" />
- </Grid>
- </Grid>
- </phone:PhoneApplicationPage>
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Net;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Documents;
- using System.Windows.Input;
- using System.Windows.Media;
- using System.Windows.Media.Animation;
- using System.Windows.Shapes;
- using Microsoft.Phone.Controls;
- using Microsoft.Phone.Tasks;
- namespace SMSSample
- {
- public partial class MainPage : PhoneApplicationPage
- {
- PhoneNumberChooserTask myChooser = new PhoneNumberChooserTask();
- SmsComposeTask SMS = null;
- // 構造函數(shù)
- public MainPage()
- {
- InitializeComponent();
- // 實例化
- SMS = new SmsComposeTask();
- // 注冊回調(diào)事件
- myChooser.Completed += (sender, e) => {
- if (e.TaskResult== TaskResult.OK)
- {
- Dispatcher.BeginInvoke(() => { this.txtPhoneNumber.Text = e.PhoneNumber; });
- }
- };
- }
- // 選擇聯(lián)系人
- private void btnChoose_Click(object sender, RoutedEventArgs e)
- {
- if (myChooser == null)
- {
- myChooser = new PhoneNumberChooserTask();
- }
- myChooser.Show();
- }
- // 發(fā)送
- private void btnSend_Click(object sender, RoutedEventArgs e)
- {
- if (txtPhoneNumber.Text == "" || txtMessage.Text == "")
- {
- MessageBox.Show("接收號碼和短信內(nèi)容不能為空。");
- return;
- }
- if (SMS == null)
- {
- SMS = new SmsComposeTask();
- }
- // 賦值
- SMS.To = txtPhoneNumber.Text;
- SMS.Body = txtMessage.Text;
- try
- {
- SMS.Show();
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.Message);
- }
- }
- }
- }