简体   繁体   中英

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.

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() .

You can't use getContentResolver until after the constructor is completed. Set this variable in your onCreate instead and you should be ok

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM