Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 6
0
        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);
        }