Uri 激活到 "ms-appdata:///local/"

Uri activation to "ms-appdata:///local/"

运行 下面的代码给了我这个意想不到的结果:

    private async void OpenItemAppBarBtn_Click(object sender, RoutedEventArgs e)
    {
        MediaViewModel media = MyListView.SelectedItem as MediaViewModel;

        if (media.VidOrPic)
        {
            var uriString = "ms-appdata:///local/" + media.Name + ".mp4";
            Uri muUri = new Uri(uriString);
            Launcher.LaunchUriAsync(new Uri(uriString, UriKind.RelativeOrAbsolute));
        }
        else
        {
            var uriString = "ms-appdata:///local/" + media.Name + ".jpeg";
            Uri muUri = new Uri(uriString);
            Launcher.LaunchUriAsync(new Uri(uriString, UriKind.RelativeOrAbsolute));
        }   
    }

UriString 内容:

如果没有默认应用程序与您提供的 Uri 关联,Launcher.LaunchUriAsync 方法始终显示应用程序选择器。

然而,有一个 overload:

Launcher.LaunchUriAsync(Uri, LauncherOptions)

启动器选项允许您设置一个名为 DisplayApplicationPicker 的 属性。如果默认应用程序已定义 并且 您将此值设置为 true,使用重载,应用程序将直接启动,而不显示应用程序选择器。

到运行文件使用Launcher.LaunchFileAsync,而不是Launcher.LaunchUriAsync

var uriString = "ms-appdata:///local/" + media.Name + ".mp4";
Uri muUri = new Uri(uriString);
var file = await StorageFile.GetFileFromApplicationUriAsync(muUri);
await Launcher.LaunchFileAsync(file);