I am new to android programming. I am creating a project that needs to calculate the route between two geo points. I have both points and my google map correctly but when I call GeoApiContext my program crashes. This is the error:
D/DockFinderActivity: calculateDirections: calculating directions.
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.anchor.demo, PID: 21685
java.lang.BootstrapMethodError: Exception from call site #4 bootstrap method
at okhttp3.internal.Util.<clinit>(Util.java:87)
at okhttp3.internal.Util.immutableList(Util.java:234)
at okhttp3.OkHttpClient.<clinit>(OkHttpClient.java:124)
at okhttp3.OkHttpClient$Builder.<init>(OkHttpClient.java:449)
at com.google.maps.OkHttpRequestHandler$Builder.<init>(OkHttpRequestHandler.java:106)
at com.google.maps.GeoApiContext$Builder.<init>(GeoApiContext.java:318)
at com.example.anchor404.DockFinderActivity.calculateDirections(DockFinderActivity.java:497)
at com.example.anchor404.DockFinderActivity.access$900(DockFinderActivity.java:65)
at com.example.anchor404.DockFinderActivity$8.onClick(DockFinderActivity.java:473)
at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:172)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Caused by: java.lang.ClassCastException: Bootstrap method returned null
at okhttp3.internal.Util.<clinit>(Util.java:87)
at okhttp3.internal.Util.immutableList(Util.java:234)
at okhttp3.OkHttpClient.<clinit>(OkHttpClient.java:124)
at okhttp3.OkHttpClient$Builder.<init>(OkHttpClient.java:449)
at com.google.maps.OkHttpRequestHandler$Builder.<init>(OkHttpRequestHandler.java:106)
at com.google.maps.GeoApiContext$Builder.<init>(GeoApiContext.java:318)
at com.example.anchor404.DockFinderActivity.calculateDirections(DockFinderActivity.java:497)
at com.example.anchor404.DockFinderActivity.access$900(DockFinderActivity.java:65)
at com.example.anchor404.DockFinderActivity$8.onClick(DockFinderActivity.java:473)
at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:172)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
I/Process: Sending signal. PID: 21685 SIG: 9
Process 21685 terminated.
I am calling geoApiContext like this:
if(mGeoApiContext == null){
mGeoApiContext = new GeoApiContext.Builder()
.apiKey(getString(R.string.google_map_api_key))
.build();
}
mGeoApiContext is a global:
private GeoApiContext mGeoApiContext = null;
Inside my gradle:
// Google Maps Services (needed for directions)
implementation 'com.google.maps:google-maps-services:0.10.1'
implementation 'org.slf4j:slf4j-simple:1.7.25'
My manifest has these permissions:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
Am I missing a permission? Am I calling GeoApiContext wrong or could it be an issue with my API key?