Closed rterek closed 8 years ago
Hello @rterek ,
It sounds like there is an issue with Context provided during Estimote SDK initialisation. You should provide application context. Like here: EstimoteSDK.initialize(getApplicationContext(), "APP ID", "APP TOKEN");
. Let me know if it helps!
But I need to init/start Estimote from an Android Service, so I have been doing:
public class MyService extends Service { . . . private BeaconManager beaconManager; . . . @Override public void onCreate() { Log.d(MyTag, "In onCreate"); beaconManager = new BeaconManager(this); }
How can I deal with this moving forward? I'm building a library that is to be used by multiple apps, and I need a Service for control issues.
Thanks!
Hello @rterek!
There is no problem with that - Service itself extends ContextWrapper which extends Context. And as you might know, every Context holds reference to a singleton ApplicationContext which represents your basic app context, and which lasts for as long as your app is running. You can simply init Estimote SDK inside your Service by using EstimoteSDK.initialize(getApplicationContext(), "APP ID", "APP TOKEN");
The problem is with Analytics, which uses Context to gather data via ContentProviders. Soon we will release 10.4 with this problem fixed - so you don't need to worry about contexts. As for now, I suggest you to use this workaround :)
Thanks, got it - I think I was a bit bleary eyed last night when I was dealing with this issue. Cheers!
No problem, I forgive you :) Keep calm and wait for 0.10.4 with simplified contexts :)
Hi All, I am getting an error when I try to the get the Telemetry information in Xamarin estimote SDK-1.0.3 for android. Xamarin estimote beaconManager.StartTelemetryDiscovery(); caused exception You need to initialize SDK first :java.lang.NullPointerException: You need to initialize SDK first. EstimoteSDK.initialize(applicationContext, appId, appToken)
But I unable to find any such initialize(applicationContext, appId, appToken) method in Xamarin Estimote SDK-1.0.3 in android.
Thanks,
I've had an app working for a couple of months, and recently have been using version 0.10.1. I just upgraded to 0.10.3 and rebuilt, ran on a Note 4 with Android 5.1.1, and I get a crash on init:
05-09 22:23:16.884 9534-9534/com.nothing.nothing E/AndroidRuntime: FATAL EXCEPTION: main Process: com.nothing.nothing, PID: 9534 java.lang.RuntimeException: Unable to instantiate service com.estimote.sdk.service.BeaconService: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.ContentResolver android.content.Context.getContentResolver()' on a null object reference at android.app.ActivityThread.handleCreateService(ActivityThread.java:3653) at android.app.ActivityThread.access$2000(ActivityThread.java:197) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1764) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:145) at android.app.ActivityThread.main(ActivityThread.java:6872) 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:1404) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.ContentResolver android.content.Context.getContentResolver()' on a null object reference at com.estimote.sdk.cloud.internal.AnalyticsManager.(AnalyticsManager.java:73)
at com.estimote.sdk.cloud.internal.AnalyticsManager.getInstance(AnalyticsManager.java:63)
at com.estimote.sdk.service.BeaconService.(BeaconService.java:248)
at java.lang.reflect.Constructor.newInstance(Native Method)
at java.lang.Class.newInstance(Class.java:1690)
at android.app.ActivityThread.handleCreateService(ActivityThread.java:3650)
at android.app.ActivityThread.access$2000(ActivityThread.java:197)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1764)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:6872)
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:1404)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
Did I miss a memo? Do I need to change something in my code? I'm not doing anything with the cloud. . .