遇到ANDROID_ID问题

时间:2012-09-12 09:13:47

标签: java android uuid android-2.3-gingerbread

我正在尝试让ANDROID_ID在我的appn中工作,但我在我的模拟器和硬件上都有奇怪的行为。

我应用的摘录。

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”调试消息。

在我的手机上,我只得到"the application has stopped unexpectedly" OS 2.3.3

任何想法,我是否实施了这个错误?

如果我删除"final String android_id = Secure.getString(getContentResolver(),Secure.ANDROID_ID);",那么应用程序在模拟器和硬件上都能正常工作 - 所以问题必须放在这里?

2 个答案:

答案 0 :(得分:10)

仅在onCreate之前声明变量,然后在onCreate上获取设备ID。然后你的空指针异常将被解决。

这是因为 getContentResolver()需要完全启动的Context(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);
}    

答案 1 :(得分:0)

试试这个:

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