12
votes

Application de démarrage automatique après le démarrage terminé dans Android

Je veux faire une application qui a une option de démarrage automatique dans ses paramètres. J'ai apporté une activité de paramètres dans ma demande qui est dérivée de la préférence et donnez-vous à la cocheboxpropreference pour l'option de démarrage automatique. Si l'option de démarrage automatique est activée, mon application doit démarrer lorsque le démarrage du téléphone est terminé. Et si l'option de démarrage automatique est désactivée, il ne doit pas démarrer sur le démarrage terminé.

Pour atteindre cet objectif, j'ai mis en œuvre une classe dérivée de large de diffèves qui reçoit l'intention de Boot_Combréted, déclarez récepteur dans AndroidManifest.xml et donnez également la permission dans AndroidManifest.xml.

dans l'application également, il existe également une classe d'application dérivée et un service de démarrage également à partir de la méthode ONCREATE de classe dérivée d'application. Si je déclare le récepteur dans AndroidManifest.xml, puis après le démarrage terminé ONCREATE de mon application appelée et après cette méthode onreceive de Broadcastructeur appelée.

Maintenant, le problème est que mon application commence au démarrage terminé chaque fois si le démarrage automatique est activé ou désactivé. Est-il possible de ne pas démarrer l'application lorsque le démarrage automatique est désactivé?


5 Réponses :


10
votes

Vous pouvez utiliser la préférence partagée pour stocker une valeur booléenne pour isautostartenabled et vérifier cette valeur dans le BroadCastreciver, déclencher une intention uniquement si c'est vrai.

Dans votre cas, le problème n'est pas de savoir si vous recevez la diffusion mais qui reçoit la diffusion. Bonne chance ..

J'espère que cela aide ..


8 commentaires

Mais après le démarrage terminé, mon oncrate de ma classe dérivée de ma demande est appelée avant d'appeler OneReceive of Broadcasteceerer. Cela signifie que ma demande est créée ou démarrée. Mais je ne veux pas démarrer Application si le démarrage automatique est désactivé.


Pouvez-vous poster le contenu de votre fichier manifeste? Je pense que le problème peut rester là-bas ...


Assurez-vous que dans vous, le fichier manifeste l'intention du filtre pour boot_complete n'est pas avec votre étiquette d'activité mais avec votre étiquette de récepteur.


Ya. C'est dans la balise récepteur. L'application reçoit l'intention de démarrage terminée chaque fois que parfaitement, il n'y a donc aucun problème dans le fichier manifeste. Je ne veux pas le recevoir à chaque fois.


Avez-vous vérifié que l'activité qui est démarrée sur boot_commlete est enregistrée pour recevoir la diffusion boot_commete?


Oui. Mais ce n'est pas le problème. Veuillez lire la question à nouveau.


Dans votre cas, le problème n'est pas de savoir si vous recevez la diffusion mais qui reçoit la diffusion. Bonne chance..


J'ai une application excessive si le démarrage automatique est désactivé. Mais pour vérifier le drapeau et recevoir l'intention de démarrage_completé, il est nécessaire de démarrer l'application (application automatiquement démarrée pour recevoir l'intention boot_completé).



6
votes

Je pense de Android 3.1 en avant Strong> Votre radiodifférieur qui reçoit boot_completted code> l'intention de ne pas aller travailler. L'utilisateur doit inaccesser l'application en interagissant avec elle.

Ainsi, après avoir démarré l'appareil, toutes les applications tierces sont menées comme une butée. P>

et pour actuellement votre application que vous pouvez utiliser SharedPreferences CODE> pour démarrer automatiquement votre application .. p>

Mise à jour: stry> ( uniquement pour la version Android ci-dessous 3.1 pour une version supérieure, cela fonctionne, mais vous devez être une interaction utilisateur Avec votre application après le démarrage terminé sur le périphérique EM>) P>

Vous devez utiliser un BroadCastraCeiver Code> avec Android.Intent.action.boot_commanded "/ code> Intention. P>

Ajouter après à votre fichier manifeste: P>

public void onReceive(Context context, Intent intent) {
    // make sure you receive "BOOT_COMPLETED"
// Here isAutoStartEnabled check sharedPreferences for Auto Start flag
if ( isAutoStartEnabled ) {

    if ((intent.getAction() != null) && (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")))
    {
        // Start the service or activity 
    }
}


5 commentaires

Actuellement, j'ai déjà lu le drapeau du démarrage automatique en utilisant SharedPreference. Mais comment surtout pour ne pas démarrer l'application lorsque le démarrage automatique est désactivé? Pouvez-vous donner une réponse en détail?


J'ai écrit qu'il est déjà mis en œuvre dans l'application. Et cela fonctionne parfaitement, mais je ne veux pas recevoir l'intention à chaque fois parce qu'il commence l'application à chaque fois. Est-il possible de ne pas recevoir de démarrage terminé l'intention à chaque fois?


Non, si vous enregistrez un récepteur de diffusion, alors lorsque toute action apporte sur le périphérique pour cette diffusion, vous ne pouvez pas contrôler après l'enregistrement .. Utilisez simplement votre condition ..


Utilisez des fichiers pour enregistrer les paramètres. Et vérifiez-les dans votre récepteur de démarrage automatique.


@ user370305 La "mise à jour" est un peu trompeuse car elle ne l'a pas mentionné si elle le fait également fonctionner sur Android 3.0+ ou uniquement Android 2.x. Je vous suggère de clarifier dans la réponse, sinon les utilisateurs peuvent penser que la mise à jour résout ce que vous avez mentionné dans votre première phrase de votre réponse. À votre santé.



1
votes
final SharedPreferences sharedPreferences = getSharedPreferences("Application", MODE_PRIVATE);
        boolean isAutoStartEnabled = sharedPreferences.getBoolean("isAutoStartEnabled", false);

        if ( isAutoStartEnabled ) {
            startActivity(new Intent());
        } 
I hope this helps you

2 commentaires

En application, il existe également un service qui commence en arrière-plan lorsque l'application est créée, il n'y a pas seulement une activité dans l'application.


Des paramètres lorsque vous désélectionnez la case à cocher, la valeur SharedPreference Set "IsautOsArtenabled" sur FAUX, sinon le rendez-le. Et en amortisseur Complete Cochez la valeur "IsautSarTartenabled" de SharedPreference.



6
votes

Vous devez ajouter l'autorisation Utilisations android.permission.receive_boot_completned dans votre manifeste.


0 commentaires

1
votes

Le code suivant fonctionne pour moi: xxx


0 commentaires