我正在使用 PhoneGap(又名 Cordova)构建一个 Android 应用程序,但无法让日历集成正常工作。 免责声明:我是 Android 和 PhoneGap 的菜鸟,请多多包涵。
我要做的就是向用户的日历添加一个事件。按照本教程,我创建了一个尝试启动日历意图的插件。代码如下所示:
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 代码的结果是一个错误:
找不到明确的活动类 {org.myorg.appname/org.myorg.appname.CalendarPlugin};您是否在 AndroidManifest.xml 中声明了此活动?
教程中没有提到添加到 AndroidManifest.xml,这让我相信我遗漏了一些东西(此外,CalendarPlugin代码正在成功调用,那么怎么会出现错误说找不到CalendarPlugin类呢? )。如果确实需要将CalendarPlugin添加到清单中,我将如何去做呢?