我使用PhoneGap(aka Cordova)構建Android應用程序,並且無法使日曆集成工作。 聲明:我是Android和PhoneGap的小菜鳥,請耐心等待。PhoneGap /科爾多瓦日曆集成(Android)
我想要做的就是將一個事件添加到用戶的日曆。在this tutorial之後,我創建了一個試圖啓動Calendar Intent的插件。代碼如下所示:
public class CalendarPlugin extends Plugin {
public static final String NATIVE_ACTION_STRING="addToCalendar";
public static final String SUCCESS_PARAMETER="success";
@Override
public PluginResult execute(String action, JSONArray data, String callbackId) {
if (NATIVE_ACTION_STRING.equals(action)) {
Calendar beginTime = Calendar.getInstance();
beginTime.set(2012, 6, 19, 7, 30);
Calendar endTime = Calendar.getInstance();
endTime.set(2012, 6, 19, 8, 30);
Intent calIntent = new Intent((Context) this.ctx, CalendarPlugin.class)
.setAction(Intent.ACTION_INSERT)
.putExtra(Events.TITLE, "A new event")
.putExtra(CalendarContract.EXTRA_EVENT_ALL_DAY, true)
.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, beginTime.getTimeInMillis())
.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, endTime.getTimeInMillis());
this.ctx.startActivity(calIntent);
return new PluginResult(PluginResult.Status.OK, "Smashing success");
}
return new PluginResult(PluginResult.Status.ERROR, "Didn't work bro");
}
}
的JavaScript代碼來調用這個插件標準:
var CalendarPlugin = {
callNativeFunction: function (success, fail, resultType) {
if (cordova) {
return cordova.exec(success, fail,
"org.myorg.appname.CalendarPlugin",
"addToCalendar", [resultType]);
}
else {
alert("Calendar function is not available here.");
}
}
};
Android的代碼是越來越調用(使用斷點確認)。但是,發回Javascript代碼的結果是一個錯誤:
Unable to find explicit activity class {org.myorg.appname/org.myorg.appname.CalendarPlugin}; have you declared this activity in your AndroidManifest.xml?
有沒有提到在本教程中,這使我相信,我失去了一些東西(也加入AndroidManifest.xml中時,CalendarPlugin代碼被調用成功,那麼如何能有一個錯誤說CalendarPlugin類無法找到?)。如果確實需要將CalendarPlugin添加到清單中,我將如何去做這件事?
那麼你認爲我的方法在ICS及以上版本上甚至可行嗎?是否可以使用來自Phonegap插件的Intents? – McGarnagle
@dbaseman查看我的更新回答 –
謝謝你關於意圖的觀點指出了我的正確方向。 (另外,我希望你不介意,我只是修正了你的答案完整性。) – McGarnagle