2016-04-28 124 views
0

这就是代码来获取AndroidID:试图让Android_ID BU应用程序崩溃时我启动它

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

当我开始我得到以下logcat的审查申请:

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)  

试图用:

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

也没有工作。顺便说一下,我清楚地知道,这不是识别用户的完美方式,因为由于出厂重置或更换手机以及其他几种方式,数字可能会发生变化。

回答

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

您试图从字段初始值设定项调用从Activity继承的方法。不要这样做。一般来说,在Activity之前,不要调用继承的方法,直到在onCreate()方法中调用super.onCreate()之后。欢迎您有一个领域,但不要初始化它,直到super.onCreate()之后。

1

在构造函数完成之后,才能使用getContentResolver。而不是你的onCreate设置这个变量,你应该没问题