为什么无法在非主类中获取设备ID?

时间:2012-01-01 11:24:02

标签: java android android-context

我通过执行以下操作检索主要活动中的设备ID:

String UDID = System.getString(this.getContentResolver(), System.ANDROID_ID);

稍后在我的代码中我启动了一个新的Activity,其中我也需要UDID,但是当我运行相同的代码行时它会崩溃:

01-01 12:20:54.793: ERROR/AndroidRuntime(868): FATAL EXCEPTION: main
01-01 12:20:54.793: ERROR/AndroidRuntime(868): java.lang.NullPointerException
01-01 12:20:54.793: ERROR/AndroidRuntime(868):     at android.content.ContextWrapper.getContentResolver(ContextWrapper.java:91)

我知道它必须对上下文做一些事情,但无法弄清楚如何解决这个问题。当然我可以做putExtra,但我想必须有更好的方法。

1 个答案:

答案 0 :(得分:0)

虽然不推荐使用,似乎对我有用

 String id_deprecated = System.getString(this.getContentResolver(),      
                                         android.provider.Settings.System.ANDROID_ID);

您应该使用Settings.Secure中定义的ANDROID_ID

 String id_new =System.getString(this.getContentResolver(), 
                                    android.provider.Settings.Secure.ANDROID_ID);