【发布时间】:2012-07-07 11:15:21
【问题描述】:
好的,所以我正在尝试让我的 Phonegap 应用程序在特定时间启动,与闹钟功能相同。为此,我尝试编写自己的插件:
package de.ma;
import org.apache.cordova.api.PluginResult;
import org.json.JSONArray;
import android.content.Intent;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.util.Log;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.os.Bundle;
import java.util.Calendar;
import android.os.SystemClock;
import com.phonegap.api.Plugin;
public class alarm extends Plugin {
@Override
public PluginResult execute(String arg0, JSONArray arg1, String arg2) {
Calendar cal = Calendar.getInstance();
// add 5 minutes to the calendar object
cal.add(Calendar.SECOND, 5);
Intent intent = new Intent(ctx, AlarmReciever.class);
intent.putExtra("alarm_message", "O'Doyle Rules!");
// In reality, you would want to have a static variable for the request code instead of 192837
PendingIntent sender = PendingIntent.getBroadcast(this, 192837, intent, PendingIntent.FLAG_UPDATE_CURRENT);
// Get the AlarmManager service
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), sender);
return null;
}
}
但编译时出现 3 个错误:
-
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);原因:ALARM_SERVICE 无法解析为变量 alarm.java
-
Intent intent = new Intent(ctx, AlarmReciever.class);原因:构造函数 Intent(CordovaInterface, Class) 是 undefined alarm.java
-
PendingIntent sender = PendingIntent.getBroadcast(this, 192837, intent, PendingIntent.FLAG_UPDATE_CURRENT);原因:PendingIntent类型中的getBroadcast(Context, int, Intent, int)方法不适用于参数(alarm, int, Intent, int) alarm.java`
我的接收者 Java 文件名为 AlarmReciever.java。
如果有人发现我做错了什么,我将不胜感激。
【问题讨论】:
-
我正在尝试做类似的事情,我在phonegap闹钟上搜索并找到了一个插件。显然它不适用于 iOS。
-
要获取
ctx(上下文),您可以使用cordova.getActivity().getApplicationContext();。 this tutorial 也可以帮助你。
标签: java android alarmmanager phonegap-plugins