'Android 5.0 IllegalArgumentException: Service Intent must be explicit: on com.google.android.location.internal.GoogleLocationManagerService.START

I'm trying to retrieve the location of the device calling the method connect of the class LocationClient in my activity, however when the call is made the system crashes with the following exception:

**FATAL EXCEPTION: main
Process: com.unipagossales, PID: 3833
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.unipagossales/com.unipagossales.app.merchants.MerchantFragmentActivity}: java.lang.IllegalArgumentException: Service Intent must be explicit: Intent { act=com.google.android.location.internal.GoogleLocationManagerService.START }
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
    at android.app.ActivityThread.access$800(ActivityThread.java:144)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:135)
    at android.app.ActivityThread.main(ActivityThread.java:5221)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Caused by: java.lang.IllegalArgumentException: Service Intent must be explicit: Intent { act=com.google.android.location.internal.GoogleLocationManagerService.START }
    at android.app.ContextImpl.validateServiceIntent(ContextImpl.java:1674)
    at android.app.ContextImpl.bindServiceCommon(ContextImpl.java:1773)
    at android.app.ContextImpl.bindService(ContextImpl.java:1751)
    at android.content.ContextWrapper.bindService(ContextWrapper.java:538)
    at com.google.android.gms.internal.v.a(Unknown Source)
    at com.google.android.gms.internal.u.connect(Unknown Source)
    at com.google.android.gms.location.LocationClient.connect(Unknown Source)
    at com.unipagossales.app.merchants.MerchantFragmentActivity.onStart(MerchantFragmentActivity.java:122)
    at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1220)
    at android.app.Activity.performStart(Activity.java:5949)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2261)
    ... 10 more
**

This is the way I create my LocationClient:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.merchant_activity);

    ...

    // Create a new global location parameters object
    locationRequest = LocationRequest.create();
    locationRequest.setInterval(Constants.UPDATE_INTERVAL_MILLISECONDS);
    locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
    locationRequest.setFastestInterval(Constants.FAST_INTERVAL_CEILING_MILLISECONDS);

    // Initialize the location client
    locationClient = new LocationClient(this, new LocationClientConnectionCallbacks(), new LocationClientOnConnectionFailedListener());
}

@Override
protected void onStart() {
    super.onStart();
    ...
    locationClient.connect();
    ...
}


Solution 1:[1]

This problem is related to the fact that Android VM is not being able in runtime to find the definition of the action act=com.google.android.location.internal.GoogleLocationManagerService.START in Google Play Services.

You will need to set your Google Play Services following the next blog:

http://mflerackers.wordpress.com/2014/09/09/noclassdeffounderror-for-googleplayservicesutil/

Then you will need to increment the VM values in eclipse.ini, follow this one:

Unable to execute dex: GC overhead limit exceeded in Eclipse

This should fix your exception collaterally.

Solution 2:[2]

Changing the target SDK version to "19" helped me.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Community
Solution 2 ori888