I am developing an app with accessibility properties. To catch accessibility state changes I use AccessibilityManager.AccessibilityStateChange event:
public AccessibilityService()
{
this.accessibilityManager = (AccessibilityManager)CrossCurrentActivity.Current.Activity.GetSystemService(Context.AccessibilityService);
this.accessibilityManager.AccessibilityStateChange += this.AccessibilityManagerAccessibilityStateChange;
}
I tested in Android 9 phone and it works, but now I'm testing in Android 6 device and I get this exception in
AccessibilityStateChange +=
line:
Exception has been thrown by the target of an invocation.
at System.Reflection.RuntimeConstructorInfo.InternalInvoke (System.Object obj, System.Object[] parameters, System.Boolean wrapExceptions) [0x00018] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/corlib/System.Reflection/RuntimeMethodInfo.cs:944
at System.RuntimeType.CreateInstanceMono (System.Boolean nonPublic, System.Boolean wrapExceptions) [0x00095] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/corlib/ReferenceSources/RuntimeType.cs:185
at System.RuntimeType.CreateInstanceSlow (System.Boolean publicOnly, System.Boolean wrapExceptions, System.Boolean skipCheckThis, System.Boolean fillCache) [0x00009] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/corlib/ReferenceSources/RuntimeType.cs:155
at System.RuntimeType.CreateInstanceDefaultCtor (System.Boolean publicOnly, System.Boolean skipCheckThis, System.Boolean fillCache, System.Boolean wrapExceptions, System.Threading.StackCrawlMark& stackMark) [0x00027] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/referencesource/mscorlib/system/rttype.cs:5770
at System.Activator.CreateInstance (System.Type type, System.Boolean nonPublic, System.Boolean wrapExceptions) [0x00039] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/referencesource/mscorlib/system/activator.cs:206
at System.Activator.CreateInstance (System.Type type, System.Boolean nonPublic) [0x00000] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/referencesource/mscorlib/system/activator.cs:190
at System.Activator.CreateInstance (System.Type type) [0x00000] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/referencesource/mscorlib/system/activator.cs:134
at Xamarin.Forms.DependencyService.Get[T] (Xamarin.Forms.DependencyFetchTarget fetchTarget) [0x00099] in D:\a\1\s\Xamarin.Forms.Core\DependencyService.cs:52
at MyApp.App..ctor () [0x00032] in C:\DATA\Projects\Kitchen-Eye\Code\MyApp\MyApp\MyApp\App.xaml.cs:42
no non-static method "Landroid/view/accessibility/AccessibilityManager;.addAccessibilityStateChangeListener(Landroid/view/accessibility/AccessibilityManager$AccessibilityStateChangeListener;Landroid/os/Handler;)V"
at Java.Interop.JniEnvironment+InstanceMethods.GetMethodID (Java.Interop.JniObjectReference type, System.String name, System.String signature) [0x0005b] in <bd6bd528a8784b7caf03e9f25c9f0d7b>:0
at Java.Interop.JniType.GetInstanceMethod (System.String name, System.String signature) [0x0000c] in <bd6bd528a8784b7caf03e9f25c9f0d7b>:0
at Java.Interop.JniPeerMembers+JniInstanceMethods.GetMethodInfo (System.String encodedMember) [0x00031] in <bd6bd528a8784b7caf03e9f25c9f0d7b>:0
at Java.Interop.JniPeerMembers+JniInstanceMethods.InvokeAbstractVoidMethod (System.String encodedMember, Java.Interop.IJavaPeerable self, Java.Interop.JniArgumentValue* parameters) [0x00006] in <bd6bd528a8784b7caf03e9f25c9f0d7b>:0
at Android.Views.Accessibility.AccessibilityManager.AddAccessibilityStateChangeListener (Android.Views.Accessibility.AccessibilityManager+IAccessibilityStateChangeListener listener, Android.OS.Handler handler) [0x0004e] in /Users/builder/azdo/_work/1/s/xamarin-android/src/Mono.Android/obj/Release/monoandroid10/android-29/mcw/Android.Views.Accessibility.AccessibilityManager.cs:433
at Android.Views.Accessibility.AccessibilityManager.AddAccessibilityStateChangeListener_Event_With_Handler_Helper (Android.Views.Accessibility.AccessibilityManager+IAccessibilityStateChangeListener value) [0x00000] in /Users/builder/azdo/_work/1/s/xamarin-android/src/Mono.Android/obj/Release/monoandroid10/android-29/mcw/Android.Views.Accessibility.AccessibilityManager.cs:592
at Java.Interop.EventHelper.AddEventHandler[TInterface,TImplementor] (System.WeakReference& implementor, System.Func`1[TResult] creator, System.Action`1[T] setListener, System.Action`1[T] add) [0x00036] in /Users/builder/azdo/_work/1/s/xamarin-android/src/Mono.Android/Java.Interop/EventHelper.cs:18
at Android.Views.Accessibility.AccessibilityManager.add_AccessibilityStateChange (System.EventHandler`1[TEventArgs] value) [0x0000d] in /Users/builder/azdo/_work/1/s/xamarin-android/src/Mono.Android/obj/Release/monoandroid10/android-29/mcw/Android.Views.Accessibility.AccessibilityManager.cs:576
at MyApp.Droid.Services.AccessibilityService..ctor () [0x00027] in C:\DATA\Projects\Kitchen-Eye\Code\MyApp\MyApp\MyApp.Android\Services\AccessibilityService.cs:32
at (wrapper managed-to-native) System.Reflection.RuntimeConstructorInfo.InternalInvoke(System.Reflection.RuntimeConstructorInfo,object,object[],System.Exception&)
at System.Reflection.RuntimeConstructorInfo.InternalInvoke (System.Object obj, System.Object[] parameters, System.Boolean wrapExceptions) [0x00005] in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/mcs/class/corlib/System.Reflection/RuntimeMethodInfo.cs:936
--- End of managed Java.Lang.NoSuchMethodError stack trace ---
java.lang.NoSuchMethodError: no non-static method "Landroid/view/accessibility/AccessibilityManager;.addAccessibilityStateChangeListener(Landroid/view/accessibility/AccessibilityManager$AccessibilityStateChangeListener;Landroid/os/Handler;)V"
at crc64fe57f584d98dc9f4.MainActivity.n_onCreate(Native Method)
at crc64fe57f584d98dc9f4.MainActivity.onCreate(MainActivity.java:40)
at android.app.Activity.performCreate(Activity.java:6272)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2387)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2494)
at android.app.ActivityThread.access$900(ActivityThread.java:157)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1356)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5551)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:731)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:621)
In the documentation this event doesn't exist:
https://learn.microsoft.com/en-us/dotnet/api/android.views.accessibility.accessibilitymanager