2

嘿伙计们,我正在尝试让一个非常简单的自定义科尔多瓦插件工作,但它不工作,这很尴尬......

我已经尝试查看 phonegap 教程以获取一个简单的插件 以及如何在 android 上实现,看起来我有同样的东西,但它不起作用!它应该做的就是用一个字符串调用本机函数,然后 Eclipse 将该字符串输出到控制台日志......,但本机函数从未真正被调用过!

爪哇:

public class ListPlugin extends CordovaPlugin {

    @Override
    public boolean execute(String action, JSONArray args, 
                      CallbackContext callbackContext) throws JSONException {

       Log.d("CORDOVA", "!!!");
       if(action.equals("showString")){
            String message = args.getString(0);
            Log.d("CORDOVA", message + "!!!");
        }
       return true
    }

}

资源/XML:

<feature name="ListPlugin">
  <param name="android-package" value="com.flukenetworks.networkmap.ListPlugin"/>
</feature>

JAVASCRIPT:

<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript">

alert("HERRO?");
    cordova.exec(null, null, "ListPlugin", "showString", ["I hate you"]);
</script>

任何人都可以发现任何问题吗?这可能是我看不到的微不足道的事情......我收到了 CordovaWebView 超时错误,也许这与它有关?这是 CordovaWebView 的代码,用于大便和咯咯笑。

public class DevicesListFragment extends Fragment{

    CordovaWebView webView; 
    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        webView = new CordovaWebView(getActivity());
        webView.loadUrl("file:///android_asset/www/index.html");
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
        Bundle savedInstanceState) {
        return webView;
    }
}

任何帮助将不胜感激!

4

1 回答 1

3

我相信我想通了!未调用本机代码的原因是,当我尝试调用cordova.exec().

我通过添加事件监听器解决了这个问题:

 document.addEventListener("deviceready", onDeviceReady, false);

// device APIs are available
//
function onDeviceReady() {
    cordova.exec(null, null, "ListPlugin", "showString", ["I hate you"]);
}

事实上,Cordova/PhoneGap 文档都建议始终使用它——现在我知道了!

于 2013-10-14T22:59:39.683 回答