wp8.1 Study13:在WP8.1中分享文件和数据

  绪论:不一样于windows, 在wp8.1中,若是不止一个程序能够接受其Uri或者文件,shell会提供一个界面让用户选择用哪一个程序。而在windows中,用户能够在设置那里设置各类文件和Uri的默认程序。在wp8.1中,分享文件和数据过程如图:php

1、Uri与file关联shell

一、定制Uri关联windows

  咱们能够利用Uri关联,登陆其余程序完成任务,如进入设备设置等,连接IE浏览器(http),邮箱(mailto),信息等,简单例子以下:浏览器

例子一:app

private async void bt1_Click(object sender, RoutedEventArgs e)
{
await Launcher.LaunchUriAsync(new Uri("http://www.baidu.com"));
}

例子二: async

await Launcher.LaunchUriAsync(    new Uri("fb://profile/1234"), 
    new LauncherOptions         { FallbackUri = new Uri("http://facebook.com/profile.php?id=1234") }    );//LauncherOptions是后备方案,当手机中没有fb,就打开浏览器中的网页。

二、文件关联ide

通俗来讲,文件关联就是用其余程序打开你程序中想打开的文件,如打开你程序中的pdf文件,例子以下:spa

var file = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appdata://Local/mydoc.pdf"));
await Launcher.LaunchFileAsync(file);

注:本身也能够制做相应的程序来handle文件或Uri,即让你程序成为Target,在这不详细说明了。code

2、wp8.1中分享数据blog

  在任何手机中分享数据是很常常的,如分享图片到朋友圈等。wp8.1中,分享数据的体验以下:

  而分享数据的内部机制以下:

 

  这可让用户在不一样的程序之间中分享数据,同时许多app能够成为分享源,但只有一些能够成为分享目标。(下面只介绍对分享源操做)

一、对分享源操做

  在你分享界面中,加入如下代码:

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 DataPackage
async 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方法有不少类型,这里只体现一些:

相关文章
相关标签/搜索