Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 4.0 在xamarin表单中,如何与facebook和g+;和推特_C# 4.0_Xamarin_Xamarin.forms_Xamarin Studio - Fatal编程技术网

C# 4.0 在xamarin表单中,如何与facebook和g+;和推特

C# 4.0 在xamarin表单中,如何与facebook和g+;和推特,c#-4.0,xamarin,xamarin.forms,xamarin-studio,C# 4.0,Xamarin,Xamarin.forms,Xamarin Studio,我为Xamarin表单应用程序工作,在那里我必须与社交网络共享图像和文本。我试过使用Xamarin.auth插件,但它对我不起作用。请推荐其他用于社交共享的插件。在PCL中: using System; using Xamarin.Forms; namespace ShareSample { public interface IShare { void Share(string subject, string message, ImageSource image); }

我为Xamarin表单应用程序工作,在那里我必须与社交网络共享图像和文本。我试过使用Xamarin.auth插件,但它对我不起作用。请推荐其他用于社交共享的插件。

在PCL中:

using System;
using Xamarin.Forms;

namespace ShareSample
{
  public interface IShare
  {
     void Share(string subject, string message, ImageSource image);
  }
}
using Android.App;
using Android.Content;
using Android.Graphics;
using Android.OS;
using ShareSample.Droid;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;

[assembly: Dependency(typeof(IShareService))]
namespace ShareSample.Droid
{
  public class IShareService : Activity, IShare
  {
     public async void Share(string subject, string message, 
     ImageSource image)
    {
        var intent = new Intent(Intent.ActionSend);
        //intent.PutExtra(Intent.ExtraSubject, subject);
        intent.PutExtra(Intent.ExtraText, message);
        intent.SetType("image/png");

        var handler = new ImageLoaderSourceHandler();
        var bitmap = await handler.LoadImageAsync(image, this);

        var path = Environment.GetExternalStoragePublicDirectory(Environment.DirectoryDownloads
            + Java.IO.File.Separator + "logo.png");

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

        intent.PutExtra(Intent.ExtraStream, Android.Net.Uri.FromFile(path));
        Forms.Context.StartActivity(Intent.CreateChooser(intent, "Share Image"));
    }
}
 using Foundation;
 using ShareSample.iOS;
 using UIKit;
 using Xamarin.Forms;
 using Xamarin.Forms.Platform.iOS;

 [assembly: Dependency(typeof(IShareService))]
 namespace ShareSample.iOS
 {
  public class IShareService : IShare
  {
    public async void Share(string subject, string message, ImageSource image)
    {
        var handler = new ImageLoaderSourceHandler();
        var uiImage = await handler.LoadImageAsync(image);

        var img = NSObject.FromObject(uiImage);
        var mess = NSObject.FromObject(message);

        var activityItems = new[] { mess, img };
        var activityController = new UIActivityViewController(activityItems, null);

        var topController = UIApplication.SharedApplication.KeyWindow.RootViewController;

        while (topController.PresentedViewController != null)
        {
            topController = topController.PresentedViewController;
        }

        topController.PresentViewController(activityController, true, () => { });
    }

  }
  using System;
  using Xamarin.Forms;

 namespace ShareSample
 {
    public class SharePage : ContentPage
    {
      public SharePage()
      {
        Button sharebutton = new Button()
        {
            Text = "Share",
            HorizontalOptions = LayoutOptions.FillAndExpand,
            VerticalOptions = LayoutOptions.CenterAndExpand,
            TextColor = Color.White,
            BackgroundColor = Color.Blue

        };

        Image img = new Image()
        {
            Source = "http://www.wintellect.com/devcenter/wp-content/uploads/2013/10/Wintellect_logo.gif",
            Aspect = Aspect.AspectFit
        };

        sharebutton.Clicked += (sender, e) =>
        {
            DependencyService.Get<IShare>().Share(" ", "Hi Balaraju. How are you?", img.Source);
        };

        StackLayout stack = new StackLayout()
        {
            HorizontalOptions = LayoutOptions.FillAndExpand,
            VerticalOptions = LayoutOptions.FillAndExpand,
            BackgroundColor = Color.Aqua,
            Children = { sharebutton }
        };

        Content = stack;
        Padding = new Thickness(0, 20, 0, 0);
    }
  }
 }
Xamarin.Android:

using System;
using Xamarin.Forms;

namespace ShareSample
{
  public interface IShare
  {
     void Share(string subject, string message, ImageSource image);
  }
}
using Android.App;
using Android.Content;
using Android.Graphics;
using Android.OS;
using ShareSample.Droid;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;

[assembly: Dependency(typeof(IShareService))]
namespace ShareSample.Droid
{
  public class IShareService : Activity, IShare
  {
     public async void Share(string subject, string message, 
     ImageSource image)
    {
        var intent = new Intent(Intent.ActionSend);
        //intent.PutExtra(Intent.ExtraSubject, subject);
        intent.PutExtra(Intent.ExtraText, message);
        intent.SetType("image/png");

        var handler = new ImageLoaderSourceHandler();
        var bitmap = await handler.LoadImageAsync(image, this);

        var path = Environment.GetExternalStoragePublicDirectory(Environment.DirectoryDownloads
            + Java.IO.File.Separator + "logo.png");

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

        intent.PutExtra(Intent.ExtraStream, Android.Net.Uri.FromFile(path));
        Forms.Context.StartActivity(Intent.CreateChooser(intent, "Share Image"));
    }
}
 using Foundation;
 using ShareSample.iOS;
 using UIKit;
 using Xamarin.Forms;
 using Xamarin.Forms.Platform.iOS;

 [assembly: Dependency(typeof(IShareService))]
 namespace ShareSample.iOS
 {
  public class IShareService : IShare
  {
    public async void Share(string subject, string message, ImageSource image)
    {
        var handler = new ImageLoaderSourceHandler();
        var uiImage = await handler.LoadImageAsync(image);

        var img = NSObject.FromObject(uiImage);
        var mess = NSObject.FromObject(message);

        var activityItems = new[] { mess, img };
        var activityController = new UIActivityViewController(activityItems, null);

        var topController = UIApplication.SharedApplication.KeyWindow.RootViewController;

        while (topController.PresentedViewController != null)
        {
            topController = topController.PresentedViewController;
        }

        topController.PresentViewController(activityController, true, () => { });
    }

  }
  using System;
  using Xamarin.Forms;

 namespace ShareSample
 {
    public class SharePage : ContentPage
    {
      public SharePage()
      {
        Button sharebutton = new Button()
        {
            Text = "Share",
            HorizontalOptions = LayoutOptions.FillAndExpand,
            VerticalOptions = LayoutOptions.CenterAndExpand,
            TextColor = Color.White,
            BackgroundColor = Color.Blue

        };

        Image img = new Image()
        {
            Source = "http://www.wintellect.com/devcenter/wp-content/uploads/2013/10/Wintellect_logo.gif",
            Aspect = Aspect.AspectFit
        };

        sharebutton.Clicked += (sender, e) =>
        {
            DependencyService.Get<IShare>().Share(" ", "Hi Balaraju. How are you?", img.Source);
        };

        StackLayout stack = new StackLayout()
        {
            HorizontalOptions = LayoutOptions.FillAndExpand,
            VerticalOptions = LayoutOptions.FillAndExpand,
            BackgroundColor = Color.Aqua,
            Children = { sharebutton }
        };

        Content = stack;
        Padding = new Thickness(0, 20, 0, 0);
    }
  }
 }
}

Xamarin.iOS:

using System;
using Xamarin.Forms;

namespace ShareSample
{
  public interface IShare
  {
     void Share(string subject, string message, ImageSource image);
  }
}
using Android.App;
using Android.Content;
using Android.Graphics;
using Android.OS;
using ShareSample.Droid;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;

[assembly: Dependency(typeof(IShareService))]
namespace ShareSample.Droid
{
  public class IShareService : Activity, IShare
  {
     public async void Share(string subject, string message, 
     ImageSource image)
    {
        var intent = new Intent(Intent.ActionSend);
        //intent.PutExtra(Intent.ExtraSubject, subject);
        intent.PutExtra(Intent.ExtraText, message);
        intent.SetType("image/png");

        var handler = new ImageLoaderSourceHandler();
        var bitmap = await handler.LoadImageAsync(image, this);

        var path = Environment.GetExternalStoragePublicDirectory(Environment.DirectoryDownloads
            + Java.IO.File.Separator + "logo.png");

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

        intent.PutExtra(Intent.ExtraStream, Android.Net.Uri.FromFile(path));
        Forms.Context.StartActivity(Intent.CreateChooser(intent, "Share Image"));
    }
}
 using Foundation;
 using ShareSample.iOS;
 using UIKit;
 using Xamarin.Forms;
 using Xamarin.Forms.Platform.iOS;

 [assembly: Dependency(typeof(IShareService))]
 namespace ShareSample.iOS
 {
  public class IShareService : IShare
  {
    public async void Share(string subject, string message, ImageSource image)
    {
        var handler = new ImageLoaderSourceHandler();
        var uiImage = await handler.LoadImageAsync(image);

        var img = NSObject.FromObject(uiImage);
        var mess = NSObject.FromObject(message);

        var activityItems = new[] { mess, img };
        var activityController = new UIActivityViewController(activityItems, null);

        var topController = UIApplication.SharedApplication.KeyWindow.RootViewController;

        while (topController.PresentedViewController != null)
        {
            topController = topController.PresentedViewController;
        }

        topController.PresentViewController(activityController, true, () => { });
    }

  }
  using System;
  using Xamarin.Forms;

 namespace ShareSample
 {
    public class SharePage : ContentPage
    {
      public SharePage()
      {
        Button sharebutton = new Button()
        {
            Text = "Share",
            HorizontalOptions = LayoutOptions.FillAndExpand,
            VerticalOptions = LayoutOptions.CenterAndExpand,
            TextColor = Color.White,
            BackgroundColor = Color.Blue

        };

        Image img = new Image()
        {
            Source = "http://www.wintellect.com/devcenter/wp-content/uploads/2013/10/Wintellect_logo.gif",
            Aspect = Aspect.AspectFit
        };

        sharebutton.Clicked += (sender, e) =>
        {
            DependencyService.Get<IShare>().Share(" ", "Hi Balaraju. How are you?", img.Source);
        };

        StackLayout stack = new StackLayout()
        {
            HorizontalOptions = LayoutOptions.FillAndExpand,
            VerticalOptions = LayoutOptions.FillAndExpand,
            BackgroundColor = Color.Aqua,
            Children = { sharebutton }
        };

        Content = stack;
        Padding = new Thickness(0, 20, 0, 0);
    }
  }
 }
}

在PCL呼叫相关服务中:

using System;
using Xamarin.Forms;

namespace ShareSample
{
  public interface IShare
  {
     void Share(string subject, string message, ImageSource image);
  }
}
using Android.App;
using Android.Content;
using Android.Graphics;
using Android.OS;
using ShareSample.Droid;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;

[assembly: Dependency(typeof(IShareService))]
namespace ShareSample.Droid
{
  public class IShareService : Activity, IShare
  {
     public async void Share(string subject, string message, 
     ImageSource image)
    {
        var intent = new Intent(Intent.ActionSend);
        //intent.PutExtra(Intent.ExtraSubject, subject);
        intent.PutExtra(Intent.ExtraText, message);
        intent.SetType("image/png");

        var handler = new ImageLoaderSourceHandler();
        var bitmap = await handler.LoadImageAsync(image, this);

        var path = Environment.GetExternalStoragePublicDirectory(Environment.DirectoryDownloads
            + Java.IO.File.Separator + "logo.png");

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

        intent.PutExtra(Intent.ExtraStream, Android.Net.Uri.FromFile(path));
        Forms.Context.StartActivity(Intent.CreateChooser(intent, "Share Image"));
    }
}
 using Foundation;
 using ShareSample.iOS;
 using UIKit;
 using Xamarin.Forms;
 using Xamarin.Forms.Platform.iOS;

 [assembly: Dependency(typeof(IShareService))]
 namespace ShareSample.iOS
 {
  public class IShareService : IShare
  {
    public async void Share(string subject, string message, ImageSource image)
    {
        var handler = new ImageLoaderSourceHandler();
        var uiImage = await handler.LoadImageAsync(image);

        var img = NSObject.FromObject(uiImage);
        var mess = NSObject.FromObject(message);

        var activityItems = new[] { mess, img };
        var activityController = new UIActivityViewController(activityItems, null);

        var topController = UIApplication.SharedApplication.KeyWindow.RootViewController;

        while (topController.PresentedViewController != null)
        {
            topController = topController.PresentedViewController;
        }

        topController.PresentViewController(activityController, true, () => { });
    }

  }
  using System;
  using Xamarin.Forms;

 namespace ShareSample
 {
    public class SharePage : ContentPage
    {
      public SharePage()
      {
        Button sharebutton = new Button()
        {
            Text = "Share",
            HorizontalOptions = LayoutOptions.FillAndExpand,
            VerticalOptions = LayoutOptions.CenterAndExpand,
            TextColor = Color.White,
            BackgroundColor = Color.Blue

        };

        Image img = new Image()
        {
            Source = "http://www.wintellect.com/devcenter/wp-content/uploads/2013/10/Wintellect_logo.gif",
            Aspect = Aspect.AspectFit
        };

        sharebutton.Clicked += (sender, e) =>
        {
            DependencyService.Get<IShare>().Share(" ", "Hi Balaraju. How are you?", img.Source);
        };

        StackLayout stack = new StackLayout()
        {
            HorizontalOptions = LayoutOptions.FillAndExpand,
            VerticalOptions = LayoutOptions.FillAndExpand,
            BackgroundColor = Color.Aqua,
            Children = { sharebutton }
        };

        Content = stack;
        Padding = new Thickness(0, 20, 0, 0);
    }
  }
 }
在设备中没有应用程序时:

使用Xamarin.Auth


在PCL中:

using System;
using Xamarin.Forms;

namespace ShareSample
{
  public interface IShare
  {
     void Share(string subject, string message, ImageSource image);
  }
}
using Android.App;
using Android.Content;
using Android.Graphics;
using Android.OS;
using ShareSample.Droid;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;

[assembly: Dependency(typeof(IShareService))]
namespace ShareSample.Droid
{
  public class IShareService : Activity, IShare
  {
     public async void Share(string subject, string message, 
     ImageSource image)
    {
        var intent = new Intent(Intent.ActionSend);
        //intent.PutExtra(Intent.ExtraSubject, subject);
        intent.PutExtra(Intent.ExtraText, message);
        intent.SetType("image/png");

        var handler = new ImageLoaderSourceHandler();
        var bitmap = await handler.LoadImageAsync(image, this);

        var path = Environment.GetExternalStoragePublicDirectory(Environment.DirectoryDownloads
            + Java.IO.File.Separator + "logo.png");

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

        intent.PutExtra(Intent.ExtraStream, Android.Net.Uri.FromFile(path));
        Forms.Context.StartActivity(Intent.CreateChooser(intent, "Share Image"));
    }
}
 using Foundation;
 using ShareSample.iOS;
 using UIKit;
 using Xamarin.Forms;
 using Xamarin.Forms.Platform.iOS;

 [assembly: Dependency(typeof(IShareService))]
 namespace ShareSample.iOS
 {
  public class IShareService : IShare
  {
    public async void Share(string subject, string message, ImageSource image)
    {
        var handler = new ImageLoaderSourceHandler();
        var uiImage = await handler.LoadImageAsync(image);

        var img = NSObject.FromObject(uiImage);
        var mess = NSObject.FromObject(message);

        var activityItems = new[] { mess, img };
        var activityController = new UIActivityViewController(activityItems, null);

        var topController = UIApplication.SharedApplication.KeyWindow.RootViewController;

        while (topController.PresentedViewController != null)
        {
            topController = topController.PresentedViewController;
        }

        topController.PresentViewController(activityController, true, () => { });
    }

  }
  using System;
  using Xamarin.Forms;

 namespace ShareSample
 {
    public class SharePage : ContentPage
    {
      public SharePage()
      {
        Button sharebutton = new Button()
        {
            Text = "Share",
            HorizontalOptions = LayoutOptions.FillAndExpand,
            VerticalOptions = LayoutOptions.CenterAndExpand,
            TextColor = Color.White,
            BackgroundColor = Color.Blue

        };

        Image img = new Image()
        {
            Source = "http://www.wintellect.com/devcenter/wp-content/uploads/2013/10/Wintellect_logo.gif",
            Aspect = Aspect.AspectFit
        };

        sharebutton.Clicked += (sender, e) =>
        {
            DependencyService.Get<IShare>().Share(" ", "Hi Balaraju. How are you?", img.Source);
        };

        StackLayout stack = new StackLayout()
        {
            HorizontalOptions = LayoutOptions.FillAndExpand,
            VerticalOptions = LayoutOptions.FillAndExpand,
            BackgroundColor = Color.Aqua,
            Children = { sharebutton }
        };

        Content = stack;
        Padding = new Thickness(0, 20, 0, 0);
    }
  }
 }
Xamarin.Android:

using System;
using Xamarin.Forms;

namespace ShareSample
{
  public interface IShare
  {
     void Share(string subject, string message, ImageSource image);
  }
}
using Android.App;
using Android.Content;
using Android.Graphics;
using Android.OS;
using ShareSample.Droid;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;

[assembly: Dependency(typeof(IShareService))]
namespace ShareSample.Droid
{
  public class IShareService : Activity, IShare
  {
     public async void Share(string subject, string message, 
     ImageSource image)
    {
        var intent = new Intent(Intent.ActionSend);
        //intent.PutExtra(Intent.ExtraSubject, subject);
        intent.PutExtra(Intent.ExtraText, message);
        intent.SetType("image/png");

        var handler = new ImageLoaderSourceHandler();
        var bitmap = await handler.LoadImageAsync(image, this);

        var path = Environment.GetExternalStoragePublicDirectory(Environment.DirectoryDownloads
            + Java.IO.File.Separator + "logo.png");

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

        intent.PutExtra(Intent.ExtraStream, Android.Net.Uri.FromFile(path));
        Forms.Context.StartActivity(Intent.CreateChooser(intent, "Share Image"));
    }
}
 using Foundation;
 using ShareSample.iOS;
 using UIKit;
 using Xamarin.Forms;
 using Xamarin.Forms.Platform.iOS;

 [assembly: Dependency(typeof(IShareService))]
 namespace ShareSample.iOS
 {
  public class IShareService : IShare
  {
    public async void Share(string subject, string message, ImageSource image)
    {
        var handler = new ImageLoaderSourceHandler();
        var uiImage = await handler.LoadImageAsync(image);

        var img = NSObject.FromObject(uiImage);
        var mess = NSObject.FromObject(message);

        var activityItems = new[] { mess, img };
        var activityController = new UIActivityViewController(activityItems, null);

        var topController = UIApplication.SharedApplication.KeyWindow.RootViewController;

        while (topController.PresentedViewController != null)
        {
            topController = topController.PresentedViewController;
        }

        topController.PresentViewController(activityController, true, () => { });
    }

  }
  using System;
  using Xamarin.Forms;

 namespace ShareSample
 {
    public class SharePage : ContentPage
    {
      public SharePage()
      {
        Button sharebutton = new Button()
        {
            Text = "Share",
            HorizontalOptions = LayoutOptions.FillAndExpand,
            VerticalOptions = LayoutOptions.CenterAndExpand,
            TextColor = Color.White,
            BackgroundColor = Color.Blue

        };

        Image img = new Image()
        {
            Source = "http://www.wintellect.com/devcenter/wp-content/uploads/2013/10/Wintellect_logo.gif",
            Aspect = Aspect.AspectFit
        };

        sharebutton.Clicked += (sender, e) =>
        {
            DependencyService.Get<IShare>().Share(" ", "Hi Balaraju. How are you?", img.Source);
        };

        StackLayout stack = new StackLayout()
        {
            HorizontalOptions = LayoutOptions.FillAndExpand,
            VerticalOptions = LayoutOptions.FillAndExpand,
            BackgroundColor = Color.Aqua,
            Children = { sharebutton }
        };

        Content = stack;
        Padding = new Thickness(0, 20, 0, 0);
    }
  }
 }
}

Xamarin.iOS:

using System;
using Xamarin.Forms;

namespace ShareSample
{
  public interface IShare
  {
     void Share(string subject, string message, ImageSource image);
  }
}
using Android.App;
using Android.Content;
using Android.Graphics;
using Android.OS;
using ShareSample.Droid;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;

[assembly: Dependency(typeof(IShareService))]
namespace ShareSample.Droid
{
  public class IShareService : Activity, IShare
  {
     public async void Share(string subject, string message, 
     ImageSource image)
    {
        var intent = new Intent(Intent.ActionSend);
        //intent.PutExtra(Intent.ExtraSubject, subject);
        intent.PutExtra(Intent.ExtraText, message);
        intent.SetType("image/png");

        var handler = new ImageLoaderSourceHandler();
        var bitmap = await handler.LoadImageAsync(image, this);

        var path = Environment.GetExternalStoragePublicDirectory(Environment.DirectoryDownloads
            + Java.IO.File.Separator + "logo.png");

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

        intent.PutExtra(Intent.ExtraStream, Android.Net.Uri.FromFile(path));
        Forms.Context.StartActivity(Intent.CreateChooser(intent, "Share Image"));
    }
}
 using Foundation;
 using ShareSample.iOS;
 using UIKit;
 using Xamarin.Forms;
 using Xamarin.Forms.Platform.iOS;

 [assembly: Dependency(typeof(IShareService))]
 namespace ShareSample.iOS
 {
  public class IShareService : IShare
  {
    public async void Share(string subject, string message, ImageSource image)
    {
        var handler = new ImageLoaderSourceHandler();
        var uiImage = await handler.LoadImageAsync(image);

        var img = NSObject.FromObject(uiImage);
        var mess = NSObject.FromObject(message);

        var activityItems = new[] { mess, img };
        var activityController = new UIActivityViewController(activityItems, null);

        var topController = UIApplication.SharedApplication.KeyWindow.RootViewController;

        while (topController.PresentedViewController != null)
        {
            topController = topController.PresentedViewController;
        }

        topController.PresentViewController(activityController, true, () => { });
    }

  }
  using System;
  using Xamarin.Forms;

 namespace ShareSample
 {
    public class SharePage : ContentPage
    {
      public SharePage()
      {
        Button sharebutton = new Button()
        {
            Text = "Share",
            HorizontalOptions = LayoutOptions.FillAndExpand,
            VerticalOptions = LayoutOptions.CenterAndExpand,
            TextColor = Color.White,
            BackgroundColor = Color.Blue

        };

        Image img = new Image()
        {
            Source = "http://www.wintellect.com/devcenter/wp-content/uploads/2013/10/Wintellect_logo.gif",
            Aspect = Aspect.AspectFit
        };

        sharebutton.Clicked += (sender, e) =>
        {
            DependencyService.Get<IShare>().Share(" ", "Hi Balaraju. How are you?", img.Source);
        };

        StackLayout stack = new StackLayout()
        {
            HorizontalOptions = LayoutOptions.FillAndExpand,
            VerticalOptions = LayoutOptions.FillAndExpand,
            BackgroundColor = Color.Aqua,
            Children = { sharebutton }
        };

        Content = stack;
        Padding = new Thickness(0, 20, 0, 0);
    }
  }
 }
}

在PCL呼叫相关服务中:

using System;
using Xamarin.Forms;

namespace ShareSample
{
  public interface IShare
  {
     void Share(string subject, string message, ImageSource image);
  }
}
using Android.App;
using Android.Content;
using Android.Graphics;
using Android.OS;
using ShareSample.Droid;
using Xamarin.Forms;
using Xamarin.Forms.Platform.Android;

[assembly: Dependency(typeof(IShareService))]
namespace ShareSample.Droid
{
  public class IShareService : Activity, IShare
  {
     public async void Share(string subject, string message, 
     ImageSource image)
    {
        var intent = new Intent(Intent.ActionSend);
        //intent.PutExtra(Intent.ExtraSubject, subject);
        intent.PutExtra(Intent.ExtraText, message);
        intent.SetType("image/png");

        var handler = new ImageLoaderSourceHandler();
        var bitmap = await handler.LoadImageAsync(image, this);

        var path = Environment.GetExternalStoragePublicDirectory(Environment.DirectoryDownloads
            + Java.IO.File.Separator + "logo.png");

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

        intent.PutExtra(Intent.ExtraStream, Android.Net.Uri.FromFile(path));
        Forms.Context.StartActivity(Intent.CreateChooser(intent, "Share Image"));
    }
}
 using Foundation;
 using ShareSample.iOS;
 using UIKit;
 using Xamarin.Forms;
 using Xamarin.Forms.Platform.iOS;

 [assembly: Dependency(typeof(IShareService))]
 namespace ShareSample.iOS
 {
  public class IShareService : IShare
  {
    public async void Share(string subject, string message, ImageSource image)
    {
        var handler = new ImageLoaderSourceHandler();
        var uiImage = await handler.LoadImageAsync(image);

        var img = NSObject.FromObject(uiImage);
        var mess = NSObject.FromObject(message);

        var activityItems = new[] { mess, img };
        var activityController = new UIActivityViewController(activityItems, null);

        var topController = UIApplication.SharedApplication.KeyWindow.RootViewController;

        while (topController.PresentedViewController != null)
        {
            topController = topController.PresentedViewController;
        }

        topController.PresentViewController(activityController, true, () => { });
    }

  }
  using System;
  using Xamarin.Forms;

 namespace ShareSample
 {
    public class SharePage : ContentPage
    {
      public SharePage()
      {
        Button sharebutton = new Button()
        {
            Text = "Share",
            HorizontalOptions = LayoutOptions.FillAndExpand,
            VerticalOptions = LayoutOptions.CenterAndExpand,
            TextColor = Color.White,
            BackgroundColor = Color.Blue

        };

        Image img = new Image()
        {
            Source = "http://www.wintellect.com/devcenter/wp-content/uploads/2013/10/Wintellect_logo.gif",
            Aspect = Aspect.AspectFit
        };

        sharebutton.Clicked += (sender, e) =>
        {
            DependencyService.Get<IShare>().Share(" ", "Hi Balaraju. How are you?", img.Source);
        };

        StackLayout stack = new StackLayout()
        {
            HorizontalOptions = LayoutOptions.FillAndExpand,
            VerticalOptions = LayoutOptions.FillAndExpand,
            BackgroundColor = Color.Aqua,
            Children = { sharebutton }
        };

        Content = stack;
        Padding = new Thickness(0, 20, 0, 0);
    }
  }
 }
在设备中没有应用程序时:

使用Xamarin.Auth


对于那些仍在寻找的人,我在Xamarin.Android为Venkata Swamy的代码添加了一些修复,它不再适用于不推荐的函数等

    public async void Share(string message, ImageSource image)
    {
        var intent = new Intent(Intent.ActionSend);
        intent.PutExtra(Intent.ExtraText, message);
        intent.SetType("image/png");

        IImageSourceHandler handler = null;
        if (image is UriImageSource)
            handler = new ImageLoaderSourceHandler();
        else if (image is FileImageSource)
            handler = new FileImageSourceHandler();
        else if (image is StreamImageSource) handler = new StreamImagesourceHandler();
        var bitmap = await handler.LoadImageAsync(image, Application.Context);

        var path = Environment.GetExternalStoragePublicDirectory(Environment.DirectoryDownloads + File.Separator + "logo.png");

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

        var imageUri = FileProvider.GetUriForFile(Application.Context, "com.uajy.atmarewards.fileprovider", path);
        intent.PutExtra(Intent.ExtraStream, imageUri);
        var newIntent = Intent.CreateChooser(intent, "Share Image");
        newIntent.SetFlags(ActivityFlags.NewTask);
        Application.Context.StartActivity(newIntent);
    }

我没有使用subject参数,所以我删除了它。文本不知怎么没有显示出来,我还没有找到解决办法。对于任何找到显示消息文本的方法的人,请给出答案和评论,以便我能够找到您的修复程序。

对于那些仍在寻找的人,我在Xamarin.Android为Venkata Swamy的代码添加了一些修复程序,对于不推荐使用的功能等,它不再起作用

    public async void Share(string message, ImageSource image)
    {
        var intent = new Intent(Intent.ActionSend);
        intent.PutExtra(Intent.ExtraText, message);
        intent.SetType("image/png");

        IImageSourceHandler handler = null;
        if (image is UriImageSource)
            handler = new ImageLoaderSourceHandler();
        else if (image is FileImageSource)
            handler = new FileImageSourceHandler();
        else if (image is StreamImageSource) handler = new StreamImagesourceHandler();
        var bitmap = await handler.LoadImageAsync(image, Application.Context);

        var path = Environment.GetExternalStoragePublicDirectory(Environment.DirectoryDownloads + File.Separator + "logo.png");

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

        var imageUri = FileProvider.GetUriForFile(Application.Context, "com.uajy.atmarewards.fileprovider", path);
        intent.PutExtra(Intent.ExtraStream, imageUri);
        var newIntent = Intent.CreateChooser(intent, "Share Image");
        newIntent.SetFlags(ActivityFlags.NewTask);
        Application.Context.StartActivity(newIntent);
    }

我没有使用subject参数,所以我删除了它。文本不知怎么没有显示出来,我还没有找到解决办法。对于找到显示消息文本的方法的任何人,请给出答案和评论,以便我能够访问您的修复程序。

此代码是否需要任何平台specyfics权限?ios 9.3.5=崩溃。***由于未捕获的异常“NSGenericeException”而终止应用程序,原因:“UIPopoverPresentationController()应在演示发生之前设置非nil sourceView或barButtonItem。”@venkata swamy balaraju Image在iOS和Android中均为空。您能否提供相同的解决方案。此代码是否需要任何平台specyfics权限?ios 9.3.5=崩溃。***由于未捕获的异常“NSGenericeException”而终止应用程序,原因:“UIPopoverPresentationController()应在演示发生之前设置非nil sourceView或barButtonItem。”@venkata swamy balaraju Image在iOS和Android中均为空。你能提供同样的解决方案吗。