On Jan 3, 2012, at 9:33 AM, Droider wrote:
> Is there any way that this can be achieved using Mono for Android? and if so 
> how?

You can use Android.Runtime.JNIEnv to perform runtime type querying operations.

        
http://docs.xamarin.com/android/advanced_topics/api_design#Java_Native_Interface_Support

For example, the code from 
http://code.google.com/p/android/issues/detail?id=5427#c19:

        BluetoothServerSocket interrogateSock; // your server socket
        Field mSocketField = 
BluetoothServerSocket.class.getDeclaredField("mSocket");
        mSocketField.setAccessible(true);
        BluetoothSocket socket = (BluetoothSocket) 
mSocketField.get(interrogateSock);
        mSocketField.setAccessible(false);

        Field mPortField = BluetoothSocket.class.getDeclaredField("mPort");
        mPortField.setAccessible(true);
        int port = (Integer) mPortField.get(socket); // this is what we need
        mPortField.setAccessible(false);

could be translated as (untested):

        BluetoothServerSocket interrogateSock; // your server socket

        IntPtr BluetoothServerSocket = interrogateSock.Class.Handle;

        IntPtr mSocketField = JNIEnv.GetFieldID (BluetoothServerSocket, 
"mSocket", "Landroid/bluetooth/BluetoothSocket;");
        IntPtr mSocketHandle = JNIEnv.GetObjectField (interrogateSock.Handle, 
mSocketField);
        BluetoothSocket socket = 
Java.Lang.Object.GetObject<BluetoothSocket>(mSocketHandle, 
JniHandleOwnership.TransferLocalRef);

        IntPtr BluetoothSocket = socket.Class.Handle;
        IntPtr mPortField = JNIEnv.GetFieldID (BluetoothSocket, "mPort", "I");
        int port = JNIEnv.GetIntField (socket.Handle, mPortField);

Thanks,
 - Jon

_______________________________________________
Monodroid mailing list
Monodroid@lists.ximian.com

UNSUBSCRIBE INFORMATION:
http://lists.ximian.com/mailman/listinfo/monodroid

Reply via email to