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

Android 5.0 IllegalArgumentException : Service Intent must be explicit: on com. google.android.location.internal.GoogleLocationManagerService.START… here is a solution to the problem.

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 that called the LocationClient method connect method in my activity, but the system crashes with the following exception when making the call:

**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 how I created 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

Changing the target SDK version to “19” helped me a lot.

Related Problems and Solutions