diff options
author | Fred Quintana <fredq@google.com> | 2009-12-17 13:21:36 -0800 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2009-12-17 13:21:36 -0800 |
commit | 23c279d522a9dfa35c369054373e78b1ef7cacec (patch) | |
tree | 00c867b083ddaa957965d11908cc35f928111d58 /packages/SettingsProvider | |
parent | bde0716dac7f25d9940195359f52175fe6724ff1 (diff) | |
parent | bc1c8847841689d2f6baa1f729148b4a35af92b0 (diff) | |
download | frameworks_base-23c279d522a9dfa35c369054373e78b1ef7cacec.zip frameworks_base-23c279d522a9dfa35c369054373e78b1ef7cacec.tar.gz frameworks_base-23c279d522a9dfa35c369054373e78b1ef7cacec.tar.bz2 |
am bc1c8847: am 66cc5900: Merge change Ic70239e8 into eclair-mr2
Merge commit 'bc1c8847841689d2f6baa1f729148b4a35af92b0'
* commit 'bc1c8847841689d2f6baa1f729148b4a35af92b0':
changed SettingsProvider to manage the androidid itself
Diffstat (limited to 'packages/SettingsProvider')
-rw-r--r-- | packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java index 9877342..d9f9041 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java @@ -17,6 +17,9 @@ package com.android.providers.settings; import java.io.FileNotFoundException; +import java.util.Random; +import java.security.SecureRandom; +import java.security.NoSuchAlgorithmException; import android.backup.BackupManager; import android.content.ContentProvider; @@ -26,6 +29,7 @@ import android.content.Context; import android.content.pm.PackageManager; import android.content.res.AssetFileDescriptor; import android.database.Cursor; +import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteQueryBuilder; import android.media.Ringtone; @@ -189,9 +193,41 @@ public class SettingsProvider extends ContentProvider { public boolean onCreate() { mOpenHelper = new DatabaseHelper(getContext()); mBackupManager = new BackupManager(getContext()); + + if (!ensureAndroidIdIsSet()) { + return false; + } + return true; } + private boolean ensureAndroidIdIsSet() { + final Cursor c = query(Settings.Secure.CONTENT_URI, + new String[] { Settings.NameValueTable.VALUE }, + Settings.NameValueTable.NAME + "=?", + new String[]{Settings.Secure.ANDROID_ID}, null); + try { + final String value = c.moveToNext() ? c.getString(0) : null; + if (value == null) { + final SecureRandom random = SecureRandom.getInstance("SHA1PRNG"); + final String newAndroidIdValue = Long.toHexString(random.nextLong()); + Log.d(TAG, "Generated and saved new ANDROID_ID"); + final ContentValues values = new ContentValues(); + values.put(Settings.NameValueTable.NAME, Settings.Secure.ANDROID_ID); + values.put(Settings.NameValueTable.VALUE, newAndroidIdValue); + final Uri uri = insert(Settings.Secure.CONTENT_URI, values); + if (uri == null) { + return false; + } + } + return true; + } catch (NoSuchAlgorithmException e) { + return false; + } finally { + c.close(); + } + } + @Override public Cursor query(Uri url, String[] select, String where, String[] whereArgs, String sort) { SqlArguments args = new SqlArguments(url, where, whereArgs); |