与ANDROID_ID有问题

3

我正在尝试在我的应用程序中使用ANDROID_ID,但是在模拟器和硬件上都出现了奇怪的行为。

以下是我的应用程序中的一部分代码:

import android.provider.Settings.Secure;

public class RssActivity extends ListActivity {

final String android_id = Secure.getString(getContentResolver(),Secure.ANDROID_ID); 

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Log.d("UUID", android_id);

现在我的模拟器中应用程序打开了,但似乎卡住了,什么也没做,我甚至没有收到“UUID”调试消息。
在我的手机上,我只收到一个“应用程序意外停止”的OS 2.3.3消息。
有什么想法吗?我是不是实现错误了?
如果我删除“final String android_id = Secure.getString(getContentResolver(),Secure.ANDROID_ID);”,那么应用程序在模拟器和硬件上都可以正常工作 - 所以问题必须在这里?
2个回答

10

只需在onCreate之前声明变量,然后在onCreate中获取设备ID。这样,您的空指针异常就会解决。

出现此问题是因为getContentResolver()需要完全初始化的上下文(Activity)。

String android_id; 

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.tst);
    android_id = Secure.getString(getContentResolver(),Secure.ANDROID_ID);
    Log.d("UUID", android_id);
}    

0
尝试这样写:

Secure.getString(getApplicationContext().getContentResolver(), Secure.ANDROID_ID);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接