2017-04-18 34 views
0

您好以下是我的代碼以啓動我的應用程序中的alarm指定日期後開始報警

public static void startReferAlarm(Context context,String[] message,String activityToOpen) 
{ 
    try { 

     Log.d("Refer friend Activity", "Alarm On"); 
     Calendar calendar = Calendar.getInstance(); 

     calendar.set(Calendar.HOUR_OF_DAY, 8); 
     Intent myIntent = new Intent(context, AlarmReciever.class); 
     myIntent.putExtra("message",message); 
     myIntent.putExtra("äctivityName",activityToOpen); 

     final int _id = (int) System.currentTimeMillis(); 
     PendingIntent appIntent = PendingIntent.getBroadcast(context, _id, myIntent, PendingIntent.FLAG_UPDATE_CURRENT); 

     //48*60*60*1000 

     AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 

     alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 
       48*60*60*1000, appIntent); 

    }catch (Exception e) { 
     Log.d("MyActivity", "Alarm Off"); 
     e.printStackTrace(); 
    } 
} 

從我低估了上面的代碼將啓動報警,並通知上上午8點。然後將在48小時後重複

但是我想在48 hours之後開始報警或者讓7 hours之後再說,然後在每個48 hours之後重複。

請幫助我的logic.Thanks提前。

+0

你問的是如何增加開始時間的時間?看看'Calendar#add()'方法。 –

+0

嘿邁克。不。我在詢問如何設置初始發佈日期和時間。例如。我安裝應用程序,但從未創建配置文件。因此,應用程序將等待7天,然後啓動警報,要求用戶創建配置文件。並且此警報將在預定時間的隔天重複。 –

+0

那麼,是的,那麼。您希望將7天添加到當前的初始警報的開始時間。 –

回答

1

不要使用calender.set(Calendar.HOUR, 8),因爲它會設定小時8'o時鐘

嘗試

//if you want to add 7 hours 
calender.add(Calender.HOUR, 7); //this will add 7 hours to current time 

//if you want to add 7 days 
calender.add(Calender.DAY_OF_MONTH, 7); //this will add 7 days to current time 

// interval to repeat alarm after 48hours 
int interval = 48 * 60 * 60 * 1000; 

更換Calendar.HOURCalendar.HOUR_OF_THE_DAY如果你想在24小時格式使用它。

見重複報警的問題How to repeat alarm in android 6.0

+0

嗨thnx提示。如何在應用程序安裝7天后啓動鬧鐘並在隔天重複鬧鐘。我們需要在calender.add()方法中傳遞。 –

+0

我已更新答案 – Pehlaj

+1

Thnx。這是我的代碼。 calendar.add(DAY_OF_MONTH,7); 7天后啓動。 calendar.set(Calendar.HOUR_OF_DAY,9);在當天早上9點開始 重複48小時。 alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(), 48 * 60 * 60 * 1000,createProfileAppIntent); –

1

對於任何一個誰仍然是混淆了答案。以下方法將在上午9點通知的任何特定操作的7天后發起警報,並在48小時後重複。

public static void startCreateProfileAlarm(Context context,AlarmManager alarmManager ,String[] message,String activityToOpen) { 

    try { 

     //working code 
     Calendar calendar = Calendar.getInstance(); 
     calendar.add(DAY_OF_MONTH,7); 
     //calendar.add(Calendar.HOUR_OF_DAY,1); 
     calendar.set(Calendar.HOUR_OF_DAY, 9); 

     // we can set any time here 
     //calendar.set(Calendar.HOUR_OF_DAY, 10); 

     Intent myIntent = new Intent(context, AlarmReciever.class); 
     myIntent.putExtra("message",message); 
     myIntent.putExtra("äctivityName",activityToOpen); 


     final int _id = (int) System.currentTimeMillis(); 

     createProfileAppIntent = PendingIntent.getBroadcast(context, 0, myIntent, PendingIntent.FLAG_UPDATE_CURRENT); 


     //48*60*60*1000 
     //2*60*1000 
     alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 
       48*60*60*1000, createProfileAppIntent); 


    }catch (Exception e) { 
     Log.d("MyActivity", "Alarm Off"); 
     e.printStackTrace(); 
    } 
} 
相關問題