Bonjour,
Il existe beaucoup de réponses à cette question sur internet mais hélas la plupart (toutes ?) sont obsolète .
Auriez vous une réponse moderne : Comment savoir quelle est l'application qui tourne au 1er plan, merci.
Version imprimable
Bonjour,
Il existe beaucoup de réponses à cette question sur internet mais hélas la plupart (toutes ?) sont obsolète .
Auriez vous une réponse moderne : Comment savoir quelle est l'application qui tourne au 1er plan, merci.
Moderne non, c'est spécifique à l'os.
Ha ok... Et donc pour android 11 de 2021 comment fait on ?
Personnellement je passe par une classe qui implémente Application.ActivityLifecycleCallbacks.
Ca ressemble à ca :
Après idéalement faut faire quelque chose au changement d'état (observer, bus d'événement ,etc ...).Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 public class Foreground implements Application.ActivityLifecycleCallbacks { private static Foreground instance; private boolean foreground = false, paused = true; public static Foreground init(Application application){ if (instance == null) { instance = new Foreground(); application.registerActivityLifecycleCallbacks(instance); } return instance; } public boolean isForeground(){ return foreground; } public boolean isBackground(){ return !foreground; } @Override public void onActivityResumed(@NonNull Activity activity) { paused = false; boolean wasBackground = !foreground; foreground = true; } @Override public void onActivityPaused(@NonNull Activity activity) { paused = true; foreground = false; } @Override public void onActivityCreated(@NonNull Activity activity, Bundle savedInstanceState) {} @Override public void onActivityStarted(@NonNull Activity activity) {} @Override public void onActivityStopped(@NonNull Activity activity) {} @Override public void onActivitySaveInstanceState(@NonNull Activity activity, @NonNull Bundle outState) {} @Override public void onActivityDestroyed(@NonNull Activity activity) {} }
Note toutefois que la plus part du temps il n'est pas nécessaire d'avoir cette info , on peut s'en sortir avec les cycles de vie classique
Ok merci je vais étudier ca.
Je débute en programmation et je ne trouve pas où dans le code on connaît le nom de l'application qui est en premier plan.
Bonjour,
C'est dur d'être un débutant lol: Pourquoi est ce que cela n'affiche rien, qu'est ce que j'oublie donc merci.
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Application application = null; Foreground.init(application); String s1 = "" + application ; TextView text = new TextView(this); text.setText(s1); setContentView(text); } }
Tu oublie d'avoir une variable application qui n'est pas à null pour commencer ;)
Merci de m'aider,
Comment je dois m'y prendre si je veux savoir si, waze (com.waze), par exemple est au 1er plan ?
Le code que je t'ai donné ne fonctionne que pour ta propre application , pas pour une autre.
OK ça ne répond donc pas à la question de base.
Merci quand même.