Jens Klingenberg

Xamarin Forms: Call native code with DependencyService

Posted on September 10, 2016  •  1 minutes  • 125 words
Table of contents

Sometimes you need to use platform specific code in Xamarin Forms. To do this you can use DependencyService. In this example i want to show how you can call an Android specific mail intent.

1) Create an interface in your project folder

using System;
namespace Dependencytest
{
    public interface IMailIntent
    {
        void sendIntent(string mail);
    }
}

2) Create a class in your Droid Folder that implements the interface

[assembly: Xamarin.Forms.Dependency(typeof(MailIntent))]
namespace Dependencytest.Droid
{
	public class MailIntent : IMailIntent
	{
		public void sendIntent(string mail)
		{
			var intent = new Intent(Intent.ActionSend);
			intent.SetType("message/rfc822");
			intent.PutExtra(Intent.ExtraEmail, new[] { "ddd@ddd.de" });
			Forms.Context.StartActivity(Intent.CreateChooser(intent, "Send email"));
		}
	}
}

Don’t forget the assembly annotation

3) Use DependencyService

Now you can use the DependencyService in your shared code to call the native function
DependencyService.Get<IMailIntent>().sendIntent("hello@world.com");
Let's connect: