首页 > 代码库 > wp8.1 Study13:在WP8.1中分享文件和数据
wp8.1 Study13:在WP8.1中分享文件和数据
绪论:不同于windows, 在wp8.1中,如果不止一个程序可以接受其Uri或者文件,shell会提供一个界面让用户选择用哪个程序。而在windows中,用户可以在设置那里设置各种文件和Uri的默认程序。在wp8.1中,分享文件和数据过程如图:
一、Uri与file关联
1、定制Uri关联
我们可以利用Uri关联,登录其他程序完成任务,如进入设备设置等,链接IE浏览器(http),邮箱(mailto),信息等,简单例子如下:
例子一:
private async void bt1_Click(object sender, RoutedEventArgs e){await Launcher.LaunchUriAsync(new Uri("http://www.baidu.com"));}
例子二:
await Launcher.LaunchUriAsync( new Uri("fb://profile/1234"), new LauncherOptions { FallbackUri = new Uri("http://facebook.com/profile.php?id=1234") } );//LauncherOptions是后备方案,当手机中没有fb,就打开浏览器中的网页。
2、文件关联
通俗来说,文件关联就是用其他程序打开你程序中想打开的文件,如打开你程序中的pdf文件,例子如下:
var file = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appdata://Local/mydoc.pdf"));await Launcher.LaunchFileAsync(file);
注:自己也可以制作相应的程序来handle文件或Uri,即让你程序成为Target,在这不详细说明了。
二、wp8.1中分享数据
在任何手机中分享数据是很经常的,如分享图片到朋友圈等。wp8.1中,分享数据的体验如下:
而分享数据的内部机制如下:
这可以让用户在不同的程序之间中分享数据,同时许多app可以成为分享源,但只有一些可以成为分享目标。(下面只介绍对分享源操作)
1、对分享源操作
在你分享界面中,加入以下代码:
protected override void OnNavigatedTo(NavigationEventArgs e){ navigationHelper.OnNavigatedTo(e); DataTransferManager.GetForCurrentView().DataRequested += OnShareDataRequested;}protected override void OnNavigatedFrom(NavigationEventArgs e){ navigationHelper.OnNavigatedFrom(e); DataTransferManager.GetForCurrentView().DataRequested -= OnShareDataRequested;}private void AppBarButton_Click(object sender, RoutedEventArgs e){ DataTransferManager.ShowShareUI();}
而根据你分享的数据是什么类型的,编写相对应的OnShareDataRequested()方法。
比如分享简单的文字:
void OnShareDataRequested(DataTransferManager sender, DataRequestedEventArgs args){ var request = args.Request; request.Data.Properties.Title = "Share example"; //You MUST set a Title! request.Data.Properties.Description = "This demonstrates how to share text to another app"; request.Data.SetText(TextToShare.Text.Trim());}
比如分享图片:
// Handle DataRequested event and provide DataPackageasync void OnShareDataRequested(DataTransferManager sender, DataRequestedEventArgs args){ var dp = args.Request.Data; var deferral = args.Request.GetDeferral(); var photoFile = await StorageFile.GetFileFromApplicationUriAsync( new Uri("ms-appx:///Assets/needle.jpg")); dp.Properties.Title = "Space Needle"; dp.Properties.Description = "The Space Needle in Seattle, WA"; dp.SetStorageItems(new List<StorageFile> { photoFile }); dp.SetWebLink(new Uri("http://seattletimes.com/ABPub/2006/01/10/2002732410.jpg")); deferral.Complete();}
set方法有很多类型,这里只体现一些:
wp8.1 Study13:在WP8.1中分享文件和数据
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。