has been studying cordova
to package the vue
project into webapp,. I want to try to write a cordova
plug-in myself, and then use js to call the result of this component execution.
cordova project structure is as follows:
1. Create components ExtraInfo
ExtraInfo.java
the contents of the file are as follows:
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
the contents of the file are as follows:
var exec = require("cordova/exec");
exports.getExtra = function(success, error) {
exec(success, error,"ExtraInfo","getExtra", []);
};
plugin.xml
the contents of the file are as follows:
<?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. Add components ExtraInfo
to the project
then go to . Execute the command
path, and add the component to the project cordova plugin add ExtraInfo
under the / platforms/android
3, calling component
for simplicity, I call the cordova plug-in directly from the www/js/index.js
project template file created by 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);
});
}
finally reference the file in www/index.html
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="js/index.js"></script>
I don"t know why the result of the call is not displayed all the time. The alert
statement of getExtra ()
in index.js
is not executed. What is the problem when it is defined before the sentence that alert can be executed?