diff options
Diffstat (limited to 'src/com/android/dialer/database/DialerDatabaseHelper.java')
-rw-r--r-- | src/com/android/dialer/database/DialerDatabaseHelper.java | 45 |
1 files changed, 37 insertions, 8 deletions
diff --git a/src/com/android/dialer/database/DialerDatabaseHelper.java b/src/com/android/dialer/database/DialerDatabaseHelper.java index 60179f6b9..aad9472a6 100644 --- a/src/com/android/dialer/database/DialerDatabaseHelper.java +++ b/src/com/android/dialer/database/DialerDatabaseHelper.java @@ -47,6 +47,7 @@ import com.google.common.base.Objects; import com.google.common.base.Preconditions; import com.google.common.collect.Lists; +import java.lang.reflect.Method; import java.util.ArrayList; import java.util.HashSet; import java.util.Set; @@ -67,6 +68,10 @@ public class DialerDatabaseHelper extends SQLiteOpenHelper { private static final AtomicBoolean sInUpdate = new AtomicBoolean(false); private final Context mContext; + private Class mMultiMatchClass; + private Object mMultiMatchObject; + private Method mMultiMatchMethod; + /** * SmartDial DB version ranges: * <pre> @@ -83,7 +88,7 @@ public class DialerDatabaseHelper extends SQLiteOpenHelper { private static final String LAST_UPDATED_MILLIS = "last_updated_millis"; private static final String DATABASE_VERSION_PROPERTY = "database_version"; - private static final int MAX_ENTRIES = 20; + private static final int MAX_ENTRIES = 40; public interface Tables { /** Saves the necessary smart dial information of all contacts. */ @@ -346,6 +351,33 @@ public class DialerDatabaseHelper extends SQLiteOpenHelper { mContext = Preconditions.checkNotNull(context, "Context must not be null"); } + private void initMultiLanguageSearch() { + try { + if (mMultiMatchClass == null) { + mMultiMatchClass = Class + .forName("com.qualcomm.qti.smartsearch.SmartMatch"); + Log.d(TAG, "create multi match success"); + } + if (mMultiMatchObject == null && mMultiMatchClass != null) { + mMultiMatchObject = mMultiMatchClass.newInstance(); + } + if (mMultiMatchMethod == null && mMultiMatchClass != null) { + mMultiMatchMethod = mMultiMatchClass.getDeclaredMethod( + "getMatchStringIndex", String.class, String.class, + int.class); + } + } catch (Exception e) { + } + } + + public Object getMultiMatchObject() { + return mMultiMatchObject; + } + + public Method getMultiMatchMethod() { + return mMultiMatchMethod; + } + /** * Creates tables in the database when database is created for the first time. * @@ -758,6 +790,8 @@ public class DialerDatabaseHelper extends SQLiteOpenHelper { * update. */ public void updateSmartDialDatabase() { + initMultiLanguageSearch(); + final SQLiteDatabase db = getWritableDatabase(); synchronized(mLock) { @@ -925,7 +959,7 @@ public class DialerDatabaseHelper extends SQLiteOpenHelper { final SQLiteDatabase db = getReadableDatabase(); /** Uses SQL query wildcard '%' to represent prefix matching.*/ - final String looseQuery = query + "%"; + //final String looseQuery = query + "%"; final ArrayList<ContactNumber> result = Lists.newArrayList(); @@ -941,12 +975,7 @@ public class DialerDatabaseHelper extends SQLiteOpenHelper { SmartDialDbColumns.NUMBER + ", " + SmartDialDbColumns.CONTACT_ID + ", " + SmartDialDbColumns.LOOKUP_KEY + - " FROM " + Tables.SMARTDIAL_TABLE + " WHERE " + - SmartDialDbColumns.CONTACT_ID + " IN " + - " (SELECT " + PrefixColumns.CONTACT_ID + - " FROM " + Tables.PREFIX_TABLE + - " WHERE " + Tables.PREFIX_TABLE + "." + PrefixColumns.PREFIX + - " LIKE '" + looseQuery + "')" + + " FROM " + Tables.SMARTDIAL_TABLE + " ORDER BY " + SmartDialSortingOrder.SORT_ORDER, new String[] {currentTimeStamp}); if (cursor == null) { |