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
Auf welcher Version testen Sie? – AndroidHacker
Hey, ich benutze Version 23 –