3

我正在尝试将使用适用于 Android 的 LocalNotification 插件的 phonegap-1.4.1 项目升级到 cordova-1.6.0

我在这里找到了这个链接:https ://github.com/davejohnson/phonegap-plugin-facebook-connect/pull/109 其中说,对于 Android:使用 CordovaInterface 对象的 this.ctx.getContext() 方法来获取 Conext 对象.

我编辑了 LocalNotification.java 并通过更改以下行让我的项目编译没有错误:

从:

alarm = new AlarmHelper(this.ctx);
...
final SharedPreferences alarmSettings = this.ctx.getSharedPreferences(PLUGIN_NAME, Context.MODE_PRIVATE);
...
final Editor alarmSettingsEditor = this.ctx.getSharedPreferences(PLUGIN_NAME, Context.MODE_PRIVATE).edit();
...
final Editor alarmSettingsEditor = this.ctx.getSharedPreferences(PLUGIN_NAME, Context.MODE_PRIVATE).edit();
...
final Editor alarmSettingsEditor = this.ctx.getSharedPreferences(PLUGIN_NAME, Context.MODE_PRIVATE).edit();

到:

alarm = new AlarmHelper(this.ctx.getContext());
...
final SharedPreferences alarmSettings = this.ctx.getContext().getSharedPreferences(PLUGIN_NAME, Context.MODE_PRIVATE);
...
final Editor alarmSettingsEditor = this.ctx.getContext().getSharedPreferences(PLUGIN_NAME, Context.MODE_PRIVATE).edit();
...
final Editor alarmSettingsEditor = this.ctx.getContext().getSharedPreferences(PLUGIN_NAME, Context.MODE_PRIVATE).edit();
...
final Editor alarmSettingsEditor = this.ctx.getContext().getSharedPreferences(PLUGIN_NAME, Context.MODE_PRIVATE).edit();

但是我必须承认,我真的不知道自己在做什么,并且通知不起作用,并且我在应用程序日志中没有收到任何错误:(

还刚刚注意到,根据我的 onDeviceReady() 函数中的示例,我具有以下内容:

console.log("Device ready");

if (typeof plugins !== "undefined") {
   plugins.localNotification.add({
      date : new Date(),
      message : "Phonegap - Local Notification\r\nSubtitle comes after linebreak",
      ticker : "This is a sample ticker text",
      repeatDaily : false,
      id : 4
   });
}

如果我删除 if 条件 typeof plugins !== "undefined" 那么我的应用程序日志中会出现错误:未捕获的 ReferenceError: plugins is not defined

我猜想在科尔多瓦发生了其他变化。如果有将android插件升级到cordova的指南是否有用。

4

2 回答 2

3

今天升级到 Cordova-1.6.1,它现在可以工作了;)

勇敢地承认这可能是“椅子/键盘”界面问题。想想当我升级到 1.6.0 我忘了在我的 index.html 的标题中更改它

于 2012-04-19T18:58:42.410 回答
2

似乎getContext()已被贬值。这个问题有更清洁的解决方案吗?

于 2012-07-16T07:39:58.007 回答