Bonjour à toutes et à tous,
J'ai commencé un prototype de mon projet sous Android et il fonctionne sur des Android virtuel comme physique (Mon téléphone).

J'ai donc envoyé l'apk à une amie en lui disant de manuellement activé la localisation GPS (Car j'ai pas encore fait la pop-up de permission) et là le drame ça ne fonctionne pas.

Je ne comprends donc pas pourquoi sur mon téléphone tout fonctionne mais pas sur le sien... Elle a Android 7 comme moi.

Je suis à bout car j'ai beau faire des log rien sont téléphone ne retourne rien à l'application et pourtant screen à l'appuit elle a activé l'autorisation de Position.

Voici l'apk : https://www.dropbox.com/sh/16equal4n...xC1nupWba?dl=0 Il nécessite aucun connexion internet juste GPS.

Voici le code qui s'occupe du GPS :

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
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
package com.caranille.plop;
 
import android.Manifest;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Build;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
 
import com.caranille.plop.Database.EggSQL;
import com.caranille.plop.Database.PlopSQL;
import com.caranille.plop.Database.TrainerSQL;
import com.caranille.plop.Models.Egg;
import com.caranille.plop.Models.Plop;
import com.caranille.plop.Models.Trainer;
 
public class EggActivity extends AppCompatActivity implements LocationListener {
 
    //Ajouts des classes
    private EggSQL eggSQL;
    private Egg egg;
    private TrainerSQL trainerSQL;
    private Trainer trainer;
 
    //Widgets
    private TextView distanceTraveled;
    private TextView coordinatedGPS;
 
    //Variables
    private LocationManager locationManager;
    private Location oldlocation;
    private Location newlocation;
    private int oldTimeStamp;
    private int newTimeStamp;
    private int differenceTimeStamp;
    private int limiteTimeStamp = 60;
    private float speed;
    private float maxspeed = (float) 5.55;
    private int step = 0;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_egg);
 
        distanceTraveled = (TextView) findViewById(R.id.distanceTraveled);
        coordinatedGPS = (TextView) findViewById(R.id.coordinatedGPS);
 
        eggSQL = new EggSQL(EggActivity.this);
        eggSQL.open();
        egg = eggSQL.egg();
 
        trainerSQL = new TrainerSQL(EggActivity.this);
        trainerSQL.open();
        trainer = trainerSQL.trainer();
        trainerSQL.close();
 
        distanceTraveled.setText(" " + egg.getDistanceTraveled() + "/" + egg.getDistanceToDo());
 
        locationManager = (LocationManager) this.getSystemService(LOCATION_SERVICE);
        if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { registerGPS(); }
    }
 
    public void registerGPS()
    {
        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            return;
        }
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 10, this);
    }
 
    public void unregisterGPS() {
        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            return;
        }
        locationManager.removeUpdates(this);
    }
 
    @Override
    public void onLocationChanged(Location location)
    {
        newTimeStamp = (int) System.currentTimeMillis() / 1000;
        speed = location.getSpeed();
 
        //Première étape on rempli les variable oldlocation et oldTimeStamp avec les valeurs par défaut
        if (step == 0)
        {
            oldlocation = location;
            oldTimeStamp = (int) System.currentTimeMillis() / 1000;
            step++;
            coordinatedGPS.setText(location.getLatitude() + "; " + location.getLongitude());
        }
        //Si les valeurs par défaut sont remplie on fait la différence avec les nouvelles valeurs
        else
        {
            newlocation = location;
            differenceTimeStamp = newTimeStamp - oldTimeStamp;
            oldTimeStamp = (int) System.currentTimeMillis() / 1000;
 
            //Si cela fait moins de une minute on calcul la distance parcourue
            if (differenceTimeStamp < limiteTimeStamp)
            {
                //Si le joueur va moins vite que la vitesse limite
                if (speed < maxspeed)
                {
                    //on Calcule la distance parcourue
                    int distance = (int) oldlocation.distanceTo(newlocation);
                    egg.setDistanceTraveled(egg.getDistanceTraveled() + distance);
                    eggSQL.updateEgg(egg);
                    distanceTraveled.setText(" " + egg.getDistanceTraveled() + "/" + egg.getDistanceToDo());
                    coordinatedGPS.setText(location.getLatitude() + "; " + location.getLongitude());
                    oldlocation = location;
 
                    //Si le joueur a fait la distance demandée pour faire éclore l'oeuf
                    if (egg.getDistanceTraveled() >= egg.getDistanceToDo())
                    {
                        unregisterGPS();
                        finish();
                        Intent NewPlopActivity = new Intent(EggActivity.this, NewPlopActivity.class);
                        startActivity(NewPlopActivity);
                    }
                }
            }
        }
    }
 
    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
 
    }
 
    @Override
    public void onProviderEnabled(String provider) {
        registerGPS();
    }
 
    @Override
    public void onProviderDisabled(String provider) {
        unregisterGPS();
    }
}
Et voici le Manifest:

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
27
28
29
30
31
32
33
34
35
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.caranille.plop">
 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
 
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme">
 
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
		<activity
            android:name=".ControlPanelActivity"
            android:label="@string/title_activity_control_panel"
            android:theme="@style/AppTheme.NoActionBar" />
        <activity android:name=".NewGameActivity" />
        <activity android:name=".EggActivity" />
        <activity android:name=".NewPlopActivity" />
    </application>
 
</manifest>
Pouvez-vous tester mon apk (Android 5.1 minimum) en activant la position GPS de l'application (Manuellement) ?

Bien cordialement, Jérémy