嘿,伙计们,我在试着让一个很简单的定制科尔多瓦插件开始工作,但它不起作用,而且很丢人.
我试过查看phonegap教程中的简单插件和如何使用在android上实现,看起来我有相同的东西,但它不起作用!它所要做的就是用字符串调用本机函数,eclipse将该字符串输出到控制台日志.但是本机函数从未被实际调用!
JAVA:
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
}
}
RES/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;
}
}
任何帮助都将不胜感激!
发布于 2013-10-14 14:59:39
我想我想明白了!本机代码未被调用的原因是,当我尝试调用cordova.exec()
时,cordova还没有“准备好”。
我通过添加一个事件侦听器来解决这个问题:
document.addEventListener("deviceready", onDeviceReady, false);
// device APIs are available
//
function onDeviceReady() {
cordova.exec(null, null, "ListPlugin", "showString", ["I hate you"]);
}
事实上,Cordova/PhoneGap文档都建议经常使用这个--现在我知道了!
https://stackoverflow.com/questions/19325409
复制相似问题