Windows Phone 7 使用启动器(Lanucher)

简介:

Launcher启动器:启动Windows Phone 7内置应用程序。启动器只是负责把相应的应用程序启动起来就可以了。
Lanucher 在使用时跟Chooser 相同,必须要注意应用程式生命周期;而Lanucher 主要的功能是呼叫Windows Phone 7 中其他的功能;例如说拨打电话、WebBrowser 等功能,使用Lanucher 时同样的,必须要引入Microsoft .Phone.Tasks 的命名空间,下面笔者列出Lanucher 的各项功能

包括以下几个:

EmailComposeTask: 启动发送Email的应用程序。

MediaPlayerLauncher: 启动MeidaPlayer应用程序。

PhoneCallTask: 启动打电话应用程序。

SearchTask: 启动搜索应用程序。

SmsComposeTask: 启动发短信应用程序。

WebBrowserTask: 启动IE。

MarketplaceDetailTask: 启动Marketplace客户端应用程序,并显示指定应用的详细信息。

MarketplaceHubTask: 启动Marketplace客户端应用程序。

MarketplaceReviewTask: 启动Marketplace客户端应用程序的审查页面。

MarketplaceSearchTask: 启动Marketplace客户端应用程序的搜索页面。

1、EmailComposeTask

EmailComposeTask 让您可以呼叫出系统预设的寄送Email 功能,并且在呼叫之前,能够设定收件人,邮件内容等讯息,例如笔者做了以下的介面,执行的时候会出现像右图这样的错误讯息,这是因为内建的开发用模拟器没有设定email 相关的帐号,因此无法做寄送email 的动作;不过不要紧,等有了实机之后就可以将应用程式部属到机器上做实际的测试的

 

 

而程式码的部分也是相当的简单,例如下面这样子

EmailComposeTask ect = new EmailComposeTask();

ect.To = txtEmailAddress.Text;

ect.Subject = txtSubject.Text;

ect.Body = txtMailBody.Text;

ect.Show();

 

 
  1. View Code <!--LayoutRoot is the root grid where all page content is placed--> 
  2.     <Grid x:Name="LayoutRoot" Background="Transparent"> 
  3.         <Grid.RowDefinitions> 
  4.             <RowDefinition Height="Auto"/> 
  5.             <RowDefinition Height="*"/> 
  6.         </Grid.RowDefinitions> 
  7.  
  8.         <!--TitlePanel contains the name of the application and page title--> 
  9.         <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28"> 
  10.             <TextBlock x:Name="ApplicationTitle" Text="Lanucher Demo" Style="{StaticResource PhoneTextNormalStyle}"/> 
  11.             <TextBlock x:Name="PageTitle" Text="EmailCompose" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/> 
  12.         </StackPanel> 
  13.         <ScrollViewer Grid.Row="1"> 
  14.             <StackPanel x:Name="ContentPanel" > 
  15.                 <TextBlock Margin="3,1,1,1" Height="33" x:Name="textBlock1" Text="收件人郵件地址" /> 
  16.                 <TextBox x:Name="txtEmailAddress" Height="69" TextWrapping="Wrap" Text="TextBox" /> 
  17.                 <TextBlock Margin="3,1,1,1" Height="33" Name="textBlock2" Text="郵件主旨" /> 
  18.                 <TextBox Height="69" Name="txtSubject" Text="TextBox" TextWrapping="Wrap"/> 
  19.                 <TextBlock Margin="3,1,1,1" Height="33" Name="textBlock3" Text="郵件內容"  /> 
  20.                 <TextBox Height="274" Name="txtMailBody" Text="TextBox" TextWrapping="Wrap" /> 
  21.             </StackPanel> 
  22.         </ScrollViewer> 
  23.  
  24.         <!--ContentPanel - place additional content here--> 
  25.     </Grid> 
  26.    
  27.     <!--Sample code showing usage of ApplicationBar--> 
  28.     <phone:PhoneApplicationPage.ApplicationBar> 
  29.         <shell:ApplicationBar IsVisible="True" IsMenuEnabled="True"> 
  30.             <shell:ApplicationBarIconButton IconUri="/Images/appbar.check.rest.png" Text="OK" x:Name="btnOK" Click="btnOK_Click" /> 
  31.             <shell:ApplicationBarIconButton IconUri="/Images/appbar.cancel.rest.png" Text="Cancel" x:Name="btnCancel" /> 
  32.         </shell:ApplicationBar> 
  33.     </phone:PhoneApplicationPage.ApplicationBar> 

 

 
  1. View Code using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Net;  
  5. using System.Windows;  
  6. using System.Windows.Controls;  
  7. using System.Windows.Documents;  
  8. using System.Windows.Input;  
  9. using System.Windows.Media;  
  10. using System.Windows.Media.Animation;  
  11. using System.Windows.Shapes;  
  12. using Microsoft.Phone.Controls;  
  13.  
  14. using Microsoft.Phone.Tasks;  
  15.  
  16. namespace LanucherDemo  
  17. {  
  18.     public partial class EmailCompose : PhoneApplicationPage  
  19.     {  
  20.         public EmailCompose()  
  21.         {  
  22.             InitializeComponent();  
  23.             txtEmailAddress.InputScope = new InputScope  
  24.             {  
  25.                 Names = {new InputScopeName() { NameValue = InputScopeNameValue.EmailNameOrAddress }}  
  26.             };  
  27.         }  
  28.  
  29.         private void btnOK_Click(object sender, EventArgs e)  
  30.         {  
  31.             EmailComposeTask ect = new EmailComposeTask();  
  32.             ect.To = txtEmailAddress.Text;  
  33.             ect.Subject = txtSubject.Text;  
  34.             ect.Body = txtMailBody.Text;  
  35.             ect.Show();  
  36.         }  
  37.     }  

Just have a little faith.

Windows Phone 7 使用启动器(Lanucher)

Launcher启动器:启动Windows Phone 7内置应用程序。启动器只是负责把相应的应用程序启动起来就可以了。
Lanucher 在使用时跟Chooser 相同,必须要注意应用程式生命周期;而Lanucher 主要的功能是呼叫Windows Phone 7 中其他的功能;例如说拨打电话、WebBrowser 等功能,使用Lanucher 时同样的,必须要引入Microsoft .Phone.Tasks 的命名空间,下面笔者列出Lanucher 的各项功能

包括以下几个:

EmailComposeTask: 启动发送Email的应用程序。

MediaPlayerLauncher: 启动MeidaPlayer应用程序。

PhoneCallTask: 启动打电话应用程序。

SearchTask: 启动搜索应用程序。

SmsComposeTask: 启动发短信应用程序。

WebBrowserTask: 启动IE。

MarketplaceDetailTask: 启动Marketplace客户端应用程序,并显示指定应用的详细信息。

MarketplaceHubTask: 启动Marketplace客户端应用程序。

MarketplaceReviewTask: 启动Marketplace客户端应用程序的审查页面。

MarketplaceSearchTask: 启动Marketplace客户端应用程序的搜索页面。

1、EmailComposeTask

EmailComposeTask 让您可以呼叫出系统预设的寄送Email 功能,并且在呼叫之前,能够设定收件人,邮件内容等讯息,例如笔者做了以下的介面,执行的时候会出现像右图这样的错误讯息,这是因为内建的开发用模拟器没有设定email 相关的帐号,因此无法做寄送email 的动作;不过不要紧,等有了实机之后就可以将应用程式部属到机器上做实际的测试的

 

而程式码的部分也是相当的简单,例如下面这样子

EmailComposeTask ect = new EmailComposeTask();

ect.To = txtEmailAddress.Text;

ect.Subject = txtSubject.Text;

ect.Body = txtMailBody.Text;

ect.Show();

按 Ctrl+C 复制代码
按 Ctrl+C 复制代码

按 Ctrl+C 复制代码
按 Ctrl+C 复制代码
 
*註:在輸入 Email 的時候您也可以搭配 Chooser 來使用,會更加的方便

2、PhoneCallTask

PhoneCallTask 是能够让您在应用程式中去执行拨打电话的功能,先来看看执行效果

 

  

执行PhoneCallTask 时,需要先指定电话号码以及显示在画面上的名称(DisplayName),之后呼叫Show 的方法;呼叫Show 方法之后,首先会请使用者确认是否要拨打电话(中间的画面),之后便会进行拨打电话的动作了;而程式码的部分也相当的简单,大致会像下面这样

PhoneCallTask pct = new PhoneCallTask();

pct.DisplayName = "Test Call";

pct.PhoneNumber = txtPhoneNo.Text;

pct.Show();

 

 
  1. View Code <!--LayoutRoot is the root grid where all page content is placed--> 
  2.     <Grid x:Name="LayoutRoot" Background="Transparent"> 
  3.         <Grid.RowDefinitions> 
  4.             <RowDefinition Height="Auto"/> 
  5.             <RowDefinition Height="*"/> 
  6.         </Grid.RowDefinitions> 
  7.  
  8.         <!--TitlePanel contains the name of the application and page title--> 
  9.         <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28"> 
  10.             <TextBlock x:Name="ApplicationTitle" Text="Lanucher Demo" Style="{StaticResource PhoneTextNormalStyle}"/> 
  11.             <TextBlock x:Name="PageTitle" Text="Phone Call" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/> 
  12.         </StackPanel> 
  13.         <StackPanel x:Name="ContentPanel" Margin="12,0,12,0" Grid.Row="1" > 
  14.             <TextBlock Height="35" Margin="8,0" TextWrapping="Wrap" Text="電話號碼"/> 
  15.             <TextBox x:Name="txtPhoneNo" Height="72" Margin="8,0" TextWrapping="Wrap" Text=""/> 
  16.             <Button Content="Make call" Height="80" Margin="196,0,27,0" Click="Button_Click" /> 
  17.         </StackPanel> 
  18.  
  19.         <!--ContentPanel - place additional content here--> 
  20.     </Grid> 

 

 
  1. View Code using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Net;  
  5. using System.Windows;  
  6. using System.Windows.Controls;  
  7. using System.Windows.Documents;  
  8. using System.Windows.Input;  
  9. using System.Windows.Media;  
  10. using System.Windows.Media.Animation;  
  11. using System.Windows.Shapes;  
  12. using Microsoft.Phone.Controls;  
  13.  
  14. using Microsoft.Phone.Tasks;  
  15.  
  16. namespace LanucherDemo  
  17. {  
  18.     public partial class PhoneCall : PhoneApplicationPage  
  19.     {  
  20.         public PhoneCall()  
  21.         {  
  22.             InitializeComponent();  
  23.             txtPhoneNo.InputScope = new InputScope  
  24.             {  
  25.                 Names = { new InputScopeName { NameValue = InputScopeNameValue.TelephoneNumber } }  
  26.             };  
  27.         }  
  28.  
  29.         private void Button_Click(object sender, RoutedEventArgs e)  
  30.         {  
  31.             PhoneCallTask pct = new PhoneCallTask();  
  32.             pct.DisplayName = "Test Call";  
  33.             pct.PhoneNumber = txtPhoneNo.Text;  
  34.             pct.Show();  
  35.         }  
  36.     }  

3、SerachTask

SearchTask 能够让应用程式指定查询的关键字,并且去启动系统预设的查询功能;先来看看执行的效果

 

  

当您第一次去启动SearchTask 时,您可能会看到中间的画面,这是询问使用者,是不是允许装置利用GPS/AGPS 等方式去取得目前所在位置的一些相关资讯,确认之后就最出现最右边的收寻结果画面

SearchTask st = new SearchTask();

st.SearchQuery = txtKeyword.Text;

st.Show();
 

4、SmscomposeTask

SmscomposeTask 让应用程式可以呼叫系统的简讯发送功能,先来看看执行的效果

 

 

使用的方式跟EmailComposeTask 相当的相似,只要设定接收端的号码以及SMS 内容之后,就可以启动系统预设的简讯发送介面了。程式码的部分大致会像下面这样

SmsComposeTask sct = new SmsComposeTask();

sct.To = txtPhoneNo.Text;

sct.Body = txtMessage.Text;

sct.Show();

 

4、WebBrowserTask

WebBrowserTask 是启动难建浏览器的功能,并且前往您指定的位置,下面先来看一下执行之后的效果

 

 

像上图的样子,笔者是将WebBrowserTask 的URL 属性设定为msdn.microsoft.com,在呼叫Show 的方法之后便会前往指定的页面,程式码大概会像下面这样子

WebBrowserTask wbt = new WebBrowserTask();

wbt.URL = txtUrl.Text;

wbt.Show();
 

5、 MediaPlayerLanucher

MediaPlayerLanucher 顾名思义就是去启动MediaPlayer,而其中有几个属性要特别注意

  • Location

    Location 是描述档案是放置在『什么样的位置』,在VS 环境中可以设定成下面三种

    MediaLocationType.Install:『Install』指的就是跟着你的xap 档案一起部属过去的相关档案,也就是位于安装的目录中。

    MediaLocationType.Data:『Data』指的是位于隔离储存区当中的档案,也就是说如果您的档案是执行之后才会取得或是产生的(例如说从网路下载),而会将档案写入到隔离储存区当中,这个时候就要设定为这个属性。

    MediaLocationType.None:『None』的属性目前来说是没有作用的,如果设定为None,那么呼叫Show 的方法之后,直接就会丢出『FileNotFroundException』。

  • Meida

    Media 是档案的位置以及档案名称,是以Uri 的方式来表示,例如

    mpl.Media = new Uri(@"Media\test.wmv", UriKind.Relative);

  • Controls

    Controls 是设定MediaPlayer 出现之后,在画面上会出现哪一些控制按钮;而各个项目也可以利用OR 的方式去设定,例如说设定的方式可能会下面这样

    //设定所有控制纽都出现

    mpl.Controls = MediaPlaybackControls.All;

    //设定出现停止按钮以及暂停按钮

    mpl.Controls = MediaPlaybackControls.Pause | MediaPlaybackControls.Stop;

接下来来看一下执行的效果,首先笔者建立了一个简单的测试影片test.wmv,请特别注意,在Build Action 的部分要设定成Content,copy to output directory 要设定成『copy if newer』或是『always copy』

 

  

介面的部分相当简单,只有一个拨放的按钮,点击之后就会进行拨放的动作(您如果在拨放的过程没有看到画面的话,请用滑鼠点击模拟器的画面);接下来来看看程式码的部分

MediaPlayerLauncher mpl = new MediaPlayerLauncher();

//指定档案放置的位置属性

mpl.Location = MediaLocationType.Install;

//设定所有控制纽都出现

mpl.Controls = MediaPlaybackControls.All;

//设定出现停止按钮以及暂停按钮

//mpl.Controls = MediaPlaybackControls.Pause | MediaPlaybackControls.Stop;

//指定播放的档案

mpl.Media = new Uri(@"Media\test.wmv", UriKind.Relative);

mpl.Show(); MarketPlaceDetailTask

 

6、MarketPlaceDetailTask

MarketPlaceDetailTask 主要的动作会启动系统内建的MarketPlace 应用程式,并且可以指定要浏览的应用程式ID;主要要特别注意两个属性;第一个是ContentType 的属性,目前来说ContentType 一定要指定为Applications,如果指定为Music 的话,在呼叫Show 的方法时就会直接丢出错误了。而另一个是ContentIdentifier,这个属性是要指定应用程式ID (

 

 

在短暂的搜寻动作之后换出现像是右图的结果,这是因为目前在MarketPlace 上面找不到指定的应用程式的关系;相关动作的程式码大致会像是下面这样

MarketplaceDetailTask mdt = new MarketplaceDetailTask();

//只能设定为Applcations

mdt.ContentType = MarketplaceContentType.Applications;

//当没有指定值则会以目前的应用程式为目标

//如果格式检查不符合GUID 的格式则会丢出exception

mdt.ContentIdentifier = txtID.Text;

mdt.Show();

 

7、MarketplaceHubTask

MarketlaceHubTask 主要的功用是启动后便会带领使用者直接连线到Marketplace;操作的方法与其他Lanucher 类似,也是相当的简单,要注意的是ContentType 属性,可以设定为Application 与Music;下面就来看看执行的效果

 

 

中间画面是当ContentType 设定为Music 时的画面,最右边则是设定为Application 时;您看到的画面因为时间不同有可能跟笔者的是不相同的,各位可以自行实做看看;程式码的部分也简单的列出在下面

MarketplaceHubTask mht = new MarketplaceHubTask();

mht.ContentType = MarketplaceContentType.Applications;

//mht.ContentType = MarketplaceContentType.Music;

mht.Show();

 

8、 MarketplaceReviewTask

MarketplcaeReviewTask 的用途是在启动之后会连到Marketplace 的页面,并直接的为您的应用程式做评分、建议等地动作;使用方式相当的简单,只要利用下列的程式码就可以了

MarketplaceReviewTask mrt = new MarketplaceReviewTask();

 

9、 MarketPlaceSearchTask

MarketplaceSearchTask 可以让您搜寻Marketplace 上的应用程式或是音乐(一样是透过ContentType 的属性来设定),另外SearchTerms 可以指定关键字,例如说输入sms 会得到类似下面的效果

 

 

 

 
  1. View Code   
  2.  
  3.  <!--LayoutRoot is the root grid where all page content is placed--> 
  4.     <Grid x:Name="LayoutRoot" Background="Transparent"> 
  5.         <Grid.RowDefinitions> 
  6.             <RowDefinition Height="Auto"/> 
  7.             <RowDefinition Height="*"/> 
  8.         </Grid.RowDefinitions> 
  9.  
  10.         <!--TitlePanel contains the name of the application and page title--> 
  11.         <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28"> 
  12.             <TextBlock x:Name="ApplicationTitle" Text="Lanucher Demo" Style="{StaticResource PhoneTextNormalStyle}"/> 
  13.             <TextBlock x:Name="PageTitle" Text="MarketPlace" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/> 
  14.         </StackPanel> 
  15.         <StackPanel x:Name="ContentPanel" Margin="12,0,12,0" Grid.Row="1" > 
  16.             <TextBlock Height="28" Margin="8,0" TextWrapping="Wrap" Text="應用程式 ID"/> 
  17.             <TextBox x:Name="txtID" Height="66" Margin="8,0" TextWrapping="Wrap" Text="cbd00900-0600-11db-89ca-0019b92a3933"/> 
  18.             <Button Content="Show Detail" Height="76" Margin="8,0,8,0" Click="Button_Click" Width="410" /> 
  19.             <Button Content="MarketplaceHub" Height="80" Name="button1" Width="409" Click="button1_Click" /> 
  20.             <Button Content="Application Review" Height="79" Name="button2" Width="409" Click="button2_Click" /> 
  21.             <TextBlock Height="28" Text="搜尋關鍵字" TextWrapping="Wrap" /> 
  22.             <TextBox Height="66" Name="txtSearchTerms" Text="sms" TextWrapping="Wrap" /> 
  23.             <Button Content="Search Marketplace" Height="79" Name="button3" Width="409" Click="button3_Click" /> 
  24.         </StackPanel> 
  25.  
  26.         <!--ContentPanel - place additional content here--> 
  27.     </Grid> 

 

 
  1. View Code   
  2.  
  3. using System;  
  4. using System.Collections.Generic;  
  5. using System.Linq;  
  6. using System.Net;  
  7. using System.Windows;  
  8. using System.Windows.Controls;  
  9. using System.Windows.Documents;  
  10. using System.Windows.Input;  
  11. using System.Windows.Media;  
  12. using System.Windows.Media.Animation;  
  13. using System.Windows.Shapes;  
  14. using Microsoft.Phone.Controls;  
  15.  
  16. using Microsoft.Phone.Tasks;  
  17.  
  18. namespace LanucherDemo  
  19. {  
  20.     public partial class MarketPlaceDetail : PhoneApplicationPage  
  21.     {  
  22.         public MarketPlaceDetail()  
  23.         {  
  24.             InitializeComponent();  
  25.         }  
  26.  
  27.         private void Button_Click(object sender, RoutedEventArgs e)  
  28.         {  
  29.             MarketplaceDetailTask mdt = new MarketplaceDetailTask();  
  30.             //只能設定為Applcation  
  31.             mdt.ContentType = MarketplaceContentType.Applications;  
  32.             //當沒有指定值則會以目前的應用程式為目標  
  33.             //如果格式檢查不符合GUID的格式則會丟出exception  
  34.             mdt.ContentIdentifier = txtID.Text;  
  35.             mdt.Show();     
  36.         }  
  37.  
  38.         private void button1_Click(object sender, RoutedEventArgs e)  
  39.         {  
  40.             MarketplaceHubTask mht = new MarketplaceHubTask();  
  41.             mht.ContentType = MarketplaceContentType.Applications;  
  42.             //mht.ContentType = MarketplaceContentType.Music;  
  43.             mht.Show();  
  44.         }  
  45.  
  46.         private void button2_Click(object sender, RoutedEventArgs e)  
  47.         {  
  48.             MarketplaceReviewTask mrt = new MarketplaceReviewTask();  
  49.             mrt.Show();  
  50.         }  
  51.  
  52.         private void button3_Click(object sender, RoutedEventArgs e)  
  53.         {  
  54.             MarketplaceSearchTask mst = new MarketplaceSearchTask();  
  55.             //mst.ContentType = MarketplaceContentType.Music;  
  56.             mst.ContentType = MarketplaceContentType.Applications;  
  57.             mst.SearchTerms = txtSearchTerms.Text;  
  58.             mst.Show();  
  59.         }  
  60.     }  

 


本文转自linzheng 51CTO博客,原文链接:http://blog.51cto.com/linzheng/1079183


相关文章
|
7天前
|
C# Windows
.NET开源免费的Windows快速文件搜索和应用程序启动器
今天大姚给大家分享一款.NET开源(MIT License)、免费、功能强大的Windows快速文件搜索和应用程序启动器:Flow Launcher。
|
Android开发 iOS开发 Windows
Windows Phone 寿终正寝了,这些经典机型你还记得吗?
不久前,随着最后一家WP手机厂商惠普宣布取消今后Windows Phone的研发计划,以及微软官方声明对WP8.1系统今后所有升级维护的终止,WP手机,作为曾经和安卓手机、苹果手机并驾齐驱的三大智能手机之一,正式寿终正寝。
1241 0
Windows Phone 寿终正寝了,这些经典机型你还记得吗?
|
XML 开发框架 前端开发
Windows Phone快速入门需掌握哪些能力
在此之前,先普及下Windows Phone的概念和开发工具的介绍。 Windows Phone是微软公司开发的手机操作系统,它将微软旗下的Xbox Live游戏、Xbox Music音乐与独特的视频体验集成至手机中。2012年6月21日,微软正式发布Windows Phone 8,采用和Windows 8相同的Windows NT内核,同时也针对市场的Windows Phone 7.5发布Windows Phone 7.8。
133 0
Windows Phone快速入门需掌握哪些能力
|
编解码 前端开发 JavaScript
Windows Phone 下开发 LBS 应用
基于位置的服务(Location Based Service,LBS),它是通过电信移动运营商的无线电通讯网络(如GSM网、CDMA网)或外部定位方式(如GPS)获取移动终端用户的位置信息(地理坐标,或大地坐标),在GIS(Geographic Information System,地理信息系统)平台的支持下,为用户提供相应服务的一种增值业务。
161 0
|
移动开发 Android开发 开发者
Windows Phone 8.1 新功能汇总 开发者预览版开放下载
在Build 2014大会上,微软正式发布了传闻已久的Windows Phone 8.1系统,所有的Windows Phone 8手机都可以升级,微软这次可谓是十分厚道。虽然并非迭代升级,但WP 8.1还是拥有很多重大更新,对于微软进一步完善移动平台拥有积极的意义。下面,就一起来了解一下WP 8.1的主要新特性。
230 0
Windows Phone 8.1 新功能汇总 开发者预览版开放下载