1 votes

Les coordonnées de la "localisation de la décharge" sont censurées sur les appareils Huawei.

Je voudrais lire les coordonnées de mon Huawei P30 Pro via ADB en appelant adb shell dumpsys location . Cependant, la sortie est comme :

Last Known Locations:
   gps: Location[gps 11******,14****** ...

Ils sont censurés par des étoiles, même si le GPS est déjà activé.

Une idée ?

1voto

Andrew T. Points 12017

On dirait que Il s'agit d'une modification que Huawei a effectuée elle-même. (raisons factuelles non encore trouvées). En bref, la méthode pour imprimer le détail de l'emplacement a été écrasée.

dumpsys appelle la méthode "dump" des services système (plus de détails sur cette réponse sur Stack Overflow ), et pour dumpsys location le service correspondant est LocationManagerService .

El dump() méthode pour LocationManagerService (dans Android 10, mais aussi pas de différences majeures sur les versions précédentes) contient du code comme ceci :

...

pw.println("  Last Known Locations:");
for (Map.Entry<String, Location> entry : mLastLocation.entrySet()) {
    String provider = entry.getKey();
    Location location = entry.getValue();
    pw.println("    " + provider + ": " + location);
}

...

où il va itérer les dernières localisations connues de tous les fournisseurs de localisation et imprimer le nom du fournisseur et sa localisation. Notez que l'emplacement est une instance de Location objets.

Par défaut, la méthode permettant d'imprimer le détail de l'objet Location objet ( toString() ) contient un code comme celui-ci :

@Override
public String toString() {
    StringBuilder s = new StringBuilder();
    s.append("Location[");
    s.append(mProvider);
    s.append(String.format(" %.6f,%.6f", mLatitude, mLongitude));
    ...

où il imprimera la latitude et la longitude en 6 chiffres décimaux.

Pour de nombreux appareils, c'est le comportement standard, comme le montre le Nexus 5 avec LineageOS 14.1 (Android 7.1) :

 Last Known Locations:
    ...
    fused: Location[fused 1.234567,101.010101 acc=500 et=+12h00m00s000ms]
    ...

Les chiffres sont modifiés pour des raisons de confidentialité

En remplaçant la méthode, les OEM peuvent personnaliser la façon dont les données sont traitées. dumpsys affichera le contenu. (Remarque : pendant que Android exige que certains services ne soient pas modifiés l'emplacement n'en fait pas partie)

0 votes

Merci pour votre explication utile. Alors, y a-t-il une commande adb indépendante du périphérique que je peux utiliser ? Dans mon cas (python), je ne peux travailler qu'avec des commandes adb...

0 votes

@mahack Je n'ai pas fait de recherches plus poussées ni de tests, mais vous pourriez peut-être installer des applications tierces qui peuvent obtenir les coordonnées GPS et les transmettre à logcat, puis utiliser adb logcat à la place.

0 votes

Merci pour votre idée, je vais garder cela pour un plan B. Le problème est que je n'ai pas la possibilité d'installer une application pour ne pas avoir cette permission. Mais j'ai compris le problème avec le truc toString(), ça pourrait devenir un long chemin.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X