ANDROID_IDの取得方法は、API Level 1より提供されている
android.provider.Settings.System.ANDROID_ID
は推奨されなくなったようです。
API Level 3(Android 1.5)以降では、android.provider.Settings.Secure.ANDROID_ID
から取得するようになりました。Permissionが付与されていないと読めなくなったので、セキュリティ的な理由で変更されたんですかね。
で、このANDROID_IDの値ですが、工場出荷時状態からの初回起動時か、Googleのサーバとのアクティベーション時に生成されて、Googleのサーバに登録されるんですかね。Windowsのアクティベーションはこんな感じだったような気がするんですが。
それと、ANDROID_IDは、root権限が取得できると書き換えることができます。やり方は、sqliteのデータベースのANDROID_IDの値を書き換えるだけ。
More spoofing of the android id…
http://strazzere.com/blog/?p=235
設定値が保存されているsqliteのデータベースです。
/data/data/com.google.android.googleapps/databases/accounts.db
Spoofing your Android_ID
http://strazzere.com/blog/?p=217
こちらにもANDROID_IDの設定値が保存されています。
/data/data/com.android.providers.settings/databases/settings.db
どちらがマスターなんでしょう。。。
ってことは、Android端末をリセットすると/dataは初期化されるはずなので、ANDROID_IDが変わってしまうってこと???
”- Android Marketのハック事情(6):Androidの固有識別情報-1/ANDROID_ID « 突然消失するかもしれないブログ