PhoneGap的/科尔多瓦日历集成(安卓)(PhoneGap/Cordova calendar i

2019-07-29 16:59发布

我建设使用的PhoneGap(又名科尔多瓦)的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这个活动?

有没有在本教程中,这使我相信,我失去了一些东西(也行,CalendarPlugin代码被调用成功加入AndroidManifest.xml中提及,所以怎么可能有一个错误,说的CalendarPlugin类找不到? )。 如果确实是我需要CalendarPlugin添加到清单,我怎么会去这样做呢?

Answer 1:

引述未涉及意图的教程。 您发送您的数据,这样做的目的是你自己CalendarPlugIn类,这是不是你想要的,因为它不处理这个意图。

见http://developer.android.com/guide/topics/intents/intents-filters.html关于意图。

此外,如果你四处搜寻,所以你会发现,直到ICS甚至没有的东西添加到谷歌日历正式而不使用网络服务的方式。 有办法做到这一点非官方,但受到谷歌的率性或ODM厂商自己。

更新:

你应该能够(通过插件)使用意图与PhoneGap的。 我只加了注释要注意,如果你打算将日历集成在您的应用程序,你可能必须做一些研究,如果你想支持大部分Android设备。 如果你有兴趣在ICS添加日历事件看: http://developer.android.com/reference/android/provider/CalendarContract.html

上的编辑

我只是需要修复意图构造,这和预期一样:

Uri uri = Uri.parse("content://com.android.calendar/events");
Intent calIntent = new Intent("android.intent.action.INSERT", uri)


Answer 2:

为了使其成为所有Android SDK版本工作试试这个下面的代码

 Intent intent = new Intent(Intent.ACTION_EDIT);
 intent.setType("vnd.android.cursor.item/event");

我想它的工作对我来说。



文章来源: PhoneGap/Cordova calendar integration (Android)