There are several ways to invoke the integration of Java and managed code, depending on what exactly you want to do.
Java for managed
If you need to call some managed method, you can use Android Callable Wrappers , which are generated for each Java.Lang.Object subclass. However, there are a number of limitations , so this may not be ideal.
If you need to create an Activity , you can use Context.startActivity () , as in Java. You can look at the generated obj\Debug\android\AndroidManifest.xml to determine the appropriate class name to use, or you can use, for example. ActivityAttribute.Name to manually manage the name of the Java side. (Using ActivityAttribute.Name not recommended, as it slows down the type loading.)
The same is true for Service s: use Context.startContext () and continue your fun way.
If you need to share data, the easiest way would be to use a ContentProvider . ContentProvider usually designed to share data between processes, but it should also be used internally when you need to exchange data between Java and managed code, and you push the limitations of Android Callable Wrappers.
Managed Java
In general, calling Java code from C # is a mirror of Java code calling C #: you can use, for example. Context.StartActivity () to trigger Java activity, use the Java side of the ContentProvider through the Context.ContentResolver property, etc.
An example of starting a Java operation from managed code is the GoogleMaps sample , in which Context.StartActivity () is used to start Java enabled activity .
You can also use the Java Native Interface (JNI) support to create Java instances from managed code and invoke methods on those instances. It is painful and fragile, but it works and allows you to call APIs that do not otherwise display.