我正在尝试让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);"
,那么应用程序在模拟器和硬件上都能正常工作 - 所以问题必须放在这里?
答案 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);