Just to update, the code works :) Thanks again!

On Tue, Jan 10, 2012 at 6:06 PM, Tomasz Cielecki <tom...@ostebaronen.dk> wrote:
> 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



-- 
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

Reply via email to