I've got this weird stack trace while testing the app on Samsung Galaxy S2 (GT-i9100), Android version 4.3. If it helps, Bugsense reports also "log data" = {u'ms_from_start': u'19915', u'rooted': u'true'} , so I'm not quite sure if this device is rooted or not (client is testing the app, not me). EDIT: While I'm typing this, client confirmed me that the device is having custom ROM, if it matters.
Anyhow, this is a complete stack trace:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mypackagename/com.mypackagename.activities.ARActivity}:
java.lang.SecurityException: invalid package name: com.google.android.gms
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2355)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2405)
at android.app.ActivityThread.access$600(ActivityThread.java:156)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1272)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5303)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.SecurityException: invalid package name: com.google.android.gms
at android.os.Parcel.readException(Parcel.java:1431)
at android.os.Parcel.readException(Parcel.java:1385)
at android.location.ILocationManager$Stub$Proxy.requestLocationUpdates(ILocationManager.java:540)
at android.location.LocationManager.requestLocationUpdates(LocationManager.java:836)
at android.location.LocationManager.requestLocationUpdates(LocationManager.java:430)
at android.privacy.surrogate.PrivacyLocationManager.requestLocationUpdates(PrivacyLocationManager.java:290)
at com.mypackagename.activities.ARActivity.onCreate(ARActivity.java:371)
at android.app.Activity.performCreate(Activity.java:5259)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1098)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2309)
Now, ARActivity.java:371 is just calling
locationManager.requestLocationUpdates(GPS, gpsRefreshPeriod, 0, locListener);
where
private String GPS = "gps";
private int gpsRefreshPeriod = 500;
and locListener is locationListener.
Now, I have no idea what could go wrong here, and I can't reproduce this error on my testing devices (Samsung Galaxy Tab2, Motorola Atrix 4G, Samsung Note2, Galaxy Nexus).
I guess there could be a check for com.google.android.gms somehow, and maybe there could be Intent (or something) that in case of missing that package, user updates device's component.. But I'm totally not sure if I'm going into the right direction with this thinking.
Any ideas or experience with this crash?
Thanks.
Some devices that i use for testing doesn´t have capabilities to support gps and get the location, that was the reason for what i got the exception
We must add permissions required
and very important add android:required=false" for GPS.
More info: <uses-feature>
It seems to me that this device simply does not have GoogleApps application installed. The custom ROM actually may be a hint for this. For instance, an owner of this device might have installed Cyanogenmod but he has forgotten (or deliberately has not installed) Google Apps, which are supplied separately.
try to use
under application tag. Example
These 2 questions are very similar:
SecurityException when calling getLastKnownLocation
Add Google Maps to my app
Perhaps the issue is with the custom ROM and you need to attach the Play Services Android library project to your project.