这是在Android中使用alarm manager启动服务的正确方法吗?
这是我的报警管理器代码。我想根据数据库的结果注册系统报警服务这是在Android中使用alarm manager启动服务的正确方法吗?,android,android-service,alarmmanager,android-broadcast,Android,Android Service,Alarmmanager,Android Broadcast,这是我的报警管理器代码。我想根据数据库的结果注册系统报警服务 public void onReceive(Context context, Intent intent) { AlarmManager alarmManager = (AlarmManager) context .getSystemService(Context.ALARM_SERVICE); SQLiteDatabase database = new TaskData
public void onReceive(Context context, Intent intent) {
AlarmManager alarmManager = (AlarmManager) context
.getSystemService(Context.ALARM_SERVICE);
SQLiteDatabase database = new TaskDatabaseManager(context)
.getWritableDatabase();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd",
Locale.US);
SimpleDateFormat dateFormat2 = new SimpleDateFormat("HH:mm", Locale.US);
String today = dateFormat.format(new Date());
Cursor c = database
.rawQuery("Select " + TaskDatabaseManager.TASK_TIMES2
+ " from " + TaskDatabaseManager.DATABASE_TABLE
+ " where " + TaskDatabaseManager.TASK_DATE + "= ?",
new String[] { today });
Intent intent1 = new Intent(context, NotificationService.class);
c.moveToFirst();
if (c.getCount() != 0) {
do {
try {
long mili = dateFormat2.parse(c.getString(0)).getTime();
PendingIntent p = PendingIntent.getService(context, 0,
intent1, 0);
alarmManager.set(AlarmManager.RTC_WAKEUP, mili, p);
Toast.makeText(context, "Next Next",
Toast.LENGTH_LONG).show();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} while (c.moveToNext());
}
}
下面是我的服务课。现在,为了测试这部分代码,我使用Toast
public class NotificationService extends Service {
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Toast.makeText(getApplicationContext(), "Worked", Toast.LENGTH_LONG).show();
return START_STICKY;
基本上,我想启动一个服务,在数据库中存储的特定时间显示特定通知。时间由用户输入,并根据该时间创建通知。我是新来安卓的。在你的清单上你写了什么
<service android:enabled="true" android:name=".NotificationService " />
检查c.getCount()是否为非零。正确的方法是
Intent otherIntent = new Intent();
otherIntent.setClass(this, YourService.class);
AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
PendingIntent intent = PendingIntent.getService(getApplicationContext(),
(int) System.currentTimeMillis(), otherIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
alarm.set(AlarmManager.RTC_WAKEUP, yourTimeInMillis(), intent);
对@Squonk但不起作用OK…所以添加一些日志并检查logcat。@Squonk log cat中没有任何内容我的意思是,如果您向代码添加
log
调用,您可以跟踪它到达的距离。@Squonk我知道如何使用log cat.)在广播接收器和服务类中,log cat I添加了log语句,日志中没有记录任何内容。但是什么都没有