下面是我的 CalendarEventPlugin.js 文件:
window.addcalendareventplugin = function(startDate, endDate, allDay, successCallback){
//call the Plugin execute method()
console.log(successCallback,function(err){
callback('Error: ' + err);
},"CalendarEventPlugin","addCalendarEvent",[startDate, endDate, allDay]);
}
我使用的是 cordova-2.5.0 和 Android 2.2 及更高版本。
下面是我的 CalendarEventPlugin.java 文件:
package org.apache.cordova.plugin;
import java.util.Calendar;
import org.json.JSONArray;
import org.json.JSONException;
import org.apache.cordova.api.CallbackContext;
import org.apache.cordova.api.CordovaPlugin;
import android.content.Intent;
import android.provider.CalendarContract;
import android.provider.CalendarContract.Events;
public class CalendarEventPlugin extends CordovaPlugin {
@Override
public boolean execute(String action, JSONArray data, CallbackContext callbackContext) throws JSONException {
if (action.equals("addCalendarEvent")) {
if(data.length() > 0)
{
//if you are passing some data eg. start,end date, all day and parameters for the Calendar
//from plugin's javascript interface then you can retrieve and parse the data from data[] here.
String startDate = data.getString(0);
String endDate = data.getString(1);
boolean allDay = data.getBoolean(2);
if(this.addCalendarEvent())
{
callbackContext.success("Done!!");
}
else
{
callbackContext.error("Error!!");
}
}
return true;
}
return false;
}
private boolean addCalendarEvent(){
Boolean ret = false;
try{
Calendar beginTime = Calendar.getInstance(); //the begin time and end time can come from javascript if user enters this values in a form
beginTime.set(2013, 1, 20, 7, 30);
Calendar endTime = Calendar.getInstance();
endTime.set(2013, 1, 20, 8, 30); //set your own time here and above as well or you can get the current time.
Intent intent = new Intent(Intent.ACTION_EDIT);
intent.setType("vnd.android.cursor.item/event");
intent.setAction(Intent.ACTION_INSERT);
intent.putExtra(Events.TITLE, "A new event"); //can come from javascript.
intent.putExtra(CalendarContract.EXTRA_EVENT_ALL_DAY, true);
intent.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, beginTime.getTimeInMillis());
intent.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, endTime.getTimeInMillis());
this.cordova.startActivityForResult(this, intent, 0);
ret = true;
}
catch(Exception e){
e.printStackTrace();
ret = false;
}
return ret;
}
}
下面是我的索引文件:
<!DOCTYPE HTML>
<html>
<head>
<title>Cordova</title>
<script type="text/javascript" charset="utf-8" src="cordova-2.5.0.js"></script>
<script type="text/javascript" charset="utf-8" src="CalenderEventPlugin.js"> </script>
<script type="text/javascript" charset="utf-8" src="app.js"></script>
</head>
<body>
<h4>Custom Plugin Development</h4>
<button onclick="test5()">Calendar Event Plugin</button>
<br/>
</body>
</html>
下面是我的 app.js 文件:
function test5(){
//alert("call of app js file");
window.addcalendareventplugin("2015-09-09T16:00:00-06:00", "2015-09-09T18:00:00-06:00","true",function(val){
alert(val); //once success message come and you have tested it, you can remove this alert.
});
}
我无法调用 addCalenderEvent 。我收到 Json 错误 ..任何人都可以帮忙。提前致谢..:)