示例#1
0
        /// <summary>
        /// Share a message with compatible services
        /// </summary>
        /// <param name="message">Message to share</param>
        /// <param name="options">Platform specific options</param>
        /// <returns>True if the operation was successful, false otherwise</returns>
        public Task <bool> Share(ShareMessage message, ShareOptions options = null)
        {
            if (message == null)
            {
                throw new ArgumentNullException(nameof(message));
            }

            try
            {
                title = message.Title;
                text  = message.Text;
                url   = message.Url;
                if (dataTransferManager == null)
                {
                    dataTransferManager = DataTransferManager.GetForCurrentView();
                    dataTransferManager.DataRequested += new TypedEventHandler <DataTransferManager, DataRequestedEventArgs>(this.ShareTextHandler);
                }
                DataTransferManager.ShowShareUI();

                return(Task.FromResult(true));
            }
            catch (Exception ex)
            {
                Debug.WriteLine("Unable to share: " + ex.Message);
                return(Task.FromResult(false));
            }
        }
        /// <summary>
        /// Share an image with compatible services
        /// </summary>
        /// <param name="image">Path to image to share</param>
        /// <param name="message">Message to share</param>
        /// <param name="options">Platform specific options</param>
        /// <returns>True if the operation was successful, false otherwise</returns>
        public Task <bool> ShareImage(string imagePath, string text = "", ShareOptions options = null)
        {
            if (imagePath == null)
            {
                throw new ArgumentNullException(nameof(imagePath));
            }

            try
            {
                var uri = (Android.Net.Uri.FromFile(new Java.IO.File(imagePath)));

                var intent = new Intent(Intent.ActionSend);
                intent.SetType("image/*");
                sharingIntent.SetFlags(ActivityFlags.GrantReadUriPermission);

                sharingIntent.PutExtra(Intent.ExtraStream, uri);

                if (text != "")
                {
                    intent.PutExtra(Intent.ExtraText, text);
                }

                var chooserIntent = Intent.CreateChooser(intent, options?.ChooserTitle);
                chooserIntent.SetFlags(ActivityFlags.NewTask);
                Application.Context.StartActivity(chooserIntent);

                return(Task.FromResult(true));
            }
            catch (Exception ex)
            {
                Console.WriteLine("Unable to share: " + ex.Message);
                return(Task.FromResult(false));
            }
        }
示例#3
0
        public void Share(string shareMessage, string title = null, string url = null)
        {
            ShareMessage message = new ShareMessage {
                Text = shareMessage, Title = title, Url = url
            };
            ShareOptions options = new ShareOptions {
                ChooserTitle = "share the care"
            };

            CrossShare.Current.Share(message, options);
        }
        public Task <bool> Share(string text, string title = null)
        {
            var shareMessage = new ShareMessage();

            shareMessage.Title = title;
            shareMessage.Text  = text;

            var shareOptions = new ShareOptions();

            shareOptions.ChooserTitle = title;

            return(Share(shareMessage, shareOptions));
        }
        public Task <bool> Share(string message)
        {
            var shareMessage = new ShareMessage();
            var shareOptions = new ShareOptions();

            message +=
                $"{Environment.NewLine}-------------------{Environment.NewLine}Shared by ProductsScanner";

            shareMessage.Text  = message;
            shareMessage.Title = "ProductsScanner";

            return(CrossShare.Current.Share(shareMessage, shareOptions));
        }
        public Task <bool> ShareLink(string url, string message = null, string title = null)
        {
            var shareMessage = new ShareMessage();

            shareMessage.Title = title;
            shareMessage.Text  = message;
            shareMessage.Url   = url;

            var shareOptions = new ShareOptions();

            shareOptions.ChooserTitle = title;

            return(Share(shareMessage, shareOptions));
        }
示例#7
0
        public void share(string options)
        {
            ShareOptions opts = JSON.JsonHelper.Deserialize <ShareOptions>(options);

            switch (opts.shareType)
            {
            case ShareType.Status:
                shareStatus(opts.message);
                break;

            case ShareType.Link:
                shareLink(opts.title, opts.url, opts.message);
                break;
            }
        }
        public void Share(string shareMessage, string title = null, string url = null)
        {
            if (!CrossShare.IsSupported)
            {
                return;
            }

            ShareMessage message = new ShareMessage {
                Text = shareMessage, Title = title, Url = url
            };
            ShareOptions options = new ShareOptions {
                ChooserTitle = "share the awesomeness!"
            };

            CrossShare.Current.Share(message, options);
        }
示例#9
0
        public void ShareMessage(string txtMessage, string link = "", string title = "", string chooserTitle = "Share using")
        {
            ShareMessage message = new ShareMessage()
            {
                Text = txtMessage, Url = link
            };
            ShareOptions options = new ShareOptions()
            {
                ChooserTitle = chooserTitle
            };

            if (CrossShare.IsSupported)
            {
                CrossShare.Current.Share(message, options);
            }
        }
示例#10
0
        /// <summary>
        /// Método para compartilhar as piadas
        /// </summary>
        private async void ShareJoke(object sender, ItemTappedEventArgs e)
        {
            //Atribui o item selecionado ao objeto "Joke"
            Joke joke = (Joke)e.Item;

            //Variável para guardar a opção selecionada
            string opcao = "";

            try
            {
                //Exibe um ActionSheet para o usuário escolher a ação a ser realizada
                var action = await DisplayActionSheet("Compartilhe a piada - " + joke.title, "Cancelar", null, "Compartilhar", "Copiar o texto");

                opcao = action.ToString();
                //Faz um switch entre as opções
                switch (opcao)
                {
                //Se o usuário clicou em "compartilhar"
                case "Compartilhar":
                    //Instancia o objeto ShareMessage que será responsável por
                    //abstrair os métodos de compartilhamento do dispositivo
                    ShareMessage msg = new ShareMessage();
                    //Atribui o titulo
                    msg.Title = joke.title;
                    //Atribui o texto
                    msg.Text = joke.title + Environment.NewLine + joke.body;

                    //Variavel de opções de compartilhamento
                    var opt = new ShareOptions();

                    //Exibe a janela de compartilhamento do Sistema
                    await CrossShare.Current.Share(msg, opt);

                    break;

                case "Copiar o texto":
                    //Copia o texto da piada para a área de transferência
                    await CrossShare.Current.SetClipboardText(joke.title + Environment.NewLine + joke.body);

                    break;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
        /// <summary>
        /// Share a message with compatible services
        /// </summary>
        /// <param name="message">Message to share</param>
        /// <param name="options">Platform specific options</param>
        /// <returns>True if the operation was successful, false otherwise</returns>
        public Task <bool> Share(ShareMessage message, ShareOptions options = null)
        {
            switch (message)
            {
            case null:
                throw new ArgumentNullException(nameof(message));

            default:
                try
                {
                    var items = new List <string>();
                    if (message.Text != null)
                    {
                        items.Add(message.Text);
                    }
                    if (message.Url != null)
                    {
                        items.Add(message.Url);
                    }

                    var intent = new Intent(Intent.ActionSend);
                    intent.SetType("text/plain");
                    intent.PutExtra(Intent.ExtraText, string.Join(Environment.NewLine, items));
                    if (message.Title != null)
                    {
                        intent.PutExtra(Intent.ExtraSubject, message.Title);
                    }

                    var chooserIntent = Intent.CreateChooser(intent, options?.ChooserTitle);
                    chooserIntent.SetFlags(ActivityFlags.ClearTop);
                    chooserIntent.SetFlags(ActivityFlags.NewTask);
                    Application.Context.StartActivity(chooserIntent);

                    return(Task.FromResult(true));
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Unable to share: " + ex.Message);
                    return(Task.FromResult(false));
                }
            }
        }
示例#12
0
        /// <summary>
        /// Share a message with compatible services
        /// </summary>
        /// <param name="message">Message to share</param>
        /// <param name="options">Platform specific options</param>
        /// <returns>True if the operation was successful, false otherwise</returns>
        public Task <bool> Share(ShareMessage message, ShareOptions options = null)
        {
            if (message == null)
            {
                throw new ArgumentNullException(nameof(message));
            }

            try
            {
                if (message.Url == null)
                {
                    // ShareStatusTask
                    var task = new ShareStatusTask
                    {
                        Status = message.Text ?? string.Empty
                    };

                    Deployment.Current.Dispatcher.BeginInvoke(task.Show);
                }
                else
                {
                    // ShareLinkTask
                    var task = new ShareLinkTask
                    {
                        Title   = message.Title ?? string.Empty,
                        Message = message.Text ?? string.Empty,
                        LinkUri = new Uri(message.Url)
                    };

                    Deployment.Current.Dispatcher.BeginInvoke(task.Show);
                }

                return(Task.FromResult(true));
            }
            catch (Exception ex)
            {
                Console.WriteLine("Unable to share: " + ex.Message);
                return(Task.FromResult(false));
            }
        }
        /// <summary>
        /// Share a message with compatible services
        /// </summary>
        /// <param name="message">Message to share</param>
        /// <param name="options">Platform specific options</param>
        /// <returns>True if the operation was successful, false otherwise</returns>
        public Task <bool> Share(ShareMessage message, ShareOptions options = null)
        {
            if (message == null)
            {
                throw new ArgumentNullException(nameof(message));
            }

            try
            {
                string     sharedResourcePath = Application.Current.ApplicationInfo.SharedResourcePath.ToString();
                AppControl appControl         = new AppControl();

                if (options != null)
                {
                    switch (options.ExcludedAppControlTypes)
                    {
                    case ShareAppControlType.FileInEmail:
                        appControl.Operation = AppControlOperations.Share;
                        appControl.Uri       = "mailto:";
                        if (message.Url == null)
                        {
                            throw new ArgumentNullException(nameof(message.Url));
                        }
                        appControl.ExtraData.Add("http://tizen.org/appcontrol/data/path", sharedResourcePath + "/" + message.Url);
                        break;

                    case ShareAppControlType.FileInMessage:
                        appControl.Operation = AppControlOperations.Share;
                        appControl.Uri       = "mmsto:";
                        if (message.Url == null)
                        {
                            throw new ArgumentNullException(nameof(message.Url));
                        }
                        appControl.ExtraData.Add("http://tizen.org/appcontrol/data/path", sharedResourcePath + "/" + message.Url);
                        break;

                    case ShareAppControlType.TextInEmail:
                        appControl.Operation = AppControlOperations.ShareText;
                        appControl.Uri       = "mailto:";
                        if (message.Text == null)
                        {
                            throw new ArgumentNullException(nameof(message.Text));
                        }
                        appControl.ExtraData.Add("http://tizen.org/appcontrol/data/subject", message.Title);
                        appControl.ExtraData.Add("http://tizen.org/appcontrol/data/text", message.Text);
                        //appControl.ExtraData.Add("http://tizen.org/appcontrol/data/url", message.Url);
                        break;

                    case ShareAppControlType.TextInSMS:
                        appControl.Operation = AppControlOperations.ShareText;
                        appControl.Uri       = "sms:";
                        if (message.Text == null)
                        {
                            throw new ArgumentNullException(nameof(message.Text));
                        }
                        appControl.ExtraData.Add("http://tizen.org/appcontrol/data/subject", message.Title);
                        appControl.ExtraData.Add("http://tizen.org/appcontrol/data/text", message.Text);
                        //appControl.ExtraData.Add("http://tizen.org/appcontrol/data/url", message.Url);
                        break;

                    case ShareAppControlType.TextInMMS:
                        appControl.Operation = AppControlOperations.ShareText;
                        appControl.Uri       = "mmsto:";
                        if (message.Text == null)
                        {
                            throw new ArgumentNullException(nameof(message.Text));
                        }
                        appControl.ExtraData.Add("http://tizen.org/appcontrol/data/subject", message.Title);
                        appControl.ExtraData.Add("http://tizen.org/appcontrol/data/text", message.Text);
                        //appControl.ExtraData.Add("http://tizen.org/appcontrol/data/url", message.Url);
                        break;

                    case ShareAppControlType.Link:
                        appControl.Operation = AppControlOperations.ShareText;
                        if (message.Url == null)
                        {
                            throw new ArgumentNullException(nameof(message.Url));
                        }
                        appControl.ExtraData.Add("http://tizen.org/appcontrol/data/subject", message.Title);
                        appControl.ExtraData.Add("http://tizen.org/appcontrol/data/url", message.Text);
                        appControl.ExtraData.Add("http://tizen.org/appcontrol/data/text", message.Url);
                        break;

                    default:
                        appControl.Operation = AppControlOperations.ShareText;
                        appControl.ExtraData.Add("http://tizen.org/appcontrol/data/subject", message.Title);
                        appControl.ExtraData.Add("http://tizen.org/appcontrol/data/text", message.Text);
                        appControl.ExtraData.Add("http://tizen.org/appcontrol/data/url", message.Url);
                        break;
                    }
                }
                else
                {
                    appControl.Operation = AppControlOperations.ShareText;
                    appControl.ExtraData.Add("http://tizen.org/appcontrol/data/subject", message.Title);
                    appControl.ExtraData.Add("http://tizen.org/appcontrol/data/text", message.Text);
                    appControl.ExtraData.Add("http://tizen.org/appcontrol/data/url", message.Url);
                }

                AppControl.SendLaunchRequest(appControl);

                return(Task.FromResult(true));
            }
            catch (Exception ex)
            {
                Debug.WriteLine("Unable to share: " + ex.Message);
                return(Task.FromResult(false));
            }
        }
示例#14
0
        /// <summary>
        /// Share a message with compatible services
        /// </summary>
        /// <param name="message">Message to share</param>
        /// <param name="options">Platform specific options</param>
        /// <returns>True if the operation was successful, false otherwise</returns>
        public async Task <bool> Share(ShareMessage message, ShareOptions options = null)
        {
            if (message == null)
            {
                throw new ArgumentNullException(nameof(message));
            }

            try
            {
                var items = new List <string>();
                if (message.Text != null)
                {
                    items.Add(message.Text);
                }
                if (message.Url != null)
                {
                    items.Add(message.Url);
                }

                var intent = new Intent(Intent.ActionSend);

                intent.PutExtra(Intent.ExtraText, string.Join(Environment.NewLine, items));

                if (message.Title != null)
                {
                    intent.PutExtra(Intent.ExtraSubject, message.Title);
                }

                if (message.Image != null)
                {
                    var handler = new ImageLoaderSourceHandler();
                    var bitmap  = await handler.LoadImageAsync(message.Image, Android.App.Application.Context);

                    var path = Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryDownloads
                                                                                        + Java.IO.File.Separator + Guid.NewGuid().ToString() + ".png");

                    using (var os = new System.IO.FileStream(path.AbsolutePath, System.IO.FileMode.Create))
                    {
                        bitmap.Compress(Bitmap.CompressFormat.Png, 100, os);
                    }

                    intent.SetType("image/*");
                    intent.SetFlags(ActivityFlags.GrantReadUriPermission);
                    intent.PutExtra(Intent.ExtraStream, Android.Net.Uri.FromFile(path));
                }
                else
                {
                    intent.SetType("text/plain");
                }

                var chooserIntent = Intent.CreateChooser(intent, options?.ChooserTitle);
                chooserIntent.SetFlags(ActivityFlags.ClearTop);
                chooserIntent.SetFlags(ActivityFlags.NewTask);
                Application.Context.StartActivity(chooserIntent);

                return(true);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Unable to share: " + ex.Message);
                return(false);
            }
        }
示例#15
0
        public App()
        {
            var button = new Button
            {
                Text = "Share some text"
            };

            var button1 = new Button
            {
                Text = "Share a link"
            };

            var button2 = new Button
            {
                Text = "Open browser"
            };

            var buttonShare = new Button
            {
                Text = "Share"
            };

            var buttonNewPage = new Button
            {
                Text = "Modal Page"
            };

            buttonNewPage.Clicked += async(sender, args) =>
            {
                await Application.Current.MainPage.Navigation.PushModalAsync(new Page1());
            };

            var switchTitle = new Switch {
                IsToggled = true
            };
            var switchText = new Switch {
                IsToggled = true
            };
            var switchUrl = new Switch {
                IsToggled = true
            };
            var switchChooserTitle = new Switch {
                IsToggled = true
            };

            button.Clicked += (sender, args) =>
            {
                CrossShare.Current.Share(new ShareMessage
                {
                    Text  = "Follow @JamesMontemagno on Twitter",
                    Title = "Share"
                },
                                         new ShareOptions
                {
                    ChooserTitle            = "Chooser Title",
                    ExcludedUIActivityTypes = new[] { ShareUIActivityType.PostToFacebook },
                    PopoverAnchorRect       = button.GetScreenRect()
                });
            };

            button1.Clicked += (sender, args) =>
            {
                CrossShare.Current.Share(new Plugin.Share.Abstractions.ShareMessage
                {
                    Text  = "MotzCod.es",
                    Title = "heckout my blog",
                    Url   = "http://motzcod.es"
                }, new ShareOptions
                {
                    PopoverAnchorRect = button1.GetScreenRect()
                });
            };

            button2.Clicked += (sender, args) =>
            {
                CrossShare.Current.OpenBrowser("http://motzcod.es", new BrowserOptions()
                {
                    SafariBarTintColor = new ShareColor(200, 0, 0), SafariControlTintColor = new ShareColor(255, 255, 255), ChromeToolbarColor = new ShareColor(200, 0, 0)
                });
            };

            buttonShare.Clicked += (sender, args) =>
            {
                var shareMessage = new ShareMessage();
                var shareOptions = new ShareOptions {
                    PopoverAnchorRect = buttonShare.GetScreenRect()
                };

                if (switchTitle.IsToggled)
                {
                    shareMessage.Title = "MotzCod.es";
                }
                if (switchText.IsToggled)
                {
                    shareMessage.Text = "Checkout my blog";
                }
                if (switchUrl.IsToggled)
                {
                    shareMessage.Url = "http://motzcod.es";
                }

                if (switchChooserTitle.IsToggled)
                {
                    shareOptions.ChooserTitle = "Share this!";
                }

                CrossShare.Current.Share(shareMessage, shareOptions);
            };

            // The root page of your application
            MainPage = new NavigationPage(new ContentPage
            {
                Content = new StackLayout
                {
                    VerticalOptions = LayoutOptions.Center,
                    Children        =
                    {
                        new Label
                        {
                            XAlign = TextAlignment.Center,
                            Text   = "Welcome to Share Plugin Sample!"
                        },
                        button,
                        button1,
                        button2,
                        buttonNewPage,
                        new Label
                        {
                            XAlign = TextAlignment.Center,
                            Text   = "New sharing options:"
                        },
                        new StackLayout
                        {
                            Orientation = StackOrientation.Horizontal,
                            Children    = { switchTitle, new Label {
                                                Text = "Include title"
                                            } }
                        },
                        new StackLayout
                        {
                            Orientation = StackOrientation.Horizontal,
                            Children    = { switchText, new Label  {
                                                Text = "Include text"
                                            } }
                        },
                        new StackLayout
                        {
                            Orientation = StackOrientation.Horizontal,
                            Children    = { switchUrl, new Label   {
                                                Text = "Include url"
                                            } }
                        },
                        new StackLayout
                        {
                            Orientation = StackOrientation.Horizontal,
                            Children    = { switchChooserTitle, new Label {
                                                Text = "Include chooser title (Android only)"
                                            } }
                        },
                        buttonShare
                    }
                }
            });
        }
 /// <summary>
 /// Share a message with compatible services
 /// </summary>
 /// <param name="message">Message to share</param>
 /// <param name="options">Platform specific options</param>
 /// <returns>True if the operation was successful, false otherwise</returns>
 public Task <bool> Share(ShareMessage message, ShareOptions options = null)
 {
     return(Share(message, options, null));
 }
        /// <summary>
        /// Share a message with compatible services
        /// </summary>
        /// <param name="message">Message to share</param>
        /// <param name="options">Platform specific options</param>
        /// <param name="excludedActivityTypes">UIActivityTypes that should not be displayed</param>
        /// <returns>True if the operation was successful, false otherwise</returns>
        private async Task <bool> Share(ShareMessage message, ShareOptions options = null, params NSString[] excludedActivityTypes)
        {
            if (message == null)
            {
                throw new ArgumentNullException(nameof(message));
            }

            try
            {
                // create activity items
                var items = new List <NSObject>();
                if (message.Text != null)
                {
                    items.Add(new ShareActivityItemSource(new NSString(message.Text), message.Title));
                }
                if (message.Url != null)
                {
                    items.Add(new ShareActivityItemSource(NSUrl.FromString(message.Url), message.Title));
                }

                // create activity controller
                var activityController = new UIActivityViewController(items.ToArray(), null);

                // set excluded activity types
                if (excludedActivityTypes == null)
                {
                    // use ShareOptions.ExcludedUIActivityTypes
                    excludedActivityTypes = options?.ExcludedUIActivityTypes?.Select(x => GetUIActivityType(x)).Where(x => x != null).ToArray();
                }

                if (excludedActivityTypes == null)
                {
                    // use ShareImplementation.ExcludedUIActivityTypes
                    excludedActivityTypes = ExcludedUIActivityTypes?.ToArray();
                }

                if (excludedActivityTypes != null && excludedActivityTypes.Length > 0)
                {
                    activityController.ExcludedActivityTypes = excludedActivityTypes;
                }

                // show activity controller
                var vc = GetVisibleViewController();

                if (UIDevice.CurrentDevice.CheckSystemVersion(8, 0))
                {
                    if (activityController.PopoverPresentationController != null)
                    {
                        activityController.PopoverPresentationController.SourceView = vc.View;

                        var rect = options?.PopoverAnchorRectangle;
                        if (rect != null)
                        {
                            activityController.PopoverPresentationController.SourceRect = new CGRect(rect.X, rect.Y, rect.Width, rect.Height);
                        }
                    }
                }

                await vc.PresentViewControllerAsync(activityController, true);

                return(true);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Unable to share: " + ex.Message);
                return(false);
            }
        }