4

私はBroadCastReceiverを使用しています。ここにはBOOT_COMPLETEDというアクションがあります。この放送を受信した後、AlarmManagerが設定されており、このAlarmManager火災通知:ブロードキャストreciverため コード:しばらくの間、アンドロイドの通知バーにnoftificationsが表示されてから消えてしまいます

package pit.opensource.events; 

import java.util.Calendar; 

import android.app.AlarmManager; 
import android.app.PendingIntent; 
import android.app.Service; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.util.Log; 

public class BootReciver extends BroadcastReceiver { 

    Context c; 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     // TODO Auto-generated method stub 

    // Intent i = new Intent(context,SetAlarmService.class); 
    // context.startService(i); 
     setAlarm(context); 
     Log.d("Alarm","Boot Reciver"); 

    } 
    private void setAlarm(Context c){ 
     Log.d("Alarm","Set alarm service--------------"); 
     AlarmManager alarm = (AlarmManager)c.getSystemService(Service.ALARM_SERVICE); 


     Calendar cal = Calendar.getInstance(); 

     cal.setTimeInMillis(System.currentTimeMillis()); 
     cal.clear(); 
     cal.set(2012,5,11,5,11); 


     Intent i = new Intent(c,ShowNotificationService.class); 
     PendingIntent pendingIntent = PendingIntent.getService(c, 12345,i, 0); 

     // alarm.set(AlarmManager.RTC_WAKEUP, dateNotif.getTime(), pendingIntent); 
     //alarm.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pendingIntent); 
     alarm.set(AlarmManager.RTC_WAKEUP, 5000, pendingIntent); 


     Log.d("Alarm","Alarm is alreday set*****************"); 

    } 


} 

ShowNotificationServiceのためのコード:

package pit.opensource.events; 

import android.app.Notification; 
import android.app.NotificationManager; 
import android.app.PendingIntent; 
import android.app.Service; 
import android.content.Intent; 
import android.os.IBinder; 
import android.util.Log; 
import android.widget.Toast; 

public class ShowNotificationService extends Service { 

    @Override 
    public IBinder onBind(Intent intent) { 
     // TODO Auto-generated method stub 
     return null; 
    } 
    @Override 
    public void onStart(Intent intent,int startId){ 

     Toast.makeText(getApplicationContext(), "Alaraaaaaaaam", Toast.LENGTH_LONG).show(); 
     Log.d("Alarm","Notification Service"); 
     showNotification(); 
    } 
    private void showNotification(){ 
     Intent i = new Intent(getApplicationContext(), DetailsActivity.class); 

     Toast.makeText(getApplicationContext(), "Dowanlod finished!", Toast.LENGTH_LONG).show(); 

     int notificationID = 1; 
     NotificationManager nm = (NotificationManager) getSystemService(getApplicationContext().NOTIFICATION_SERVICE); 

     Log.d("Notification","Notification is set--------------------"); 
     PendingIntent contentIntent = PendingIntent.getActivity(getApplicationContext(), 0, i, 0); 

     CharSequence tickerText = "Alaraaaaaaaam!"; 
     long when = System.currentTimeMillis(); 
     int icon = R.drawable.ic_launcher; 

     Notification notification = new Notification(icon,tickerText,when); 

     CharSequence contentTitle = "Alarm Alarm Alarm Alarm !!"; 
     CharSequence contentText = "Please click here to display more details"; 


     notification.setLatestEventInfo(getApplicationContext(), contentTitle, contentText, contentIntent); 

     //---100ms delay, vibrate for 250ms, pause for 100 ms and 
     // then vibrate for 500ms--- 
     notification.vibrate = new long[] { 100, 250, 100, 500}; // Needs vibrate permissions 

     nm.notify(notificationID, notification); 
    } 
} 

答えて

1

通知が理由の後、なくなっていますBroadcastReceiverが終了しました。あなたのアプリケーションはもうアクティブではありません。また、非アクティブなアプリケーションからの通知は自動的に削除されます。

+0

解決策は何ですか? – Adham

+0

私はこれを個人的にはチェックしませんでしたが、あなたのサービスで 'onStartCommand()'をオーバーライドし、サービスが終了するまでサービスが実行されることをシステムに知らせるため 'return START_STICKY; – lenik

関連する問題