86 votes

Comment lancer une activité sans interface utilisateur ?

Est-il possible de lancer une activité à partir de la fonction principale sans avoir d'interface utilisateur ? Existe-t-il un moyen de créer une sorte de "wrapper" autour d'une autre activité, c'est-à-dire qu'en lançant l'activité principale, vous accédez automatiquement à une autre activité.

Si ce n'est pas possible, y a-t-il un moyen de supprimer l'activité principale de la pile afin que cliquer sur le bouton retour ne vous amène pas à une interface utilisateur vide ? Voici un exemple de ce que j'essaie de faire :

public class WrapperActivity extends Activity {

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        final Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:555-1212"));
        startActivity(intent);
    }
}

137voto

Justin Points 2212

Android fournit également un thème spécifique pour cela :

android:theme="@android:style/Theme.NoDisplay"

55voto

strange quark Points 2947

Dans votre manifeste, lorsque vous déclarez l'activité, utilisez le thème "@android:style/Theme.Translucent.NoTitleBar"

Ex :

<activity android:name="yourActivityName" android:label="@string/app_name" android:theme="@android:style/Theme.Translucent.NoTitleBar">

39voto

Vishwanath Points 561

Vous devez ajouter l'indicateur d'intention,

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

Ou

appelez «finish(); » après avoir déclenché l'intention.

14voto

arunwithasmile Points 156

Juste dans le cas où vous utilisez Android 6.0+ ou SDK cible est 23+, ayant un thème android:theme = "@android:style/Theme.NoDisplay" entraînera un plantage avec erreur did not call finish() prior to onResume() completing. Il s'agit en fait d'un bug reconnu par les développeurs de Google ici.

Il est donc recommandé d'utiliser une activité avec le thème suivant comme solution de contournement.

android:theme = "@android:style/Theme.Translucent.NoTitleBar"

8voto

Fermin Genao Points 81

Je pense que cela vous aiderait beaucoup :

<activity  android:name = "MyActivity" 
          android:label = "@string/app_name" 
          android:theme = "@android:style/Theme.NoDisplay" >

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X