2013-12-15 41 views
1

我有應用程序,在特定的時間開始狀態欄中的通知。但是,當時間流逝,每當我啓動應用程序,他再次開始通知。Android:在特定時間的狀態欄通知

在此先感謝。

下面是代碼:

活動:MainActivity

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.activity_main); 


     //notifications with solve problem 

     Calendar calendar = Calendar.getInstance(); 


     calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); 

     calendar.set(Calendar.HOUR_OF_DAY, 17); 
     calendar.set(Calendar.MINUTE, 30); 
     calendar.set(Calendar.SECOND, 0); 


     calendar.getTimeInMillis(); 


     long current_time = System.currentTimeMillis(); 



     long limit_time = calendar.getTimeInMillis(); 

     if (current_time > limit_time) { 
      //nothing 
     } else { 
      Intent myIntent = new Intent(MainActivity.this, MyReceiver.class); 
      pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, myIntent, 0); 


      AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 
      alarmManager.set(AlarmManager.RTC, calendar.getTimeInMillis(), pendingIntent); 

     } 

     } 

    } 

活動:MyReceiver

public class MyReceiver extends BroadcastReceiver{ 


@Override 
public void onReceive(Context context, Intent intent) 
{ 
    Intent service1 = new Intent(context, MyAlarmService.class); 
    context.startService(service1); 

    } 
} 

活動:MyAlarmService

public class MyAlarmService extends Service{ 

    private NotificationManager mManager; 

    @Override 
    public IBinder onBind(Intent arg0) 
    { 
    // TODO Auto-generated method stub 
    return null; 
    } 

    @Override 
    public void onCreate() 
    { 
    // TODO Auto-generated method stub 
    super.onCreate(); 
    } 

    @SuppressWarnings("static-access") 
    @Override 
    public void onStart(Intent intent, int startId) 
{ 
    super.onStart(intent, startId); 

    mManager = (NotificationManager) this.getApplicationContext().getSystemService(this.getApplicationContext().NOTIFICATION_SERVICE); 
    Intent intent1 = new Intent(this.getApplicationContext(),MainActivity.class); 

    Notification notification = new Notification(R.drawable.ic_launcher,"Run this app", System.currentTimeMillis()); 
    intent1.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP| Intent.FLAG_ACTIVITY_CLEAR_TOP); 

    PendingIntent pendingNotificationIntent = PendingIntent.getActivity(this.getApplicationContext(),0, intent1,PendingIntent.FLAG_UPDATE_CURRENT); 
    notification.flags |= Notification.FLAG_AUTO_CANCEL; 
    notification.setLatestEventInfo(this.getApplicationContext(), "Horoscope", "Run this app", pendingNotificationIntent); 

    mManager.notify(0, notification); 
} 

    @Override 
    public void onDestroy() 
    { 
    // TODO Auto-generated method stub 
    super.onDestroy(); 
    } 

} 

我解決PROBL時間與這個職位 - Notification at specific time

回答

0

使用

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, 
       calendar.getTimeInMillis(), SYNC_REPEAT_MILLSECONDS, pendingIntent); 

代替

alarmManager.set(AlarmManager.RTC, calendar.getTimeInMillis(), pendingIntent); 
+0

這確實的幫助不work.Thanks。 –