public BlobDetailsViewModel(INavigation navigation, CloudBlob blob) : base(navigation) { Blob = blob; BlobFileExtension = System.IO.Path.GetExtension(blob.Name); BlobFileType = MediaTypeMapper.GetFileTypeFromExtension(BlobFileExtension); }
async Task ExecuteShareBlobCommandAsync() { if (IsBusy) { return; } App.Logger.Track(AppEvent.ShareBlob.ToString()); if (HasBlobBeenSaved) { try { #if __ANDROID__ string mimeType = MediaTypeMapper.GetMimeType(BlobFileExtension); Android.Net.Uri uri = Android.Net.Uri.Parse("file:///" + GetBlobFilePath()); Intent intent = new Intent(Intent.ActionView); intent.SetDataAndType(uri, mimeType); intent.SetFlags(ActivityFlags.ClearWhenTaskReset | ActivityFlags.NewTask); try { Xamarin.Forms.Forms.Context.StartActivity(intent); } catch (Exception ex) { MessagingService.Current.SendMessage <MessagingServiceAlert>(MessageKeys.Message, new MessagingServiceAlert { Title = "Unable to Share", Message = "No applications available to open files of type " + BlobFileExtension, Cancel = "OK" }); throw ex; } #elif __IOS__ var extensionClassRef = new NSString(UTType.TagClassFilenameExtension); var mimeTypeClassRef = new NSString(UTType.TagClassMIMEType); var uti = NativeTools.UTTypeCreatePreferredIdentifierForTag(extensionClassRef.Handle, new NSString(BlobFileExtension).Handle, IntPtr.Zero); //TODO: open file based off of type var fi = NSData.FromFile(GetBlobFilePath()); var item = NSObject.FromObject(fi); var activityItems = new[] { item }; var activityController = new UIActivityViewController(activityItems, null); var topController = UIApplication.SharedApplication.KeyWindow.RootViewController; while (topController.PresentedViewController != null) { topController = topController.PresentedViewController; } topController.PresentViewController(activityController, true, () => { }); #endif } catch (Exception ex) { App.Logger.Report(ex, Severity.Error); } } }