Search code examples
javaandroididentifieruserid

Trying to get Android_ID bu the App crashes when i start it


That's the Code to get the AndroidID:

String userID = Settings.Secure.getString(getApplicationContext()
.getContentResolver(), Settings.Secure.ANDROID_ID);

When i start the Application i get the following logcat review:

04-28 01:30:02.012 9328-9328/com.hubermoritz.beercounter.beercounter02 E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                     Process: com.hubermoritz.beercounter.beercounter02, PID: 9328
                                                                                     java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.hubermoritz.beercounter.beercounter02/com.hubermoritz.beercounter.beercounter02.MainActivity}: java.lang.NullPointerException
                                                                                         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2305)
                                                                                         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2470)
                                                                                         at android.app.ActivityThread.access$900(ActivityThread.java:174)
                                                                                         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1307)
                                                                                         at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                         at android.os.Looper.loop(Looper.java:146)
                                                                                         at android.app.ActivityThread.main(ActivityThread.java:5593)
                                                                                         at java.lang.reflect.Method.invokeNative(Native Method)
                                                                                         at java.lang.reflect.Method.invoke(Method.java:515)
                                                                                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
                                                                                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
                                                                                         at dalvik.system.NativeStart.main(Native Method)
                                                                                      Caused by: java.lang.NullPointerException
                                                                                         at android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:114)
                                                                                         at com.hubermoritz.beercounter.beercounter02.MainActivity.<init>(MainActivity.java:48)
                                                                                         at java.lang.Class.newInstanceImpl(Native Method)
                                                                                         at java.lang.Class.newInstance(Class.java:1208)
                                                                                         at android.app.Instrumentation.newActivity(Instrumentation.java:1067)
                                                                                         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2296)
                                                                                         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2470) 
                                                                                         at android.app.ActivityThread.access$900(ActivityThread.java:174) 
                                                                                         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1307) 
                                                                                         at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                         at android.os.Looper.loop(Looper.java:146) 
                                                                                         at android.app.ActivityThread.main(ActivityThread.java:5593) 
                                                                                         at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                                         at java.lang.reflect.Method.invoke(Method.java:515) 
                                                                                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283) 
                                                                                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099) 
                                                                                         at dalvik.system.NativeStart.main(Native Method) 

04

Tried with:

public String userID = Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID);

also, didn't work either. By the way I'm well aware off that it's not a perfect way to recognize users, because the number can change due to factory reset or changing phone and few other ways.


Solution

  • Caused by: java.lang.NullPointerException
      at android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:114)
      at com.hubermoritz.beercounter.beercounter02.MainActivity.<init>(MainActivity.java:48)
    

    You are attempting to call a method that you are inheriting from Activity from a field initializer. Do not do this. In general, do not call inherited methods on Activity until after super.onCreate() has been called in your onCreate() method. You are welcome to have a field, but do not initialize it until after super.onCreate().