Un utilisateur de mon application a rapporté que l'application indique que le réseau d'emplacement est désactivée même s'il l'a fait. Il m'a envoyé quelques coups d'écran et ils m'ont fait penser;
java.lang.IllegalArgumentException: provider=network at android.os.Parcel.readException(Parcel.java:1439) at android.os.Parcel.readException(Parcel.java:1389) at android.location.ILocationManager$Stub$Proxy.requestLocationUpdates(ILocationManager.java:659) at android.location.LocationManager._requestLocationUpdates(LocationManager.java:690) at android.location.LocationManager.requestLocationUpdates(LocationManager.java:512)
4 Réponses :
Pas directement une réponse à votre (s) question (s), mais consultez la nouvelle API de l'emplacement que Google lancé la semaine dernière. C'est vraiment facile à mettre en œuvre et il vérifiera le meilleur emplacement possible sans gaspiller la batterie. http://developer.android.com/google/play-services/location.html Et voici une session sur Google I / O à propos de cette nouvelle API et sur la manière de l'utiliser. http://www.youtube.com/watch?v=bte_ghuxUNGC P>
De cette façon, vous n'avez pas besoin de vous inquiéter de la vérification si le GPS est sur ou non et que cela ressemble à celui P>
Cette réponse est hors du contexte de ma question.
Gestionnaire d'emplacement n'est pas fiable sur certains téléphones. Vous remarquerez peut-être que si vous lancez Google Maps tout à coup votre application fonctionne. En effet, Google Maps a lancé un coup de pied à l'emplacement de l'emplacement. Ce qui signifie également qu'il existe un moyen programmatique de lancer ce mec vivant. J'ai donc utilisé
HomeScreen.getLocationManager().requestLocationUpdates( LocationManager.NETWORK_PROVIDER, 0, 0, new LocationListener() { @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { } @Override public void onProviderDisabled(String provider) { } @Override public void onLocationChanged(final Location location) { } });
Appeler demandeLocessionDates jette une exception. S'il vous plaît voir la question à nouveau. Je suppose que le problème que je suis confronté est différent, vous savez.
@TomCat Vous avez peut-être raison, mais je devrais également noter que, dans certains cas, la solution ci-dessus fonctionne comme un charme.
Le soutien du développeur fourni par Sharp Corporation est excellent et répondit à ma question en moins de 48 heures. P>
C'est ce que j'en ai eu d'eux. P>
Il y a 2 conditions doit être remplie que EmplacementManager.isProviderEnabled (emplacementmanager.network_provider) renvoie true. P>
La seconde est évidente. Mais le premier n'est pas. Ils ont dit comment simuler le premier est négatif. Vous pouvez confirmer le problème avec les étapes ci-dessous et exécuter mon application de test (voir ma question pour le lien à télécharger). P>
Pour la raison, je ne peux pas comprendre que le téléphone de l'utilisateur n'a pas réussi à faire quelque chose lié à la première condition indiquée ci-dessus et présente le problème. P>
EmplacementManager.isProviderEnabled (emplacementmanager.network_provider) est fiable. Et être au courant, Secure.Location_Providers_allyed est moins fiable. P>
Votre client va-t-il faire toutes ces étapes? Et avez-vous testé votre application sur d'autres téléphones? Samsung 2.3.6 et 4.0? À mon avis, vous avez besoin d'un moyen programmatique de déclencher la mise à jour. Pensez-y.
Un utilisateur a utilisé mon application de test et a prouvé quelle était la cause de cette question. Ma réponse peut ne pas avoir la bonne chose depuis que vous ne pouvez pas lire des conversations sur le forum de support utilisateur exécuté par Sharp Corporation. Ils ont clairement signalé la question et il est résolu.
Le moyen moderne de vérifier les paramètres de l'emplacement des utilisateurs passe par Par exemple si vous voulez simplement savoir si l'utilisateur les désactive Ou non, vous pouvez faire: p> emplacement_mode code> dans
paramètres.secure code>
public static boolean isLocationEnabled(Context context) {
return getLocationMode(context) != Settings.Secure.LOCATION_MODE_OFF;
}
private static int getLocationMode(Context context) {
return Settings.Secure.getInt(context.getContentResolver(), Settings.Secure.LOCATION_MODE, Settings.Secure.LOCATION_MODE_OFF);
}
Cela a également été obsolète. Pour vérifier l'état de localisation, utilisez EmplacementManager # IslocallocationEnabled (). Pour obtenir le statut d'un fournisseur d'emplacement, utilisez EmplacementManager # ISProviderenabled (String).
Je viens de le tester sur 4.1.2 (Galaxy S2) et 4.2.2 (Nexus 7), fonctionne bien sur les deux appareils. Est-ce juste cet utilisateur? Quel téléphone utilise-t-il?
Juste un commentaire, mais envisagez d'utiliser fusionné.
@Dumazy, j'ai vu au moins 2 téléphones ont ce problème. Et je suis réticent à montrer le nom du téléphone maintenant.
@Tomcat, les téléphones Samsung sont connus pour avoir des problèmes de localisation du fournisseur de réseau. Nommez le téléphone afin que vous puissiez vous aider.
S'il vous plaît voir la question modifiée.
@Siddharth, s'il vous plaît lisez mon commentaire à votre réponse.