2017-05-31 3 views
0

J'ai un service android qui s'exécute quand j'ouvre mon application, maintenant je veux que mon service android s'exécute au démarrage. J'ai essayé le code ci-dessous, mais le service ne fonctionne pas automatiquement lorsque je redémarre mon appareil. Je ne peux pas le voir fonctionner comme un service sur mon téléphone! Y a-t-il quelque chose qui ne va pas dans mon code?Qt android Impossible d'écouter les intentions ex.RECEIVE_BOOT_COMPLETED

J'ajouté ces autorisations au manifeste:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> 
<uses-permission android:name="android.permission.RECEIVE_HEADSET_PLUG"/> 

Voici mon récepteur dans le manifeste:

<receiver android:name="org.qtproject.example.MyBroadcastReceiver"> 
    <intent-filter> 
    <action android:name="android.intent.action.RECEIVE_BOOT_COMPLETED"/> 
    <action android:name="android.intent.action.RECEIVE_HEADSET_PLUG"/> 
    </intent-filter> 
</receiver> 

Et voici MyBroadcastReceiver.java:

import android.os.Bundle; 
import org.qtproject.qt5.android.bindings.QtActivity; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 

public class MyBroadcastReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     Intent startServiceIntent = new Intent(context, org.qtproject.example.MyCustomAppService.class); 
     context.startService(startServiceIntent); 

    } 
} 
+0

Et quel est votre problème? – jpo38

+0

@ jpo38 Mon problème est que le service ne démarre pas automatiquement lorsque je redémarre mon appareil Android. Je ne peux pas le voir fonctionner dans mes services téléphoniques. Y a-t-il quelque chose qui ne va pas dans mon code? – Mena

+0

Dunno. Mais maintenant, votre message pose une question, j'espère que quelqu'un y répondra. – jpo38

Répondre

0

ok donc j'ai eu 2 problèmes dans mon code:

1) Merci à @kajay, je devais changer ma ligne d'action comme il décrit, être: <action android:name="android.intent.action.BOOT_COMPLETED"/> dans la manifeste.

2) Il me manquait la définition du paquet dans MyBroadcastReceiver.java. Ainsi, la classe n'a pas pu trouver startServiceIntent. Bien sûr, qt ne donne aucune erreur ou avertissement avec de nombreux problèmes Java. Donc, dans mon cas, je devais ajouter à la MyBroadcastReceiver.java:

package org.qtproject.example; 

je devais faire les deux étapes ci-dessus pour résoudre mon problème! P.S Parfois, le service prend environ 45 secondes ou plus pour démarrer après le démarrage!

1

remplacer <action android:name="android.intent.action.RECEIVE_BOOT_COMPLETED"/> avec <action android:name="android.intent.action.BOOT_COMPLETED"/> dans le manifeste

+0

Merci, ça a fonctionné avec le démarrage! Mais, pourquoi la même solution ne fonctionne-t-elle pas avec ? – Mena