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) :

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 le fichier "androidManifest.xml" 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" />"
Dans mon application, 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
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();
		}
	}
}
Apparemment, ça ne suffit pas.

Que faut-il faire ?

Cordialement.

Pierre.