我試圖使Xamarin的Android API 19 EthernetManager工作中使用其 getSavedConfig和updateDevInfo(EthernetDevInfo資訊)方法,如在這裏找到:如何在Xamarin Android API 19中使用EthernetManager?
ftp://ftp1.digi.com/support/temp/digi-docs/reference/android/net/ethernet/ethernetmanager.html
對於這個我使用反射:
Java.Lang.Object ethMn = GetSystemService("ethernet");
IntPtr eth0 = JNIEnv.FindClass("android/net/ethernet/EthernetManager");
IntPtr method = JNIEnv.GetMethodID(eth0, "getState", "(V)I");
IntPtr obj = JNIEnv.CallObjectMethod(ethMn.Handle, method);
使用上面的getState方法來簡化調用。
有一個JNI例如這裏: https://forums.xamarin.com/discussion/12117/how-to-get-class-method-by-reflection
前2行的我的代碼,即系統服務和類被檢索到ethMn和e代碼段運行正常。然而第3行拋出一個異常,說:
Java.Lang.NoSuchMethodError: no method with name='getState' signature='(V)I' in class Landroid/net/ethernet/EthernetManager;
這很奇怪,因爲這可以從我張貼的第一個鏈接可以看出,的getState()確實存在,並與簽名輸入。
我知道我缺少一些基本的東西,但無法弄清楚究竟是什麼。任何人都可以幫忙嗎?謝謝!
對不起,沒有聲明的工作...... – zalenix
@zalenix那麼你可能想使用一些Java和獲得您設備上''EthernetManager'類的版本中的'GetDeclaredMethods', – SushiHangover