[Можно ли] использовать библиотеку C # с Mono для Android из кода Java?
Да. Каждый подкласс Java.Lang.Object имеет Android Callable Wrapper , сгенерированный во время сборки. Имеется Android Callable Wrapper, позволяющий Java-коду вызывать управляемый код (например, чтобы при переопределении Activity.OnCreate () Android фактически мог вызывать управляемое переопределение.
Однако есть несколько ограничений ; в частности, единственными методами, которые объявлены в Android Callable Wrapper, являются переопределенные методы и методы, полученные из реализованных интерфейсов. Это усложняет сценарий Java-> C #.
[Есть] причина для этого?
Да. Существует ряд обстоятельств, при которых вы в настоящее время не можете использовать C #, например, используя типы, которые находятся за пределами android.jar
(например, Maps API ). (Существует Android.Runtime.JNIEnv , но это не работает со сценариями создания подклассов.) Таким образом, самый простой способ использовать API-интерфейсы Java - это написать часть кода на Java, а затем интегрировать Java и управляемый код с помощью различных механизмов, включая отдельные действия (используя Activity.startActivity () для запуска управляемого действия из Java), JNIEnv
, службы и т. д.