设为首页 收藏本站
查看: 966|回复: 0

Windows Phone 7 使用启动器(Lanucher)

[复制链接]

尚未签到

发表于 2015-5-8 13:36:23 | 显示全部楼层 |阅读模式
  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 的动作;不过不要紧,等有了实机之后就可以将应用程式部属到机器上做实际的测试的
DSC0000.png DSC0001.png
  而程式码的部分也是相当的简单,例如下面这样子



EmailComposeTask ect = new EmailComposeTask();
ect.To = txtEmailAddress.Text;
ect.Subject = txtSubject.Text;
ect.Body = txtMailBody.Text;
ect.Show();


DSC0002.gif DSC0003.gif View Code


   
        
            
            
        
        
        
            
            
        
        
            
               
               
               
               
               
               
            
        
        
   
   
   
        
            
            
        
   


View Code

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 LanucherDemo
{
    public partial class EmailCompose : PhoneApplicationPage
    {
        public EmailCompose()
        {
            InitializeComponent();
            txtEmailAddress.InputScope = new InputScope
            {
                Names = {new InputScopeName() { NameValue = InputScopeNameValue.EmailNameOrAddress }}
            };
        }
        private void btnOK_Click(object sender, EventArgs e)
        {
            EmailComposeTask ect = new EmailComposeTask();
            ect.To = txtEmailAddress.Text;
            ect.Subject = txtSubject.Text;
            ect.Body = txtMailBody.Text;
            ect.Show();
        }
    }
}





*註:在輸入 Email 的時候您也可以搭配 Chooser 來使用,會更加的方便
2、PhoneCallTask
  PhoneCallTask 是能够让您在应用程式中去执行拨打电话的功能,先来看看执行效果
DSC0004.png DSC0005.png DSC0006.png
  执行PhoneCallTask 时,需要先指定电话号码以及显示在画面上的名称(DisplayName),之后呼叫Show 的方法;呼叫Show 方法之后,首先会请使用者确认是否要拨打电话(中间的画面),之后便会进行拨打电话的动作了;而程式码的部分也相当的简单,大致会像下面这样



PhoneCallTask pct = new PhoneCallTask();
pct.DisplayName = "Test Call";
pct.PhoneNumber = txtPhoneNo.Text;
pct.Show();



View Code


   
        
            
            
        
        
        
            
            
        
        
            
            
            
        
        
   


View Code

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 LanucherDemo
{
    public partial class PhoneCall : PhoneApplicationPage
    {
        public PhoneCall()
        {
            InitializeComponent();
            txtPhoneNo.InputScope = new InputScope
            {
                Names = { new InputScopeName { NameValue = InputScopeNameValue.TelephoneNumber } }
            };
        }
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            PhoneCallTask pct = new PhoneCallTask();
            pct.DisplayName = "Test Call";
            pct.PhoneNumber = txtPhoneNo.Text;
            pct.Show();
        }
    }
}




3、SerachTask
  SearchTask 能够让应用程式指定查询的关键字,并且去启动系统预设的查询功能;先来看看执行的效果
DSC0007.png DSC0008.png DSC0009.png
  当您第一次去启动SearchTask 时,您可能会看到中间的画面,这是询问使用者,是不是允许装置利用GPS/AGPS 等方式去取得目前所在位置的一些相关资讯,确认之后就最出现最右边的收寻结果画面



SearchTask st = new SearchTask();
st.SearchQuery = txtKeyword.Text;
st.Show();


4、SmscomposeTask
  SmscomposeTask 让应用程式可以呼叫系统的简讯发送功能,先来看看执行的效果
DSC00010.png DSC00011.png
  使用的方式跟EmailComposeTask 相当的相似,只要设定接收端的号码以及SMS 内容之后,就可以启动系统预设的简讯发送介面了。程式码的部分大致会像下面这样
  SmsComposeTask sct = new SmsComposeTask();
sct.To = txtPhoneNo.Text;
sct.Body = txtMessage.Text;
sct.Show();



4、WebBrowserTask
  WebBrowserTask 是启动难建浏览器的功能,并且前往您指定的位置,下面先来看一下执行之后的效果
DSC00012.png DSC00013.png
  像上图的样子,笔者是将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』
DSC00014.png DSC00015.png DSC00016.png
  介面的部分相当简单,只有一个拨放的按钮,点击之后就会进行拨放的动作(您如果在拨放的过程没有看到画面的话,请用滑鼠点击模拟器的画面);接下来来看看程式码的部分
  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 (是一个GUID 值),如果没有指定(也就是null) 的话,便会以目前执行的应用程式为目标;好,接下来来看一下执行的效果
DSC00017.png DSC00018.png
  在短暂的搜寻动作之后换出现像是右图的结果,这是因为目前在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;下面就来看看执行的效果
DSC00019.png DSC00020.png DSC00021.png
  中间画面是当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 会得到类似下面的效果
DSC00022.png DSC00023.png


View Code




   
        
            
            
        
        
        
            
            
        
        
            
            
            
            
            
            
            
            
        
        
   

View Code



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 LanucherDemo
{
    public partial class MarketPlaceDetail : PhoneApplicationPage
    {
        public MarketPlaceDetail()
        {
            InitializeComponent();
        }
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            MarketplaceDetailTask mdt = new MarketplaceDetailTask();
            //只能設定為Applcation
            mdt.ContentType = MarketplaceContentType.Applications;
            //當沒有指定值則會以目前的應用程式為目標
            //如果格式檢查不符合GUID的格式則會丟出exception
            mdt.ContentIdentifier = txtID.Text;
            mdt.Show();   
        }
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            MarketplaceHubTask mht = new MarketplaceHubTask();
            mht.ContentType = MarketplaceContentType.Applications;
            //mht.ContentType = MarketplaceContentType.Music;
            mht.Show();
        }
        private void button2_Click(object sender, RoutedEventArgs e)
        {
            MarketplaceReviewTask mrt = new MarketplaceReviewTask();
            mrt.Show();
        }
        private void button3_Click(object sender, RoutedEventArgs e)
        {
            MarketplaceSearchTask mst = new MarketplaceSearchTask();
            //mst.ContentType = MarketplaceContentType.Music;
            mst.ContentType = MarketplaceContentType.Applications;
            mst.SearchTerms = txtSearchTerms.Text;
            mst.Show();
        }
    }
}

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-65008-1-1.html 上篇帖子: Windows Phone 7与Android和iPhone的比较 下篇帖子: windows7系统恢复之Windows 7 的恢复环境详解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表