SMS: Support priority for SMS
Add new "priority" column to SMS db if it does not exist.
Change-Id: I52ce14f6d8e8903f6a2fb2a63f7cb3eb35371b15
CRs-Fixed: 749755, 1016740
diff --git a/src/com/android/providers/telephony/MmsSmsDatabaseHelper.java b/src/com/android/providers/telephony/MmsSmsDatabaseHelper.java
index 610418e..3fc2dd3 100644
--- a/src/com/android/providers/telephony/MmsSmsDatabaseHelper.java
+++ b/src/com/android/providers/telephony/MmsSmsDatabaseHelper.java
@@ -23,6 +23,7 @@
import android.content.IntentFilter;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
+import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.storage.StorageManager;
import android.provider.BaseColumns;
@@ -234,12 +235,14 @@
private static boolean sTriedAutoIncrement = false;
private static boolean sFakeLowStorageTest = false; // for testing only
+ private static final String NO_SUCH_COLUMN_EXCEPTION_MESSAGE = "no such column";
+ private static final String NO_SUCH_TABLE_EXCEPTION_MESSAGE = "no such table";
+
static final String DATABASE_NAME = "mmssms.db";
static final int DATABASE_VERSION = 64;
private final Context mContext;
private LowStorageMonitor mLowStorageMonitor;
-
private MmsSmsDatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
@@ -487,6 +490,20 @@
createIndices(db);
}
+ @Override
+ public void onOpen(SQLiteDatabase db) {
+ try {
+ // Try to access the table and create it if "no such table"
+ db.query(SmsProvider.TABLE_SMS, null, null, null, null, null, null);
+ checkAndUpdateSmsTable(db);
+ } catch (SQLiteException e) {
+ Log.e(TAG, "onOpen: ex. ", e);
+ if (e.getMessage().startsWith(NO_SUCH_TABLE_EXCEPTION_MESSAGE)) {
+ createSmsTables(db);
+ }
+ }
+ }
+
// When upgrading the database we need to populate the words
// table with the rows out of sms and part.
private void populateWordsTable(SQLiteDatabase db) {
@@ -885,7 +902,8 @@
"sub_id INTEGER DEFAULT " + SubscriptionManager.INVALID_SUBSCRIPTION_ID + ", " +
"error_code INTEGER DEFAULT 0," +
"creator TEXT," +
- "seen INTEGER DEFAULT 0" +
+ "seen INTEGER DEFAULT 0," +
+ "priority INTEGER DEFAULT -1" +
");");
/**
@@ -1729,6 +1747,18 @@
private void upgradeDatabaseToVersion64(SQLiteDatabase db) {
db.execSQL("ALTER TABLE " + SmsProvider.TABLE_RAW +" ADD COLUMN message_body TEXT");
}
+ private void checkAndUpdateSmsTable(SQLiteDatabase db) {
+ try {
+ db.query(SmsProvider.TABLE_SMS, new String[] {"priority"}, null, null, null, null,
+ null);
+ } catch (SQLiteException e) {
+ Log.e(TAG, "checkAndUpgradeSmsTable: ex. ", e);
+ if (e.getMessage().startsWith(NO_SUCH_COLUMN_EXCEPTION_MESSAGE)) {
+ db.execSQL("ALTER TABLE " + SmsProvider.TABLE_SMS + " ADD COLUMN "
+ + "priority INTEGER DEFAULT -1");
+ }
+ }
+ }
@Override
public synchronized SQLiteDatabase getWritableDatabase() {