自定义cordova插件调用无效
最近一直研究cordova
来打包vue
项目成webapp,想自己尝试一下写一个cordova
插件,然后用js来调用这个组件执行的结果。
cordova项目结构如下:
1、创建组件ExtraInfo
ExtraInfo.java
文件内容如下:
import android.view.animation.DecelerateInterpolator;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.content.Context;
import android.app.Activity;
import android.content.Intent;
import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaPlugin;
import org.apache.cordova.CordovaWebView;
import org.json.JSONArray;
import org.json.JSONException;
public class ExtraInfo extends CordovaPlugin {
public boolean execute(String action, JSONArray args, CallbackContext callbackContext)
throws JSONException {
Activity activity = this.cordova.getActivity();
if(action.equals("getExtra")) {
Intent i = activity.getIntent();
if(i.hasExtra(Intent.EXTRA_TEXT)) {
callbackContext.success(i.getStringExtra(Intent.EXTRA_TEXT));
}else{
callbackContext.error("返回错误信息");
}
return true;
}
return false;
}
}
ExtraInfo.js
文件内容如下:
var exec = require('cordova/exec');
exports.getExtra = function(success, error) {
exec(success, error,"ExtraInfo","getExtra", []);
};
plugin.xml
文件内容如下:
<?xmlversion="1.0"encoding="utf-8"?>
<plugin id="com.zyd.cordova" version="0.0.1"
xmlns=" http://apache.org/cordova/ns/plugins/1.0"
xmlns:android=" http://schemas.android.com/apk/res/android">
<name>ExtraInfo</name>
<description>Description</description>
<js-module name="ExtraInfo" src="www/ExtraInfo.js">
<clobbers target="cordova.plugins.ExtraInfo" />
</js-module>
<platform name="android">
<config-file parent="/*" target="res/xml/config.xml">
<feature name="ExtraInfo">
<param name="android-package" value="com.zyd.cordova.ExtraInfo" />
</feature>
</config-file>
<source-file src="src/android/ExtraInfo.java" target-dir="src/com/zyd/cordova" />
</platform>
</plugin>
2、添加组件ExtraInfo
到项目中
然后到 ……/platforms/android
路径下执行命令cordova plugin add ExtraInfo
,添加该组件到项目中
3、调用组件
为了简单,我在cordova
创建的项目模板文件www/js/index.js
里面直接调用该cordova插件:
receivedEvent: function(id) {
var cordova = require('cordova');
var extraInfo = cordova.require('com.zyd.cordova.ExtraInfo');
extraInfo.getExtra(function(message) {
alert("111" + message);
}, function(message) {
alert("2222" + message);
});
}
最后在www/index.html
引用该文件
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="js/index.js"></script>
不知道为什么一直不显示调用结果,index.js
里面 getExtra()
的alert
语句不执行,该句前面定义alert可以执行,问题出在哪儿呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论