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
[email protected]
UNSUBSCRIBE INFORMATION:
http://lists.ximian.com/mailman/listinfo/monodroid