diff options
6 files changed, 43 insertions, 20 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 926300927..672c39375 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -298,7 +298,7 @@ <provider android:name=".database.FilteredNumberProvider" - android:authorities="com.android.dialer" + android:authorities="com.android.dialer.database.filterednumberprovider" android:exported="false" android:multiprocess="false" /> diff --git a/src/com/android/dialer/database/DialerDatabaseHelper.java b/src/com/android/dialer/database/DialerDatabaseHelper.java index 8fcbb9208..d36a0f6d8 100644 --- a/src/com/android/dialer/database/DialerDatabaseHelper.java +++ b/src/com/android/dialer/database/DialerDatabaseHelper.java @@ -75,7 +75,7 @@ public class DialerDatabaseHelper extends SQLiteOpenHelper { * 0-98 KitKat * </pre> */ - public static final int DATABASE_VERSION = 5; + public static final int DATABASE_VERSION = 6; public static final String DATABASE_NAME = "dialer.db"; /** @@ -400,7 +400,8 @@ public class DialerDatabaseHelper extends SQLiteOpenHelper { // and to be able to guarantee the state of the DB at each upgrade step. db.execSQL("CREATE TABLE " + Tables.FILTERED_NUMBER_TABLE + " (" + FilteredNumberColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," - + FilteredNumberColumns.NORMALIZED_NUMBER + " TEXT," + + FilteredNumberColumns.NORMALIZED_NUMBER + " TEXT UNIQUE," + + FilteredNumberColumns.NUMBER + " TEXT," + FilteredNumberColumns.COUNTRY_ISO + " TEXT," + FilteredNumberColumns.TIMES_FILTERED + " INTEGER," + FilteredNumberColumns.LAST_TIME_FILTERED + " LONG," @@ -418,6 +419,7 @@ public class DialerDatabaseHelper extends SQLiteOpenHelper { db.execSQL("DROP TABLE IF EXISTS " + Tables.PREFIX_TABLE); db.execSQL("DROP TABLE IF EXISTS " + Tables.SMARTDIAL_TABLE); db.execSQL("DROP TABLE IF EXISTS " + Tables.PROPERTIES); + db.execSQL("DROP TABLE IF EXISTS " + Tables.FILTERED_NUMBER_TABLE); } @Override @@ -438,10 +440,12 @@ public class DialerDatabaseHelper extends SQLiteOpenHelper { return; } - if (oldVersion < 5) { + if (oldVersion < 6) { + db.execSQL("DROP TABLE IF EXISTS " + Tables.FILTERED_NUMBER_TABLE); db.execSQL("CREATE TABLE " + Tables.FILTERED_NUMBER_TABLE + " (" + FilteredNumberColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," - + FilteredNumberColumns.NORMALIZED_NUMBER + " TEXT," + + FilteredNumberColumns.NORMALIZED_NUMBER + " TEXT UNIQUE," + + FilteredNumberColumns.NUMBER + " TEXT," + FilteredNumberColumns.COUNTRY_ISO + " TEXT," + FilteredNumberColumns.TIMES_FILTERED + " INTEGER," + FilteredNumberColumns.LAST_TIME_FILTERED + " LONG," @@ -449,7 +453,7 @@ public class DialerDatabaseHelper extends SQLiteOpenHelper { + FilteredNumberColumns.TYPE + " INTEGER," + FilteredNumberColumns.SOURCE + " INTEGER" + ");"); - oldVersion = 5; + oldVersion = 6; } if (oldVersion != DATABASE_VERSION) { diff --git a/src/com/android/dialer/database/FilteredNumberContract.java b/src/com/android/dialer/database/FilteredNumberContract.java index 1fb2363d0..0ec171b15 100644 --- a/src/com/android/dialer/database/FilteredNumberContract.java +++ b/src/com/android/dialer/database/FilteredNumberContract.java @@ -16,8 +16,15 @@ package com.android.dialer.database; +import android.content.ContentResolver; +import android.content.ContentUris; +import android.content.ContentValues; +import android.database.Cursor; import android.net.Uri; import android.provider.BaseColumns; +import android.telephony.PhoneNumberUtils; + +import com.android.dialerbind.ObjectFactory; /** * <p> @@ -29,7 +36,7 @@ import android.provider.BaseColumns; public final class FilteredNumberContract { /** The authority for the filtered numbers provider */ - public static final String AUTHORITY = "com.android.dialer"; + public static final String AUTHORITY = ObjectFactory.getFilteredNumberProviderAuthority(); /** A content:// style uri to the authority for the filtered numbers provider */ public static final Uri AUTHORITY_URI = Uri.parse("content://" + AUTHORITY); @@ -62,6 +69,13 @@ public final class FilteredNumberContract { */ static final String NORMALIZED_NUMBER = "normalized_number"; /** + * Represents the number to be filtered, for formatting and + * used with country iso for contact lookups. + * + * TYPE: TEXT + */ + static final String NUMBER = "number"; + /** * The country code representing the country detected when * the phone number was added to the database. * Most numbers don't have the country code, so a best guess is provided by @@ -111,7 +125,7 @@ public final class FilteredNumberContract { * <h3>Operations</h3> * <dl> * <dt><b>Insert</b></dt> - * <dd>Required fields: NORMALIZED_NUMBER, TYPE, SOURCE. + * <dd>Required fields: NUMBER, NORMALIZED_NUMBER, TYPE, SOURCE. * A default value will be used for the other fields if left null.</dd> * <dt><b>Update</b></dt> * <dt><b>Delete</b></dt> @@ -144,6 +158,5 @@ public final class FilteredNumberContract { */ public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/filtered_numbers_table"; - } } diff --git a/src/com/android/dialer/database/FilteredNumberProvider.java b/src/com/android/dialer/database/FilteredNumberProvider.java index 2bacd89b2..2bea7cae1 100644 --- a/src/com/android/dialer/database/FilteredNumberProvider.java +++ b/src/com/android/dialer/database/FilteredNumberProvider.java @@ -33,6 +33,7 @@ import android.util.Log; import com.android.contacts.common.GeoUtil; import com.android.dialer.database.FilteredNumberContract.FilteredNumberColumns; import com.android.dialerbind.DatabaseHelperManager; +import com.android.dialerbind.ObjectFactory; import com.google.common.annotations.VisibleForTesting; import java.util.Arrays; @@ -50,14 +51,6 @@ public class FilteredNumberProvider extends ContentProvider { private static final int FILTERED_NUMBERS_TABLE_ID = 2; private static final UriMatcher sUriMatcher = new UriMatcher(UriMatcher.NO_MATCH); - static { - sUriMatcher.addURI(FilteredNumberContract.AUTHORITY, - FilteredNumberContract.FilteredNumber.FILTERED_NUMBERS_TABLE, - FILTERED_NUMBERS_TABLE); - sUriMatcher.addURI(FilteredNumberContract.AUTHORITY, - FilteredNumberContract.FilteredNumber.FILTERED_NUMBERS_TABLE + "/#", - FILTERED_NUMBERS_TABLE_ID); - } @Override public boolean onCreate() { @@ -65,6 +58,12 @@ public class FilteredNumberProvider extends ContentProvider { if (mDialerDatabaseHelper == null) { return false; } + sUriMatcher.addURI(ObjectFactory.getFilteredNumberProviderAuthority(), + FilteredNumberContract.FilteredNumber.FILTERED_NUMBERS_TABLE, + FILTERED_NUMBERS_TABLE); + sUriMatcher.addURI(ObjectFactory.getFilteredNumberProviderAuthority(), + FilteredNumberContract.FilteredNumber.FILTERED_NUMBERS_TABLE + "/#", + FILTERED_NUMBERS_TABLE_ID); return true; } diff --git a/src/com/android/dialerbind/ObjectFactory.java b/src/com/android/dialerbind/ObjectFactory.java index 1a36b05d6..bace0a675 100644 --- a/src/com/android/dialerbind/ObjectFactory.java +++ b/src/com/android/dialerbind/ObjectFactory.java @@ -35,6 +35,10 @@ public class ObjectFactory { return null; } + public static String getFilteredNumberProviderAuthority() { + return "com.android.dialer.database.filterednumberprovider"; + } + /** * Create a new instance of the call log adapter. * @param context The context to use. diff --git a/tests/src/com/android/dialer/database/FilteredNumberProviderTest.java b/tests/src/com/android/dialer/database/FilteredNumberProviderTest.java index 94bf6e6c2..5184930f7 100644 --- a/tests/src/com/android/dialer/database/FilteredNumberProviderTest.java +++ b/tests/src/com/android/dialer/database/FilteredNumberProviderTest.java @@ -32,7 +32,8 @@ public class FilteredNumberProviderTest extends private static final String TIME_ZONE_AMERICA_LOS_ANGELES = "America/Los_Angeles"; private static final String DEFAULT_TIMEZONE = TIME_ZONE_AMERICA_LOS_ANGELES; private static final String DEFAULT_COUNTRY_ISO = "US"; - private static final String TEST_NUMBER = "+1234567890"; + private static final String TEST_NUMBER = "234567890"; + private static final String TEST_NORMALIZED_NUMBER = "+1234567890"; private static final long TEST_TIME = 1439936706; public FilteredNumberProviderTest () { @@ -141,7 +142,7 @@ public class FilteredNumberProviderTest extends v.put(FilteredNumberContract.FilteredNumberColumns.LAST_TIME_FILTERED, TEST_TIME); int rows = mResolver.update(FilteredNumberContract.FilteredNumber.CONTENT_URI, v, FilteredNumberContract.FilteredNumberColumns.NORMALIZED_NUMBER + " = ?", - new String[]{TEST_NUMBER}); + new String[]{TEST_NORMALIZED_NUMBER}); assertEquals(rows, 1); ContentValues expected = getTestValues(TEST_TIME); @@ -186,7 +187,9 @@ public class FilteredNumberProviderTest extends private ContentValues getTestValues(Long timeNow) { ContentValues v = new ContentValues(); v.putNull(FilteredNumberContract.FilteredNumberColumns._ID); - v.put(FilteredNumberContract.FilteredNumberColumns.NORMALIZED_NUMBER, TEST_NUMBER); + v.put(FilteredNumberContract.FilteredNumberColumns.NORMALIZED_NUMBER, + TEST_NORMALIZED_NUMBER); + v.put(FilteredNumberContract.FilteredNumberColumns.NUMBER, TEST_NUMBER); v.put(FilteredNumberContract.FilteredNumberColumns.COUNTRY_ISO, DEFAULT_COUNTRY_ISO); v.put(FilteredNumberContract.FilteredNumberColumns.TIMES_FILTERED, 0); v.putNull(FilteredNumberContract.FilteredNumberColumns.LAST_TIME_FILTERED); |