Oooooh nice! I will try this out. I really appreciate the help and time you put into this!
On Tue, Jan 10, 2012 at 5:08 PM, Jonathan Pryor <j...@xamarin.com> wrote: > One of these days we'll get the JNI doc published which discusses many of > these issues. > > In the meantime... > > On Jan 10, 2012, at 4:58 AM, Tomasz Cielecki wrote: >> My guess it has something to do with my implementation of my >> GetNotifyHandler. > > Not GetNotifyHandler(), but n_Notify(): > >> static void n_Notify(IntPtr jnienv, IntPtr lrefThis, String a) > > What's going on is a "reverse P/Invoke": you're creating a delegate > (`cb_notify`), which is passed to native code (Dalvik), and the delegate is > invoked. This means that you need to stick to types that the P/Invoke > marshaler knows about. > > In this case, the P/Invoke marshaler will see a `string` parameter, assume > that it's a UTF-8 `const char*` value, and behaves accordingly. However, > that's not what the parameter will be, it'll be a java.lang.String instance, > which the P/Invoke marshaler knows nothing about. > > The solution is to manually marshal things: > > static void n_Notify(IntPtr jnienv, IntPtr lrefThis, IntPtr native_a) > { > ManagedAccessControlJavascriptNotify __this = > Java.Lang.Object.GetObject<ManagedAccessControlJavascriptNotify>( > lrefThis, JniHandleOwnership.DoNotTransfer); > Java.Lang.String a = > Java.Lang.Object.GetObject<Java.Lang.String>( > a, JniHandleOwnership.DoNotTransfer); > __this.Notify (a); > } > >> What happens if the Javascript interface wants to pass a Java.Lang.String to >> the managed code and the Action there has the type System.String. > > Convert the Java.Lang.String to a System.String by using > Java.Lang.String.ToString(). :-) > > - Jon > > _______________________________________________ > Monodroid mailing list > Monodroid@lists.ximian.com > > UNSUBSCRIBE INFORMATION: > http://lists.ximian.com/mailman/listinfo/monodroid -- Med Venlig Hilsen / With Best Regards Tomasz Cielecki http://ostebaronen.dk _______________________________________________ Monodroid mailing list Monodroid@lists.ximian.com UNSUBSCRIBE INFORMATION: http://lists.ximian.com/mailman/listinfo/monodroid