/// <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)); } }
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)); }
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); }
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); } }
/// <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)); } } }
/// <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)); } }
/// <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); } }
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); } }