diff options
Diffstat (limited to 'src/com/android')
5 files changed, 46 insertions, 38 deletions
diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastContentProvider.java b/src/com/android/cellbroadcastreceiver/CellBroadcastContentProvider.java index 23c9e077e..4f7572d6b 100644 --- a/src/com/android/cellbroadcastreceiver/CellBroadcastContentProvider.java +++ b/src/com/android/cellbroadcastreceiver/CellBroadcastContentProvider.java @@ -67,33 +67,6 @@ public class CellBroadcastContentProvider extends ContentProvider { sUriMatcher.addURI(CB_AUTHORITY, "#", CB_ALL_ID); } - /* - * Query columns for instantiating SmsCbMessage. - */ - public static final String[] QUERY_COLUMNS = { - Telephony.CellBroadcasts._ID, - Telephony.CellBroadcasts.SLOT_INDEX, - Telephony.CellBroadcasts.GEOGRAPHICAL_SCOPE, - Telephony.CellBroadcasts.PLMN, - Telephony.CellBroadcasts.LAC, - Telephony.CellBroadcasts.CID, - Telephony.CellBroadcasts.SERIAL_NUMBER, - Telephony.CellBroadcasts.SERVICE_CATEGORY, - Telephony.CellBroadcasts.LANGUAGE_CODE, - Telephony.CellBroadcasts.MESSAGE_BODY, - Telephony.CellBroadcasts.DELIVERY_TIME, - Telephony.CellBroadcasts.MESSAGE_READ, - Telephony.CellBroadcasts.MESSAGE_FORMAT, - Telephony.CellBroadcasts.MESSAGE_PRIORITY, - Telephony.CellBroadcasts.ETWS_WARNING_TYPE, - Telephony.CellBroadcasts.CMAS_MESSAGE_CLASS, - Telephony.CellBroadcasts.CMAS_CATEGORY, - Telephony.CellBroadcasts.CMAS_RESPONSE_TYPE, - Telephony.CellBroadcasts.CMAS_SEVERITY, - Telephony.CellBroadcasts.CMAS_URGENCY, - Telephony.CellBroadcasts.CMAS_CERTAINTY - }; - /** The database for this content provider. */ private SQLiteOpenHelper mOpenHelper; @@ -103,7 +76,12 @@ public class CellBroadcastContentProvider extends ContentProvider { */ @Override public boolean onCreate() { - mOpenHelper = new CellBroadcastDatabaseHelper(getContext()); + mOpenHelper = new CellBroadcastDatabaseHelper(getContext(), false); + // trigger this to create database explicitly. Otherwise the db will be created only after + // the first query/update/insertion. Data migration is done inside db creation and we want + // to migrate data from cellbroadcast-legacy immediately when upgrade to the mainline module + // rather than migrate after the first emergency alert. + mOpenHelper.getReadableDatabase(); return true; } diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastDatabaseHelper.java b/src/com/android/cellbroadcastreceiver/CellBroadcastDatabaseHelper.java index 5080a05d8..fd736f330 100644 --- a/src/com/android/cellbroadcastreceiver/CellBroadcastDatabaseHelper.java +++ b/src/com/android/cellbroadcastreceiver/CellBroadcastDatabaseHelper.java @@ -40,6 +40,33 @@ public class CellBroadcastDatabaseHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "cell_broadcasts.db"; static final String TABLE_NAME = "broadcasts"; + /* + * Query columns for instantiating SmsCbMessage. + */ + public static final String[] QUERY_COLUMNS = { + Telephony.CellBroadcasts._ID, + Telephony.CellBroadcasts.SLOT_INDEX, + Telephony.CellBroadcasts.GEOGRAPHICAL_SCOPE, + Telephony.CellBroadcasts.PLMN, + Telephony.CellBroadcasts.LAC, + Telephony.CellBroadcasts.CID, + Telephony.CellBroadcasts.SERIAL_NUMBER, + Telephony.CellBroadcasts.SERVICE_CATEGORY, + Telephony.CellBroadcasts.LANGUAGE_CODE, + Telephony.CellBroadcasts.MESSAGE_BODY, + Telephony.CellBroadcasts.DELIVERY_TIME, + Telephony.CellBroadcasts.MESSAGE_READ, + Telephony.CellBroadcasts.MESSAGE_FORMAT, + Telephony.CellBroadcasts.MESSAGE_PRIORITY, + Telephony.CellBroadcasts.ETWS_WARNING_TYPE, + Telephony.CellBroadcasts.CMAS_MESSAGE_CLASS, + Telephony.CellBroadcasts.CMAS_CATEGORY, + Telephony.CellBroadcasts.CMAS_RESPONSE_TYPE, + Telephony.CellBroadcasts.CMAS_SEVERITY, + Telephony.CellBroadcasts.CMAS_URGENCY, + Telephony.CellBroadcasts.CMAS_CERTAINTY + }; + /** * Database version 1: initial version (support removed) * Database version 2-9: (reserved for OEM database customization) (support removed) @@ -50,10 +77,12 @@ public class CellBroadcastDatabaseHelper extends SQLiteOpenHelper { private static final int DATABASE_VERSION = 12; private final Context mContext; + final boolean mLegacyProvider; - CellBroadcastDatabaseHelper(Context context) { + CellBroadcastDatabaseHelper(Context context, boolean legacyProvider) { super(context, DATABASE_NAME, null, DATABASE_VERSION); mContext = context; + mLegacyProvider = legacyProvider; } @Override @@ -83,7 +112,9 @@ public class CellBroadcastDatabaseHelper extends SQLiteOpenHelper { db.execSQL("CREATE INDEX IF NOT EXISTS deliveryTimeIndex ON " + TABLE_NAME + " (" + Telephony.CellBroadcasts.DELIVERY_TIME + ");"); - migrateFromLegacy(db); + if (!mLegacyProvider) { + migrateFromLegacy(db); + } } @Override @@ -101,8 +132,8 @@ public class CellBroadcastDatabaseHelper extends SQLiteOpenHelper { } /** - * This is the migration logic to accommodate OEMs who previously use non-AOSP CBR and move to - * mainlined CBR for the first time. When the db is initially created, this is called once to + * This is the migration logic to accommodate OEMs move to mainlined CBR for the first time. + * When the db is initially created, this is called once to * migrate predefined data through {@link Telephony.CellBroadcasts#AUTHORITY_LEGACY_URI} * from OEM app. */ @@ -118,12 +149,11 @@ public class CellBroadcastDatabaseHelper extends SQLiteOpenHelper { log("Starting migration from legacy provider"); // migration columns are same as query columns try (Cursor c = client.query(Telephony.CellBroadcasts.AUTHORITY_LEGACY_URI, - CellBroadcastContentProvider.QUERY_COLUMNS, - null, null, null)) { + QUERY_COLUMNS, null, null, null)) { final ContentValues values = new ContentValues(); while (c.moveToNext()) { values.clear(); - for (String column : CellBroadcastContentProvider.QUERY_COLUMNS) { + for (String column : QUERY_COLUMNS) { copyFromCursorToContentValues(column, c, values); } diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastListActivity.java b/src/com/android/cellbroadcastreceiver/CellBroadcastListActivity.java index 7b5228688..2f68db6b9 100644 --- a/src/com/android/cellbroadcastreceiver/CellBroadcastListActivity.java +++ b/src/com/android/cellbroadcastreceiver/CellBroadcastListActivity.java @@ -256,7 +256,7 @@ public class CellBroadcastListActivity extends Activity { if (id == LOADER_NORMAL_HISTORY) { Log.d(TAG, "onCreateLoader: normal history."); return new CursorLoader(getActivity(), CellBroadcastContentProvider.CONTENT_URI, - CellBroadcastContentProvider.QUERY_COLUMNS, null, null, + CellBroadcastDatabaseHelper.QUERY_COLUMNS, null, null, Telephony.CellBroadcasts.DELIVERY_TIME + " DESC"); } else if (id == LOADER_HISTORY_FROM_CBS) { Log.d(TAG, "onCreateLoader: history from cell broadcast service"); diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastListItem.java b/src/com/android/cellbroadcastreceiver/CellBroadcastListItem.java index d1e723eff..81b0c3608 100644 --- a/src/com/android/cellbroadcastreceiver/CellBroadcastListItem.java +++ b/src/com/android/cellbroadcastreceiver/CellBroadcastListItem.java @@ -75,7 +75,7 @@ public class CellBroadcastListItem extends RelativeLayout { SpannableStringBuilder messageText = new SpannableStringBuilder(message.getMessageBody()); try (Cursor cursor = mContext.getContentResolver().query( CellBroadcastContentProvider.CONTENT_URI, - CellBroadcastContentProvider.QUERY_COLUMNS, + CellBroadcastDatabaseHelper.QUERY_COLUMNS, Telephony.CellBroadcasts.DELIVERY_TIME + "=?", new String[] {Long.toString(message.getReceivedTime())}, null)) { diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java b/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java index fd0198ab8..27cfcaeec 100644 --- a/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java +++ b/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java @@ -277,7 +277,7 @@ public class CellBroadcastReceiver extends BroadcastReceiver { CellBroadcasts.AUTHORITY_LEGACY, CellBroadcasts.CALL_METHOD_GET_PREFERENCE, key, null); - if (pref != null) { + if (pref != null && pref.containsKey(key)) { Log.d(TAG, "migrateSharedPreferenceFromLegacy: " + key + "val: " + pref.getBoolean(key)); sp.putBoolean(key, pref.getBoolean(key)); |