Использование API результатов действий в Xamarin.Android

Похоже, что он не поддерживается должным образом, поскольку мне нужно реализовать материал JNI, когда я пытаюсь реализовать IActivityResultCallbackинтерфейс. Также ActivityResultContractне является универсальным классом, поэтому, когда я наследую его для создания пользовательского контракта, он не является типобезопасным, как в родном Android. Полагаю, в данный момент он вообще не используется?

1 ответ

Вы можете обойти эту проблему, унаследовав от Java.Lang.Object. Что-то вроде этого, вероятно, сработает:

      public class MyActivityResultCallback : Java.Lang.Object, IActivityResultCallback
{
}

IActivityResultCallback наследуется от IJavaObject, что делает большинство, если не все интерфейсы Android. Таким образом, Xamarin может взаимодействовать между C # и Java. Это довольно хорошо описано здесь: https://docs.microsoft.com/en-us/xamarin/android/platform/java-integration/working-with-jni#implementing-interfaces