summaryrefslogtreecommitdiffstats
path: root/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
diff options
context:
space:
mode:
authorFred Quintana <fredq@google.com>2009-12-17 10:28:33 -0800
committerFred Quintana <fredq@google.com>2009-12-17 11:30:17 -0800
commitc70239e84d5024c65728ba74fe74c7394b34ac65 (patch)
tree4e38ac5557aa9223d48ab7bd8ca6558faa799d7a /packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
parent082e51712ab9c9ce94eaee88797bbdbc80b2004d (diff)
downloadframeworks_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.java36
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);