gpt4 book ai didi

android - Cordova Local Notification Android Plugin 2.2升级

转载 作者:太空宇宙 更新时间:2023-11-03 11:40:17 24 4
gpt4 key购买 nike

我正在使用 Phonegap[Cordova 2.2] 在 Android 上开发“提醒”应用程序。

用户输入一个具体的提醒日期,我应该及时通知他。

我使用的是Android的Notification Plugin,但它支持早期版本的手机gap。我按照本教程解决了 cordova 2.2 和以前版本之间的冲突,现在已经解决了很多问题,但我仍然无法解决一些问题:

    public PluginResult execute(String action, JSONArray optionsArr, String callBackId) {
alarm = new AlarmHelper(cordova.getActivity());
Log.d(PLUGIN_NAME, "Plugin execute called with action: " + action);

PluginResult result = null;

final AlarmOptions alarmOptions = new AlarmOptions();
alarmOptions.parseOptions(optionsArr);

这个函数在这一行有问题:

       public PluginResult execute(String action, JSONArray optionsArr, String callBackId) 

当我用这一行替换它时:

public boolean execute(String action, JSONArray optionsArr, CallbackContext callbackContext) {

错误已修复,但此函数显示另一个错误:

persistAlarm(alarmId, optionsArr);
return this.add(daily, title, subTitle, ticker, alarmId, alarmOptions.getCal());
} else if (action.equalsIgnoreCase("cancel")) {
unpersistAlarm(alarmId);
return this.cancelNotification(alarmId);
} else if (action.equalsIgnoreCase("cancelall")) {
unpersistAlarmAll();
return this.cancelAllNotifications();
}

return result;
}

返回类型无法转换为boolean,那我该如何解决呢?

更新:

我将返回类型替换为 bool 值,现在就是这样:

    @Override
public boolean execute(String action, JSONArray optionsArr, CallbackContext callBackId)
{
Log.d(PLUGIN_NAME, "optionsArr: " + optionsArr.toString());
alarm = new AlarmHelper(cordova.getActivity());
Log.d(PLUGIN_NAME, "Plugin execute called with action: " + action);

//PluginResult result = null;
boolean result = true;

final AlarmOptions alarmOptions = new AlarmOptions();
alarmOptions.parseOptions(optionsArr);

/*
* Determine which action of the plugin needs to be invoked
*/
String alarmId = alarmOptions.getNotificationId();
if (action.equalsIgnoreCase("add")) {
final boolean daily = alarmOptions.isRepeatDaily();
final String title = alarmOptions.getAlarmTitle();
final String subTitle = alarmOptions.getAlarmSubTitle();
final String ticker = alarmOptions.getAlarmTicker();
persistAlarm(alarmId, optionsArr);
this.add(daily, title, subTitle, ticker, alarmId, alarmOptions.getCal());
callBackId.success();
return true;
}
else if (action.equalsIgnoreCase("cancel")) {
unpersistAlarm(alarmId);
this.cancelNotification(alarmId);
callBackId.success();
return true;
}
else if (action.equalsIgnoreCase("cancelall")) {
unpersistAlarmAll();
this.cancelAllNotifications();
callBackId.success();
return true;
}
return result;
}

现在,它可以正常工作,但是当我点击通知时,应用程序没有打开,通知也没有消失……我该如何解决这个问题?

最佳答案

好的,本地通知插件终于可以与 cordova 2.2 一起使用了:)现在这里是需要的修改:

1) 替换

import com.phonegap.api.Plugin;
import com.phonegap.api.PluginResult;

import org.apache.cordova.api.CordovaPlugin;
import org.apache.cordova.api.PluginResult;

2) 替换

public PluginResult execute(String action, JSONArray optionsArr, String callBackId)

public pluginresult execute(String action, JSONArray args, CallbackContext callbackContext)

3) 添加

callbackContext.success();
return true;

return false; 

作为函数的返回类型。

4) 替换

this.ctx

cordova.getActivity()

5)添加

import yourapplication.name.R;

AlarmReciever.Java

就是这样 :) 希望对您有所帮助。

关于android - Cordova Local Notification Android Plugin 2.2升级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13720071/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com