When testing, I am setting the lat long via Genymotion like so:
package com.mypackage.name;
public class TestGps extends ActivityInstrumentationTestCase2<MyClass>{
... //setup just calls super.setup();
public void testLocationButton(){
Gps gps = GenymotionManager.getGenymotionManager(getInstrumentation().getContext()).getGps();
gps.setStatus(Gps.Status.ENABLED);
gps.setLatitude(40.7127); // the error happens here
gps.setLongitude(74.0059);
}
}
I get the following issue when run:
java.lang.SecurityException: invalid package name: com.mypackage.name
at android.os.Parcel.readException(Parcel.java:1546)
at android.os.Parcel.readException(Parcel.java:1499)
at android.location.ILocationManager$Stub$Proxy.requestLocationUpdates(ILocationManager.java:582)
at android.location.LocationManager.requestLocationUpdates(LocationManager.java:867)
at android.location.LocationManager.requestLocationUpdates(LocationManager.java:490)
at com.genymotion.api.Gps.waitForTargetLocation(Gps.java:271)
at com.genymotion.api.Gps.setLatitude(Gps.java:134)
In a test
Instrumentation.getContext()
returns the context of the tests. To access the context of the app being tested, you need to callInstrumentation.getTargetContext()
instead. You should also consider usingInstrumentationRegistry
. This is now the preferred access point forInstrumentation
instances.