×
Namespaces

Variants
Actions

Windows Phone 8中的应用间通讯

From Nokia Developer Wiki
Jump to: navigation, search
WP Metro Icon File.png
SignpostIcon XAML 40.png
WP Metro Icon WP8.png
Article Metadata

代码示例
兼容于
文章
关键词: URI Associations
Xinx Gong 在 07 Jan 2013 创建
最后由 hamishwillee 在 28 Jun 2013 编辑

Contents

自定义文件类型关联

Windows Phone 8中,当用户想打开特定文件时,文件关联允许您的应用自动启动。该文件来源包括但不限于以下来源:

- 邮件附件
- 浏览器
- NFC Tag
- 其他应用程序
- SD卡

在Manifest文件中注册文件类型

… …
</Token>
<Extensions>
<FileTypeAssociation Name="a2a" NavUriFragment="fileToken=%s" TaskID="_default">
<SupportedFileTypes>
<FileType>.a2a</FileType>
</SupportedFileTypes>
</FileTypeAssociation>
</Extensions>

注:最多可关联20个文件扩展名。

应用图标的尺寸如下:

App to app 1.png

在Manifest文件中指定图标:

… …
</Token>
<Extensions>
<FileTypeAssociation Name="a2a" NavUriFragment="fileToken=%s" TaskID="_default">
<Logos>
<Logo Size="small">Assets\Logo\logo-33.png</Logo>
<Logo Size="medium">Assets\Logo\logo-69.png</Logo>
<Logo Size="large">Assets\Logo\logo-176.png</Logo>
</Logos>
</FileTypeAssociation>
</Extensions>

监听文件启动

在通过外部关联文件打开该应用程序时,应用将获取到如下的一个Uri:

/FileTypeAssociation?fileToken=89819279-4fe0-4531-9f57-d633f0949a19

可以通过UriMapper的方式来解析这个Uri。UriMapping的用法

fileToken后面的参数指的是外部文件在共享隔离存储中的Token,可以通过这个Token将文件拷贝到该应用程序的独立存储空间中来。Windows Phone 8的独立存储文件系统

// StorageFolder destinationFolder
// 目标文件夹,文件将复制到的位置。
// string desiredName
// 目标文件夹中新文件的名称。
// NameCollisionOption option
// 指定存在现有文件与目标文件夹中文件的名称相同时要执行的操作。
// string fileToken
// 文件关联中的文件的 ID。
IStorageFile file = await SharedStorageAccessManager.CopySharedFileAsync(destinationFolder, desiredName, option, fileToken);

从其他程序打开文件

你也可以从其他程序的独立存储中得到关联文件,然后用该应用程序打开这个文件。

StorageFolder local = Windows.Storage.ApplicationData.Current.LocalFolder;
StorageFile file1 = await local.GetFileAsync("file1.a2a");
Windows.System.Launcher.LaunchFileAsync(file1);

系统保留的扩展名

App to app 2.png

URI关联

在Manifest文件中注册协议

    </Tokens>
<Extensions>
<Protocol Name="a2a" NavUriFragment="content=%s" TaskID="_default"/>
</Extensions>

监听文件启动

在外部通过关联的URI打开该应用程序时(如URI为:a2a:12345),应用程序将获取到如下一个Uri:

/Protocol?content=a2a%3A12345

同样也可以通过UriMapper的方式来处理这个Uri。

从其他程序中启动URI

await Windows.System.Launcher.LaunchUriAsync(new Uri("a2a:12345"));

系统保留的URI关键字

http(s)
Tel
Onenote
Map
Mailto
Zune

通过URI打开系统build-in apps

App to app 3.png

示例源代码下载

File:AppToAppSample.zip

This page was last modified on 28 June 2013, at 09:43.
137 page views in the last 30 days.