diff options
author | Fred Quintana <fredq@google.com> | 2009-12-17 10:28:33 -0800 |
---|---|---|
committer | Fred Quintana <fredq@google.com> | 2009-12-17 11:30:17 -0800 |
commit | c70239e84d5024c65728ba74fe74c7394b34ac65 (patch) | |
tree | 4e38ac5557aa9223d48ab7bd8ca6558faa799d7a /packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java | |
parent | 082e51712ab9c9ce94eaee88797bbdbc80b2004d (diff) | |
download | frameworks_base-c70239e84d5024c65728ba74fe74c7394b34ac65.zip frameworks_base-c70239e84d5024c65728ba74fe74c7394b34ac65.tar.gz frameworks_base-c70239e84d5024c65728ba74fe74c7394b34ac65.tar.bz2 |
changed SettingsProvider to manage the androidid itself
Diffstat (limited to 'packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java')
-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); |