2016-05-13 2 views
1

J'ai 3 boutons dans mon applicationnotification ne montrant pas si nécessaire après un certain temps. mais je travaille sur place seulement

Le premier bouton affiche la notification sur le bouton cliqué.

Le deuxième bouton annule la notification affichée.

Le troisième bouton doit afficher la notification après 5 secondes.

Le premier et le deuxième bouton fonctionnent, mais le troisième ne fonctionne pas. il ne montre aucune erreur dans la compilation. Quelqu'un peut-il me dire quel est le problème avec ce morceau de code?

public void setAlarm(View view) { 
     Long alertTime=new GregorianCalendar().getTimeInMillis()+5000; 
     Intent alertIntent=new Intent(this,AlertReceiver.class); 
     AlarmManager alarmManager=(AlarmManager) 
       getSystemService(Context.ALARM_SERVICE); 
     alarmManager.set(AlarmManager.RTC_WAKEUP, alertTime, 
       PendingIntent.getBroadcast(this,1, alertIntent, 
         PendingIntent.FLAG_UPDATE_CURRENT)); 
    } 

Voici mon activité complète Principale

package com.test.notification2; 

import android.app.AlarmManager; 
import android.app.NotificationManager; 
import android.app.PendingIntent; 
import android.app.TaskStackBuilder; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.support.v4.app.NotificationCompat; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.View; 
import android.widget.Button; 
import android.widget.Toast; 

import java.util.GregorianCalendar; 

public class MainActivity extends AppCompatActivity { 

    Button showNotificationBut, stopNotificationBut,alertButton; 
    NotificationManager notificationManager; 

    boolean isNotificActive=false; 

    int notifID=33; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     showNotificationBut=(Button)findViewById(R.id.showNotificationBut); 
     stopNotificationBut=(Button)findViewById(R.id.stopNotificationBut); 
     alertButton=(Button)findViewById(R.id.alertButton); 


    } 


    public void showNotification(View view) { 
     NotificationCompat.Builder notificBuilder= new 
       NotificationCompat.Builder(this) 
       .setContentTitle("Message") 
       .setContentText("New Message") 
       .setTicker("Alert New Message") 
       .setSmallIcon(R.drawable.my_image); 

     Intent moreInfoIntent=new Intent(this,MoreInfoNotification.class); 

     TaskStackBuilder taskStackBuilder=TaskStackBuilder.create(this); 
     taskStackBuilder.addParentStack(MoreInfoNotification.class); 
     taskStackBuilder.addNextIntent(moreInfoIntent); 
     PendingIntent pendingIntent=taskStackBuilder.getPendingIntent(0, 
       PendingIntent.FLAG_UPDATE_CURRENT); 
     notificBuilder.setContentIntent(pendingIntent); 

     notificationManager=(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); 
     notificationManager.notify(notifID, notificBuilder.build()); 
     isNotificActive=true; 


    } 

    public void stopNotification(View view) { 
     if(isNotificActive){ 
      notificationManager.cancel(notifID); 
     } 
    } 

    public void setAlarm(View view) { 
     Long alertTime=new GregorianCalendar().getTimeInMillis()+5000; 
     String s = String.valueOf(alertTime); 
     Toast.makeText(this,s,Toast.LENGTH_SHORT).show(); 

     Intent alertIntent=new Intent(this,AlertReceiver.class); 
     AlarmManager alarmManager=(AlarmManager) 
       getSystemService(Context.ALARM_SERVICE); 
     alarmManager.set(AlarmManager.RTC_WAKEUP, alertTime, 
       PendingIntent.getBroadcast(this,1, alertIntent, 
         PendingIntent.FLAG_UPDATE_CURRENT)); 
    } 
} 

Voici AlertReceiver Classe:

package com.test.notification2; 

import android.app.NotificationManager; 
import android.app.PendingIntent; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.support.v4.app.NotificationCompat; 

/** 
* Created by waqas on 13/05/2016. 
*/ 
public class AlertReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     createNotification(context,"Times up","5 seconds has passed", 
       "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.my_image) 
       .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()); 

    } 
} 
+0

quelqu'un ici ??? –

Répondre

4

Ce code fonctionne très bien. Avez-vous enregistré le service dans le manifeste ??

 <receiver android:name=".AlertReceiver"> 
    </receiver> 
+0

ouais tu r 100% correct. Merci pour l'aide! –

+0

Accepter ma réponse si c'est utile :) – deepThought