2012-09-12 93 views
3

我試圖讓ANDROID_ID在我的appn中工作,但我在模擬器和硬件上出現了奇怪的行爲。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」調試消息。

在我的手機,我只是得到一個"the application has stopped unexpectedly" OS 2.3.3

任何想法,我在實現這個錯了嗎?

如果我刪除"final String android_id = Secure.getString(getContentResolver(),Secure.ANDROID_ID);"那麼該應用程序可以在模擬器和硬件上正常工作 - 所以問題必須位於此處?

回答

10

只在onCreate之前聲明變量,然後在onCreate上獲取設備ID。那麼你的空指針異常將被解決。

這是因爲getContentResolver()需要完全啓動上下文(活動)。

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);