"Android Protips: Advanced Topics for Expert Android App Developers"
で紹介されていたので、メモしておきます。
---
なぜデバイスを検出するのか?
- デバイスが通話機能をサポートしていない場合、TelephonyManager.getDeviceId() は null を返す。
- Bluetooth や WiFi が見つからない(もしくはオフの)場合、MAC アドレスは使えないことがある
- デバイスがワイプされたときに変わらないので、新しいユーザーでも同じデバイス ID になってしまう。
- Settings.Secure.ANDROID_ID はワイプ時にリセットされるが、Android 2.2 以前では信頼性がない。
UUID.randomUUID().toString()
を使う
private static String uniqueID = null;
private static final String PREF_UNIQUE_ID = "PREF_UNIQUE_ID";
public synchronized static String id(Context context) {
if (uniqueID == null) {
SharedPreferences sp = context.getSharedPreferences(PREF_UNIQUE_ID,
Context.MODE_PRIVATE);
uniqueID = sp.getString(PREF_UNIQUE_ID, null);
if(uniqueID == null) {
uniqueID = UUID.randomUUID().toString();
Editor editor = sp.edit();
editor.putString(PREF_UNIQUE_ID, uniqueID);
editor.commit();
}
}
return uniqueID;
}
0 件のコメント:
コメントを投稿