2016-07-13 1 views
2

J'essayais de faire une alarme qui montre la notification tous les jours à 8h00. Mais ça ne s'est pas montré du tout. Puis j'ai essayé de faire un bouton pour le faire apparaître après 5 secondes. J'ai essayé ce codeLa notification ne s'affiche pas

AlarmReceiver.java

public class AlarmReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     createNotification(context, "8A.M activity","It's time for breakfast!","Alert"); 
    } 
    public void createNotification(Context context, String msg, String msgText,String msgAlert){ 
     PendingIntent notificIntent = PendingIntent.getActivity(context,0,new Intent(context, MainActivity.class),0); 
     NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context) 
       .setSmallIcon(R.drawable.logo_2424) 
       .setContentTitle(msg) 
       .setTicker(msgAlert) 
       .setContentText(msgText); 
     mBuilder.setContentIntent(notificIntent); 
     mBuilder.setDefaults(NotificationCompat.DEFAULT_SOUND); 
     mBuilder.setAutoCancel(true); 
     NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 
     mNotificationManager.notify(1, mBuilder.build()); 
    } 
} 

MainActivity.java

public class MainActivity extends AppCompatActivity { 
    Button nof 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     nof = (Button) findViewById(R.id.btnNoftification); 


     Intent myIntent = new Intent(MainActivity.this , AlarmReceiver.class); 
     final AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 
     //PendingIntent pendingIntent = PendingIntent.getService(this, 0, myIntent, 0); 
     Calendar calendar = Calendar.getInstance(); 
     calendar.set(Calendar.HOUR_OF_DAY, 8); 
     calendar.set(Calendar.MINUTE, 00); 
     calendar.set(Calendar.SECOND, 00); 
     alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 24*60*60*1000 , PendingIntent.getBroadcast(MainActivity.this,1,myIntent,PendingIntent.FLAG_UPDATE_CURRENT)); //set repeating every 24 hours 

     nof.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Long alertTime = new GregorianCalendar().getTimeInMillis()+5*1000; 
       Intent alertIntent = new Intent(MainActivity.this,AlarmReceiver.class); 
       AlarmManager alarmManager1 = (AlarmManager)getSystemService(Context.ALARM_SERVICE); 
       alarmManager.set(AlarmManager.RTC_WAKEUP,alertTime,PendingIntent.getBroadcast(MainActivity.this,1,alertIntent,PendingIntent.FLAG_UPDATE_CURRENT)); 
       //alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 24*60*60*1000 , PendingIntent.getBroadcast(MainActivity.this,1,myIntent,PendingIntent.FLAG_UPDATE_CURRENT)); //set repeating every 24 hours 
      } 
     }); 

je l'ai déjà ajouté la permission dans AndroidManifest

<uses-permission android:name="com.android.alarm.permission.SET_ALARM"/> 
+0

Avez-vous inclus votre classe 'AlarmReceiver' dans Manifest en tant que récepteur? – Marat

+0

oh merci, monsieur: D –

+0

Cela a-t-il fonctionné maintenant? – Marat

Répondre

0

Ajoutez votre classe AlarmReceiver dans AndroidManifest en tant que récepteur à l'intérieur du tag <application />.

<receiver android:name=".Alarms.AlarmReceiver"/>