static Task PlatformRequestAsync(ShareMultipleFilesRequest request) { var contentUris = new List <IParcelable>(); var intent = new Intent(Intent.ActionSendMultiple); foreach (var file in request.Files) { contentUris.Add(Platform.GetShareableFileUri(file)); } intent.SetType(request.Files.Count() > 1 ? "*/*" : request.Files.FirstOrDefault().ContentType); intent.SetFlags(ActivityFlags.GrantReadUriPermission); intent.PutParcelableArrayListExtra(Intent.ExtraStream, contentUris); if (!string.IsNullOrEmpty(request.Title)) { intent.PutExtra(Intent.ExtraTitle, request.Title); } var chooserIntent = Intent.CreateChooser(intent, request.Title ?? string.Empty); var flags = ActivityFlags.ClearTop | ActivityFlags.NewTask; chooserIntent.SetFlags(flags); Platform.AppContext.StartActivity(chooserIntent); return(Task.CompletedTask); }
static Task PlatformRequestAsync(ShareMultipleFilesRequest request) { // load the data we need var contentUris = new List <IParcelable>(request.Files.Count); var contentType = default(string); foreach (var file in request.Files) { contentUris.Add(Platform.GetShareableFileUri(file)); if (contentType == null) { contentType = file.ContentType; } else if (contentType != file.ContentType) { contentType = FileSystem.MimeTypes.All; } } var intentType = contentUris.Count > 1 ? Intent.ActionSendMultiple : Intent.ActionSend; var intent = new Intent(intentType); intent.SetType(contentType); intent.SetFlags(ActivityFlags.GrantReadUriPermission); if (contentUris.Count > 1) { intent.PutParcelableArrayListExtra(Intent.ExtraStream, contentUris); } else if (contentUris.Count == 1) { intent.PutExtra(Intent.ExtraStream, contentUris[0]); } if (!string.IsNullOrEmpty(request.Title)) { intent.PutExtra(Intent.ExtraTitle, request.Title); } var chooserIntent = Intent.CreateChooser(intent, request.Title ?? string.Empty); var flags = ActivityFlags.ClearTop | ActivityFlags.NewTask; chooserIntent.SetFlags(flags); Platform.AppContext.StartActivity(chooserIntent); return(Task.CompletedTask); }
static Task PlatformOpenAsync(OpenFileRequest request) { var contentUri = Platform.GetShareableFileUri(request.File.FullPath); var intent = new Intent(Intent.ActionView); intent.SetDataAndType(contentUri, request.File.ContentType); intent.SetFlags(ActivityFlags.GrantReadUriPermission); var chooserIntent = Intent.CreateChooser(intent, request.Title ?? string.Empty); chooserIntent.SetFlags(ActivityFlags.ClearTop); chooserIntent.SetFlags(ActivityFlags.NewTask); Platform.AppContext.StartActivity(chooserIntent); return(Task.CompletedTask); }
static Task PlatformRequestAsync(ShareFileRequest request) { var contentUri = Platform.GetShareableFileUri(request.File); var intent = new Intent(Intent.ActionSend); intent.SetType(request.File.ContentType); intent.SetFlags(ActivityFlags.GrantReadUriPermission); intent.PutExtra(Intent.ExtraStream, contentUri); if (!string.IsNullOrEmpty(request.Title)) { intent.PutExtra(Intent.ExtraTitle, request.Title); } var chooserIntent = Intent.CreateChooser(intent, request.Title ?? string.Empty); var flags = ActivityFlags.ClearTop | ActivityFlags.NewTask; chooserIntent.SetFlags(flags); Platform.AppContext.StartActivity(chooserIntent); return(Task.CompletedTask); }
static Task PlatformOpenAsync(OpenFileRequest request) { var contentUri = Platform.GetShareableFileUri(request.File.FullPath); var intent = new Intent(Intent.ActionView); intent.SetDataAndType(contentUri, request.File.ContentType); intent.SetFlags(ActivityFlags.GrantReadUriPermission); var chooserIntent = Intent.CreateChooser(intent, request.Title ?? string.Empty); var flags = ActivityFlags.ClearTop | ActivityFlags.NewTask; #if __ANDROID_24__ if (Platform.HasApiLevelN) { flags |= ActivityFlags.LaunchAdjacent; } #endif chooserIntent.SetFlags(flags); Platform.AppContext.StartActivity(chooserIntent); return(Task.CompletedTask); }
static Intent CreateIntent(EmailMessage message) { var action = message?.Attachments?.Count > 1 ? Intent.ActionSendMultiple : Intent.ActionSend; var intent = new Intent(action); intent.SetType("message/rfc822"); if (!string.IsNullOrEmpty(message?.Body)) { if (message.BodyFormat == EmailBodyFormat.Html) { ISpanned html; #if __ANDROID_24__ if (Platform.HasApiLevelN) { html = Html.FromHtml(message.Body, FromHtmlOptions.ModeLegacy); } else #endif { #pragma warning disable CS0618 // Type or member is obsolete html = Html.FromHtml(message.Body); #pragma warning restore CS0618 // Type or member is obsolete } intent.PutExtra(Intent.ExtraText, html); } else { intent.PutExtra(Intent.ExtraText, message.Body); } } if (!string.IsNullOrEmpty(message?.Subject)) { intent.PutExtra(Intent.ExtraSubject, message.Subject); } if (message?.To?.Count > 0) { intent.PutExtra(Intent.ExtraEmail, message.To.ToArray()); } if (message?.Cc?.Count > 0) { intent.PutExtra(Intent.ExtraCc, message.Cc.ToArray()); } if (message?.Bcc?.Count > 0) { intent.PutExtra(Intent.ExtraBcc, message.Bcc.ToArray()); } if (message?.Attachments?.Count > 0) { var uris = new List <IParcelable>(); foreach (var attachment in message.Attachments) { uris.Add(Platform.GetShareableFileUri(attachment.FullPath)); } if (uris.Count > 1) { intent.PutParcelableArrayListExtra(Intent.ExtraStream, uris); } else { intent.PutExtra(Intent.ExtraStream, uris[0]); } intent.AddFlags(ActivityFlags.GrantReadUriPermission); } return(intent); }