Dans l'application GPS que je développe, je souhaite que mon GPS continue à me délivrer ses informations même si l'application n'est plus au premier plan.
Mais j'ai l'impression que je ne reçois plus ses informations quand mon application passe au second plan.
Mon smartphone est un Samsung A41 avec android 10.
Pourtant, je pense que j'ai fait ce qu'il faut. Voici ce que j'ai fait :
Dans le fichier "build.gradle (Module GPSNav.app) :
Dans le fichier "androidManifest.xml" j'ai :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 apply plugin: 'com.android.application' android { compileSdkVersion 29 buildToolsVersion "29.0.3" defaultConfig { applicationId "com.example.gpsnav" minSdkVersion 23 targetSdkVersion 29 } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { //noinspection GradleCompatible implementation 'com.android.support:support-v4:24.2.1' }
Dans mon application, j'ai :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />"
Apparemment, ça ne suffit pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 private static final int PERMISSION_REQUEST_GPS = 100; ... if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_BACKGROUND_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(Main.this, new String[]{ Manifest.permission.ACCESS_BACKGROUND_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION}, PERMISSION_REQUEST_GPS); return; } ... @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { if (requestCode == PERMISSION_REQUEST_GPS) { if (grantResults[0] == PackageManager.PERMISSION_DENIED) { // Ferme l'application Toast.makeText(Main.this, "Désolé !!! vous ne pouvez pas utiliser cette application sans permission", Toast.LENGTH_LONG).show(); finish(); } } }
Que faut-il faire ?
Cordialement.
Pierre.
Partager