2016-11-16 2 views
0

Ich versuche ein Programm zu debuggen, das wackelige Stellen im Feld produziert, indem ich Testfälle auf den falschen Standort einstelle und Ergebnisse basierend auf Genauigkeit sehe.Der laufende gps-Provider-Test erzeugt den verweigerten Zugriff auf den falschen Standort.

es stützt sich auf einen Hintergrunddienst, um den Standort zu erhalten.

Das Ergebnis ist unter:

Fehler:

java.lang.SecurityException: com.vrin.location from uid 10168 not allowed to perform MOCK_LOCATION 

AndroidManifest.xml (Debug)

<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" tools:ignore="MockLocation"/> 

die Tests fehlschlagen mit dem Fehler, der oben dargestellt. Ob es daran liegt, dass ich keine falsche Standort-App ausgewählt habe, weiß ich nicht. Der Code, der den Fehler verursacht:

public void getMockLocation(Location location) { 
    mLocationManager.removeTestProvider(LocationManager.GPS_PROVIDER); 
    mLocationManager.addTestProvider 
      (
        LocationManager.GPS_PROVIDER, 
        "requiresNetwork" == "", 
        "requiresSatellite" == "", 
        "requiresCell" == "", 
        "hasMonetaryCost" == "", 
        "supportsAltitude" == "", 
        "supportsSpeed" == "", 
        "supportsBearing" == "", 

        android.location.Criteria.POWER_LOW, 
        android.location.Criteria.ACCURACY_FINE 
      ); 

    Location newLocation = new Location(LocationManager.GPS_PROVIDER); 

    newLocation.setLatitude (location.getLatitude()); 
    newLocation.setLongitude(location.getLongitude()); 

    newLocation.setAccuracy(500); 

    mLocationManager.setTestProviderEnabled 
      (
        LocationManager.GPS_PROVIDER, 
        true 
      ); 

    mLocationManager.setTestProviderStatus 
      (
        LocationManager.GPS_PROVIDER, 
        LocationProvider.AVAILABLE, 
        null, 
        System.currentTimeMillis() 
      ); 

    mLocationManager.setTestProviderLocation 
      (
        LocationManager.GPS_PROVIDER, 
        newLocation 
      ); 
} 

Vielen Dank im Voraus für Hilfe!

Nathan

+0

Auf welcher Version testen Sie? – AndroidHacker

+0

Hey, ich benutze Version 23 –

Antwort

0

Mögliche Gründe:

Die Erlaubnis muss außerhalb des <application> Element sein.

Und natürlich müssen Sie es auch über Einstellungen einstellen. Folgen Sie inline:

enable Mock Locations from Settings -> Applications -> Development 

Hinweis * Diese auf verschiedenen Handys variieren.

Auch nicht verwendet es jemals, aber möglicherweise müssen Sie Laufzeitberechtigungen für höhere Versionen von Android setzen.

Verwandte Themen