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é. p>
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. STRUT> P>
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. strong> 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. P>
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é? Strong> p>
5 Réponses :
Vous pouvez utiliser la préférence partagée pour stocker une valeur booléenne pour Dans votre cas, le problème n'est pas de savoir si vous recevez la diffusion mais qui reçoit la diffusion. Bonne chance .. p>
J'espère que cela aide .. p> isautostartenabled code> et vérifier cette valeur dans le BroadCastreciver, déclencher une intention uniquement si c'est vrai. P>
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é).
Je pense de Android 3.1 en avant Strong> Votre radiodifférieur qui reçoit 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 Vous devez utiliser un Ajouter après à votre fichier manifeste: P> boot_completted code> l'intention de ne pas aller travailler. L'utilisateur doit inaccesser l'application en interagissant avec elle.
SharedPreferences CODE> pour démarrer automatiquement votre application .. p>
BroadCastraCeiver Code> avec
Android.Intent.action.boot_commanded "/ code> Intention. 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
}
}
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é.
final SharedPreferences sharedPreferences = getSharedPreferences("Application", MODE_PRIVATE); boolean isAutoStartEnabled = sharedPreferences.getBoolean("isAutoStartEnabled", false); if ( isAutoStartEnabled ) { startActivity(new Intent()); } I hope this helps you
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.
Vous devez ajouter l'autorisation Utilisations
Le code suivant fonctionne pour moi:
Dupliqué possible de Essayer de démarrer un service au démarrage sur Android a>