web-dev-qa-db-fra.com

Comment démarrer / lancer l'application au démarrage Android

Je voudrais lancer mon application au démarrage de ma tablette, afin que l'activité principale de mon application soit la première chose que l'utilisateur voit lorsqu'il démarre la tablette.
J'ai lu sur LauncherActivity mais je ne comprends pas comment l'utiliser.
Quelqu'un peut-il m'aider avec des suggestions, des liens ou des tutoriels pour cela?
LauncherActivity est-elle la meilleure façon ou existe-t-il des alternatives?

37
Marco Gallella

Ces lignes de code peuvent vous être utiles ...

Étape 1: définissez l'autorisation dans AndroidManifest.xml

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

Étape 2: ajouter ce filtre d'intention dans le récepteur

<receiver Android:name=".BootReceiver">
    <intent-filter >
        <action Android:name="Android.intent.action.BOOT_COMPLETED"/>
    </intent-filter>
</receiver>

Étape 3: vous pouvez maintenant démarrer la première activité de votre application à partir de la méthode onReceive de la classe Receiver

public class BootReceiver extends BroadcastReceiver {

   @Override
   public void onReceive(Context context, Intent intent) {
       Intent myIntent = new Intent(context, MainActivity.class);
       myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
       context.startActivity(myIntent);
   }

}
79
vishesh chandra

Si vous souhaitez démarrer l'application au démarrage des tablettes, vous devez écouter l'action BOOT_COMPLETED et y réagir. BOOT_COMPLETED est une action de diffusion qui est diffusée une fois, une fois le démarrage du système terminé. Vous pouvez écouter cette action en créant un BroadcastReceiver qui démarre ensuite votre activité de lancement lorsqu'il reçoit une intention avec l'action BOOT_COMPLETED.

Ajoutez cette autorisation à votre manifeste:

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

Créez un récepteur de diffusion personnalisé dans votre projet:

public class MyBroadCastReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

        if(intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)){
            Intent i = new Intent(context, MyActivity.class);
            i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(i);
        }
    }
} 

Modifiez ensuite votre fichier manifeste en ajoutant BroadCastReceiver au manifeste:

<receiver Android:name=".MyBroadcastReceiver">
    <intent-filter>
       <action Android:name="Android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
</receiver>
13
Gunnar Karlsson

La réponse de @vishesh chandra est correcte. Mais sur certains appareils, cela ne fonctionne pas car l'application a été installée sur le stockage externe par défaut. Veuillez vous assurer que vous spécifiez

Android:installLocation="internalOnly"

sinon, vous ne recevrez aucune action Boot Complete si l'application est installée sur la carte SD. Ajoutez ceci dans la balise d'application dans le fichier manifest.xml et cela fonctionnera.

tilisation:

<application
        Android:name=".Data.ApplicationData"
        Android:allowBackup="true"
        Android:hardwareAccelerated="true"
        Android:icon="@mipmap/ic_launcher"
        Android:installLocation="internalOnly"
        Android:label="@string/app_name"
        Android:supportsRtl="true"
        Android:theme="@style/Theme.AppCompat.Light.NoActionBar.FullScreen">
        <!--activities, services...-->
</application>
4

Je voudrais ajouter un point dans cette question à laquelle je faisais face depuis quelques jours. J'ai essayé toutes les réponses mais celles-ci ne fonctionnaient pas pour moi. Si vous utilisez Android version 5.1, veuillez modifier ces paramètres.

Si vous utilisez Android version 5.1, vous devez désélectionner (Restreindre au lancement) dans les paramètres de l'application.

paramètres> application> votre application> Restreindre au lancement (désélectionner)

s'il vous plaît voir l'image.

Image

1
Manish Yadav