【问题标题】:Windows.System.LaunchUriAsync throws exception only on Windows 10 mobileWindows.System.LaunchUriAsync 仅在 Windows 10 移动版上引发异常
【发布时间】:2016-06-17 09:51:02
【问题描述】:

我正在开发一个面向桌面和移动设备的 UWP 应用。 在应用程序的某些时候,使用了以下代码

var success = await Windows.System.Launcher.LaunchUriAsync(new Uri(uri), new Windows.System.LauncherOptions { ContentType = mimeType });

此代码可以在桌面上正常运行。例如,当 URI 是图像的 URI(例如我尝试过的 https://support.files.wordpress.com/2009/07/pigeony.jpg)时,会启动照片应用程序并显示照片。

但在移动设备上,完全相同的代码、完全相同的参数会引发异常。

消息:方法或操作未实现

堆栈跟踪:在 Windows.System.LauncherOptions.put_ContentType(字符串值)在 MyApp.Services.PresentationService.d__7.MoveNext()

问题似乎出在 LauncherOptions 上,因为如果我从调用中删除它们,图像会在浏览器中正常打开。 (但这是不可接受的功能,我需要启动相应的应用程序)。

根据documentation,在 LaunchUriAsync 方法方面,Windows 10 和 Windows 10 移动版之间应该没有区别。有人知道怎么回事吗?

【问题讨论】:

  • 在模拟器中调试时是否遇到同样的错误?另外,您在设备上运行的是什么版本?

标签: uwp windows-10-mobile


【解决方案1】:

根据文档,关于 LaunchUriAsync 方法,Windows 10 和 Windows 10 移动版之间应该没有区别

其实LauncherOptions.ContentType属性只在桌面设备上实现,见here中的备注

重要此属性仅在桌面设备上实现。

-

但这是不可接受的功能,我需要启动相应的应用程序

目前,在移动设备上没有简单/直接的方法来实现这一点,有一些解决方法,例如:将图像下载到本地文件夹/图片文件夹,打开照片应用程序或在您的应用程序中显示它们

var options = new Windows.System.LauncherOptions();
var df = Windows.System.Profile.AnalyticsInfo.VersionInfo.DeviceFamily;
if (df == "Windows.Desktop")
{
            options.ContentType = "image/jpeg";
}
else
{
            //Omitted, save network images into Picture folder

            uriToLaunch = "ms-photos:///"; //Launch Photo app
}
var uri = new Uri(uriToLaunch);
// Launch the URI with the content type
var success = await Windows.System.Launcher.LaunchUriAsync(uri, options);

顺便说一句,请使用 Feedback 应用提交您的功能请求,这是让 MS 了解用户/开发人员需要什么的好方法。

【讨论】:

  • 感谢您的回答@Franklin,这完全让我无法理解。我将保存到临时文件夹,因为我不需要保留图像。我还提交了功能请求。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-15
相关资源
最近更新 更多