이것은 알람 관리자 용 코드입니다. 데이터베이스의 결과를 기반으로 시스템 알람 서비스에 등록하고 싶습니다.Android에서 알람 관리자로 서비스를 시작하는 올바른 방법입니까?
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;
기본적으로 데이터베이스에 저장된 특정 시간에 특정 알림을 표시하는 서비스를 시작하려고합니다. 사용자가 시간을 입력하면 그 시간에 알림이 생성됩니다. 나는 안드로이드가 처음이다. 매니페스트에서
당신이 그것을 시도 적이있다? – Squonk
예. @ 스컹크지만 작동하지 않습니다 –
OK ... 그래서 일부 로깅을 추가하고 logcat을 확인하십시오. – Squonk