2013-08-04 2 views
0

이것은 알람 관리자 용 코드입니다. 데이터베이스의 결과를 기반으로 시스템 알람 서비스에 등록하고 싶습니다.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; 

기본적으로 데이터베이스에 저장된 특정 시간에 특정 알림을 표시하는 서비스를 시작하려고합니다. 사용자가 시간을 입력하면 그 시간에 알림이 생성됩니다. 나는 안드로이드가 처음이다. 매니페스트에서

+0

당신이 그것을 시도 적이있다? – Squonk

+0

예. @ 스컹크지만 작동하지 않습니다 –

+0

OK ... 그래서 일부 로깅을 추가하고 logcat을 확인하십시오. – Squonk

답변

1

이 작업을 수행하는 올바른 방법은

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); 
0

당신은 그것을가 0인지 아닌지

<service android:enabled="true" android:name=".NotificationService " /> 

확인 c.getCount()를 작성했습니다.