마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 알람 삭제가 안됩니다 도움 부탁드립니다.

0 추천
public class AlarmTestForHaruActivity extends Activity {
    /** Called when the activity is first created. */
 
 private AlarmManager alarmManager;
 private Context mContext;
 public static final int DEFAULT_ALARM_REQUEST = 800;
 
 TimePicker timePickerAlarmTime;
 Button btnAddAlarm;
 ListView listViewAlarm;
 ArrayList<AlarmData> arrayListAlarmTimeItem = new ArrayList<AlarmData>(); 
 
// GregorianCalendar currentCalendar = Calendar.getInstance(TimeZone.getTimeZone("GMT+09:00"));
 GregorianCalendar currentCalendar = new GregorianCalendar(TimeZone.getTimeZone("GMT+09:00"));

 private SharedPreferences sharedPref;
 private SharedPreferences.Editor sharedEditor;
 
 AdapterAlarm arrayAdapterAlarmList;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
         mContext = getApplicationContext();
        
         timePickerAlarmTime = (TimePicker)findViewById(R.id.timePickerAlarmTime);
      btnAddAlarm = (Button)findViewById(R.id.btnAddAlarm);
      listViewAlarm = (ListView)findViewById(R.id.listViewAlarm);
      
      sharedPref = getPreferences(Context.MODE_PRIVATE);
      sharedEditor = sharedPref.edit();
      
      timePickerAlarmTime.setIs24HourView(false);
      
      arrayAdapterAlarmList = new AdapterAlarm(mContext, arrayListAlarmTimeItem);
      listViewAlarm.setAdapter(arrayAdapterAlarmList);
        
      alarmManager = (AlarmManager)getApplicationContext().getSystemService(Context.ALARM_SERVICE);
      alarmManager.setTimeZone("GMT+09:00");
        
  
        
  btnAddAlarm.setOnClickListener(new OnClickListener() {
   
   @Override
   public void onClick(View v) {
    
    int hh = timePickerAlarmTime.getCurrentHour();
    int mm = timePickerAlarmTime.getCurrentMinute();
    int reqCode = DEFAULT_ALARM_REQUEST+arrayListAlarmTimeItem.size();
    int i =arrayListAlarmTimeItem.size();
    
    arrayListAlarmTimeItem.add(new AlarmData(hh, mm, reqCode));
    arrayAdapterAlarmList.notifyDataSetChanged();
    
    sharedEditor.putInt("list"+i+"hh", hh);
    sharedEditor.putInt("list"+i+"mm", mm);
    sharedEditor.putInt("list"+i+"reqCode", reqCode);
    sharedEditor.putInt("size", i);
    sharedEditor.commit();
    
    GregorianCalendar gregorianCalendar = new GregorianCalendar(TimeZone.getTimeZone("GMT+09:00"));
    
    int currentYY = currentCalendar.get(Calendar.YEAR);
    int currentMM = currentCalendar.get(Calendar.MONTH);
    int currentDD = currentCalendar.get(Calendar.DAY_OF_MONTH);
    
    gregorianCalendar.set(currentYY, currentMM, currentDD, hh, mm,00);

    if(gregorianCalendar.getTimeInMillis() < currentCalendar.getTimeInMillis()){
     gregorianCalendar.set(currentYY, currentMM, currentDD+1, hh, mm,00);
     Log.i("TAG",gregorianCalendar.getTimeInMillis()+":");
    }
     
    
    Intent intent = new Intent(AlarmTestForHaruActivity.this, ActivityAlarmedTimeShow.class);
    intent.putExtra("time", hh+":"+mm);
    intent.putExtra("data", "알람: " + currentCalendar.getTime().toLocaleString());
    intent.putExtra("reqCode", reqCode);
    
    Toast.makeText(mContext, "reqCode : "+reqCode, 0).show();
    
    PendingIntent pi = PendingIntent.getActivity(AlarmTestForHaruActivity.this, reqCode, intent,PendingIntent.FLAG_UPDATE_CURRENT );
    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, gregorianCalendar.getTimeInMillis() ,AlarmManager.INTERVAL_DAY, pi);
   }
  });
    }
    @Override
    protected void onResume() {
     super.onResume();
     arrayListAlarmTimeItem.clear();
     int size = sharedPref.getInt("size", 0);
     if(size !=0)
     for(int i = 0 ; i < size+1; i ++ ){
      int hh = sharedPref.getInt("list"+i+"hh", 0);
   int mm = sharedPref.getInt("list"+i+"mm", 0);
   int reqCode = sharedPref.getInt("list"+i+"reqCode", 0);
   
   arrayListAlarmTimeItem.add(new AlarmData(hh, mm, reqCode));
     }
     arrayAdapterAlarmList.notifyDataSetChanged();
    }
    
}

//등록은 돼는데 삭제가 안되서 질문 올립니다..

//삭제후 리스트 화면으로 돌아가면 리스트에 그대로 남아있습니다ㅜ 해답좀 부탁드립니다..

 

글램스케일 (120 포인트) 님이 2013년 6월 3일 질문

1개의 답변

0 추천

http://stackoverflow.com/questions/9290798/how-to-clear-previous-alarms-in-alarm-manager

 

Intent intentlocal = new Intent(SampledateActivity.this,AlarmReceiver.class);
PendingIntent pilocal = PendingIntent.getBroadcast(SampledateActivity.this,
                                                       uniqueno, intentlocal, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.cancel(pilocal);
pilocal.cancel();

 

aucd29 (218,390 포인트) 님이 2013년 6월 4일 답변
...