2017-08-30 1 views
1

J'essaie d'avoir un intentservice fonctionnant comme je l'ai fait avec un service de localisation d'économiser dans un fichier parfaitement.android studio intentservice ne fonctionne pas en dehors de l'application

Le service affiche une notification lorsqu'un fichier se trouve dans un répertoire. cela fonctionne bien dans une activité mais ne fonctionne pas quand je ferme.

Voici mon code:

public class NotifyService extends IntentService { 



public NotifyService() { 
    super("NotifyService"); 
} 

@Override 
protected void onHandleIntent(Intent intent) { 
      File alerte = new File(Environment.getExternalStorageDirectory() + 
      File.separator +"SmartCollecte"+File.separator+ "ALERTE"+File.separator+ "IN"+File.separator+"alerte"); 
    if(alerte.exists()){ 
     createNotification(); 
    } 
    else{} 

} 




@TargetApi(Build.VERSION_CODES.JELLY_BEAN) 
public void createNotification() { 

    Intent intent = new Intent(this, NotificationReceiverActivity.class); 
    PendingIntent pIntent = PendingIntent.getActivity(this, (int) System.currentTimeMillis(), intent, 0); 


    Notification noti = new Notification.Builder(this) 
      .setContentTitle("nouvelle collecte " + "[email protected]") 
      .setContentText("une nouvelle collecte est disponible").setSmallIcon(R.drawable.notification) 
      .setContentIntent(pIntent) 
      .setSmallIcon(R.drawable.notification) 
      .build(); 
    NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 

    noti.flags |= Notification.FLAG_AUTO_CANCEL; 

    notificationManager.notify(0, noti); 

} 

}

Je ne peux pas trouver tout ce qui me manque ... Merci pour votre aide

+0

quelle version d'Android que vous tester sur –

+0

Je suis encore sur 5.1 maintenant – filoman

+0

comment voulez-vous le service d'incendie intention? – Vyacheslav

Répondre

0

Cette solution ne fonctionne que pour PRECO 26 (Android O) SDK:

Vous devez lancer votre service d'intention en utilisant WakefulBroadcastReceiver vieillir votre service en utilisant alarmmanager, vous empêchez d'être tué par le système (verrou de réveil) et supprimez Activity dépendances.

En outre, je suggère d'utiliser ce même afin de vous implémenter idée.

https://developer.android.com/reference/android/support/v4/content/WakefulBroadcastReceiver.html

+0

cela semble être la bonne façon de faire ce que je veux! Merci Vyacheslav j'ai trouvé un bon exemple pour utiliser le gestionnaire d'alarme: https://www.mindstick.com/Articles/1627/alarmmanager-with-broadcastreceiver-in-android – filoman

+0

@filoman accepter la réponse si elle était utile – Vyacheslav