我目前正試圖在windows phone上使用一些本機代碼來獲得代號。我創建了一個「原生示範」項目中,我改變了NativeCalls
類只支持一個簡單的方法:爲什麼Codename One的NativeLookup.create返回null?
package com.codename1.nativedemo;
import com.codename1.system.NativeInterface;
public interface NativeCalls extends NativeInterface {
public String testString();
}
從這一個我使用的上下文菜單項「生成本地」,改變了NativeCallsImpl.cs文件返回當調用testString
時,「windows phone」。我的最後一次更改是StateMachine
內:
protected void onGUI1_AddNativeButtonAction(Component c, ActionEvent event) {
super.onGUI1_AddNativeButtonAction(c, event);
try {
NativeCalls n = (NativeCalls) NativeLookup.create(NativeCalls.class);
if (n != null) {
if (n.isSupported()) {
Dialog.show("Got string", n.testString(), "OK", null);
} else {
Dialog.show("Error", "Platform not supported!", "OK", null);
}
} else {
Dialog.show("Error", "Native lookup returned null!", "OK", null);
}
c.getComponentForm().revalidate();
} catch (Throwable t) {
Dialog.show("Error", "Exception during native access: " + t, "OK", null);
}
}
構建運行完美,它也運行在模擬器上。但是當我在手機上部署xap文件時(通過WP開發工具,QR碼不起作用,顯示「公司應用程序無法安裝)」,應用程序正常啓動,但顯示NativeLookup
返回null。 dist文件夾中的.jar文件包含位於正確位置的.cs文件(com/codename1/nativedemo/NativeCallsImpl.cs,除了NativeCalls.class之外)
在NativeCallsImpl.cs中,您是否將isSupported()方法設置爲true?默認情況下,我認爲這將是錯誤的。我想這可能不會幫助零問題,但這將是下一個問題。 –
是的,它返回true –