在WinRT开发中可以调用其他的应用或者桌面程序来打开文件,这和WP7时代固定的几个Launcher相比,功能性更强。
直接上代码,简单明了:
public void OpenFile(StorageFile file,bool withPicker)
{
if (file != null)
{
if (withPicker)
{
//请用户选择打开方式
var options = new LauncherOptions { DisplayApplicationPicker = true };
options.UI.PreferredPlacement = Placement.Below;
Launcher.LaunchFileAsync(file, options);
}
else
{
//直接使用默认关联程序打开
Launcher.LaunchFileAsync(file);
}
}
}
需要给Launcher引入命名空间 using Windows.System;
关于LauncherOptions,有以下几个属性:
ContentType :对网络上的URL设置文件类型;
DisplayApplicationPicker :是否显示选择打开方式列表;
FallbackUri:没有对应的打开方式,没有处理文件类型或协议的应用程序时,用户应跳转到浏览器的URI值;
PreferredApplicationDisplayName:没有对应的打开方式,没有处理文件类型或协议的应用程序时,用户安装的应用程序在存储区中的显示名称;
PreferredApplicationPackageFamilyName:没有处理文件类型或协议的应用程序时,用户安装的应用程序在存储区中的包系列显示名称的值;
TreatAsUntrusted:是否显示警告提示用户,让用户再次确认打开;
UI:启动应用程序时默认的界面选项;
需要注意的是,由于WinRT APP的文件系统并非传统桌面的文件系统(尽管是传统桌面文件系统中的一个文件夹,但是由于权限问题,可以理解为类似WP7的独立存储空间),当我们使用这种方式打开一个文件并用第三方程序对该文件进行修改之后,该修改不会对原文件有任何操作。