/// <summary> /// Processes the given intent, loading files passed using content resolver. /// </summary> /// <param name="intent">intent to process</param> private void ProcessIntent(Intent intent) { try { if (intent.DataString != null && intent.DataString.StartsWith(Shared.Model.AppResourceUri.DefaultScheme)) { Core.App.OpenAppResourceUri(intent.DataString); return; } var helper = new IntentFilterHelper(this.ContentResolver); string filename = Path.GetFileName(helper.GetFilenameFromIntent(intent)); if (filename == null) { return; } var stream = helper.GetStreamFromIntent(intent); if (stream != null) { Core.App.RunOnUiThread(async() => await OpenFileHelper.OpenFileAsync(stream, filename)); } } catch (Exception) { // ignore errors } }
/// <summary> /// Called when a file associated with the UWP app is opened. /// </summary> /// <param name="args">file activation event args</param> protected override void OnFileActivated(FileActivatedEventArgs args) { this.SetupRootFrame(args, null); if (args.Files.Count > 0) { var file = args.Files[0] as StorageFile; Core.App.RunOnUiThread(async() => { using var stream = await file.OpenStreamForReadAsync(); await OpenFileHelper.OpenFileAsync(stream, file.Name); }); } }
/// <summary> /// Called when a file is dropped onto the main page /// </summary> /// <param name="sender">sender object</param> /// <param name="args">event args</param> private async void OnDrop(object sender, DragEventArgs args) { if (args.DataView.Contains(StandardDataFormats.StorageItems)) { var items = await args.DataView.GetStorageItemsAsync(); if (items.Count > 0) { var file = items[0] as StorageFile; Core.App.RunOnUiThread(async() => { using var stream = await file.OpenStreamForReadAsync(); await OpenFileHelper.OpenFileAsync(stream, file.Name); }); } } }