我想使用JSNI在GWT上运行此phonegap本机警报

navigator.notification.alert(
        'You are the winner!',  // message
         null,         // callback
        'Game Over',
        'Done'
  );


我已经试过了:

public static native void testNativeAlert()/*-{

   navigator.notification.alert(
    'You are the winner!',  // message
     null,         // callback
    'Game Over',
    'Done');}-*/;

最佳答案

http://www.gwtproject.org/doc/latest/DevGuideCodingBasicsJSNI.html#writing开始,不要忘记$wnd来访问全局属性!


public static native void alert(String msg) /*-{
  $wnd.alert(msg);
}-*/;

  
  请注意,代码没有直接在方法内部引用JavaScript窗口对象。从JSNI访问浏览器的窗口和文档对象时,必须分别将它们引用为$ wnd和$ doc。您的编译脚本在嵌套框架中运行,并且$ wnd和$ doc会自动初始化以正确引用宿主页面的窗口和文档。


因此,在您的情况下,您必须使用$wnd来访问navigator

public static native void testNativeAlert()/*-{

   $wnd.navigator.notification.alert(
    'You are the winner!',  // message
    null,         // callback
    'Game Over',
    'Done');
}-*/;




旁注:尚不清楚文档,但您确定phonegap允许callback为空吗?否则,请查看我在上面链接的JSNI文档。

09-16 04:00