J'ai le scénario suivant dans mon application. Il n'y a pas d'interface utilisateur dans ma candidature. à la place, il existe un service qui démarre au démarrage et continue à fonctionner.
Comment puis-je configurer mon fichier manifeste sans activité principale? Puis-je lancer mon application sans aucune activité? Et au lancement de mon application, mon service devrait commencer. Est-ce possible?
Je ne veux pas faire une activité translucide pour démarrer le service.
Vous avez dit que vous ne souhaitiez pas utiliser une activité translucide, mais cela semble être le meilleur moyen de le faire:
Theme.Translucent.NoTitleBar
.setContentView()
.onCreate()
de votre activité, démarrez votre service avec startService()
.finish()
une fois que vous avez démarré le service.En d'autres termes, votre activité ne doit pas nécessairement être visible; vous pouvez simplement vous assurer que votre service est en cours d'exécution, puis quitter, ce qui ressemble à ce que vous voulez.
Je recommanderais vivement de montrer au moins un notification Toast indiquant à l'utilisateur que vous lancez le service ou qu'il est déjà en cours d'exécution. C'est une très mauvaise expérience utilisateur d'avoir une icône de lanceur qui semble ne rien faire lorsque vous appuyez dessus.
Oui, vous pouvez le faire en créant simplement un BroadcastReceiver
qui appelle votre Service
au démarrage de votre application. Voici une réponse complète donnée par moi.
Android - Démarrer le service au démarrage
Si vous ne voulez pas d'icône/lanceur pour votre application, vous pouvez le faire aussi, mais ne créez aucune activité avec
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
Déclarez simplement votre Service
comme déclaré normalement.
La raison de créer une application sans activité ou service peut être de créer une application de widget qui n'a pas besoin d'être démarrée.
Une fois que vous démarrez un projet, ne créez aucune activité. Après avoir créé le projet, cliquez simplement sur Exécuter. Android le studio dira No default activity found
.
Cliquez Edit Configuration et dans la partie Launch Option , configurez la valeur Launch à rien. Puis cliquez sur ok et lancez l'application. Aucune application ne sera affichée dans le menu Applications .
Android Studio version 2.3
Vous pouvez créer un service sans activité principale en suivant quelques étapes simples. Vous pourrez installer cette application via Android Studio et la déboguer comme une application normale.
Tout d’abord, créez un projet dans Android Studio sans activité. Créez ensuite votre classe Service et ajoutez le service à votre AndroidManifest.xml
<application Android:allowBackup="true"
Android:label="@string/app_name"
Android:icon="@mipmap/ic_launcher"
Android:roundIcon="@mipmap/ic_launcher_round"
Android:supportsRtl="true"
Android:theme="@style/AppTheme">
<service Android:name="com.whatever.myservice.MyService">
<intent-filter>
<action Android:name="com.whatever.myservice.MyService" />
</intent-filter>
</service>
</application>
Maintenant, dans le menu déroulant à côté du bouton "Exécuter" (flèche verte), allez à "modifier les configurations" et dans les "Options de lancement", choisissez "Rien". Cela vous permettra d'installer votre service sans Android Studio se plaindre de ne pas avoir d'activité principale.
Une fois installé, le service ne fonctionnera PAS, mais vous pourrez le démarrer avec cette commande adb Shell ...
am startservice -n com.whatever.myservice/.MyService
Peut vérifier qu'il fonctionne avec ...
ps | grep whatever
Je n'ai pas encore essayé, mais vous pouvez probablement avoir Android Studio automatiquement démarrer le service également. Ceci serait effectué dans le menu "Modifier les configurations".