summaryrefslogtreecommitdiff
path: root/legacy/src/com/android/cellbroadcastreceiver/LegacyCellBroadcastContentProvider.java
diff options
context:
space:
mode:
Diffstat (limited to 'legacy/src/com/android/cellbroadcastreceiver/LegacyCellBroadcastContentProvider.java')
-rw-r--r--legacy/src/com/android/cellbroadcastreceiver/LegacyCellBroadcastContentProvider.java112
1 files changed, 112 insertions, 0 deletions
diff --git a/legacy/src/com/android/cellbroadcastreceiver/LegacyCellBroadcastContentProvider.java b/legacy/src/com/android/cellbroadcastreceiver/LegacyCellBroadcastContentProvider.java
new file mode 100644
index 000000000..41a8f26dd
--- /dev/null
+++ b/legacy/src/com/android/cellbroadcastreceiver/LegacyCellBroadcastContentProvider.java
@@ -0,0 +1,112 @@
+package com.android.cellbroadcastreceiver;
+
+import android.content.ContentProvider;
+import android.content.ContentValues;
+import android.content.SharedPreferences;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteDatabase;
+import android.database.sqlite.SQLiteOpenHelper;
+import android.database.sqlite.SQLiteQueryBuilder;
+import android.net.Uri;
+import android.os.Bundle;
+import android.preference.PreferenceManager;
+import android.provider.Telephony;
+import android.provider.Telephony.CellBroadcasts;
+import android.util.Log;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * Very limited subset of function which is only used to surfaces data.
+ */
+public class LegacyCellBroadcastContentProvider extends ContentProvider {
+
+ private static final String TAG = LegacyCellBroadcastContentProvider.class.getSimpleName();
+ /** A list of preference supported by legacy app **/
+ private static final List<String> PREF_KEYS = Arrays.asList(
+ CellBroadcasts.Preference.ENABLE_CMAS_AMBER_PREF,
+ CellBroadcasts.Preference.ENABLE_AREA_UPDATE_INFO_PREF,
+ CellBroadcasts.Preference.ENABLE_TEST_ALERT_PREF,
+ CellBroadcasts.Preference.ENABLE_STATE_LOCAL_TEST_PREF,
+ CellBroadcasts.Preference.ENABLE_PUBLIC_SAFETY_PREF,
+ CellBroadcasts.Preference.ENABLE_CMAS_SEVERE_THREAT_PREF,
+ CellBroadcasts.Preference.ENABLE_CMAS_EXTREME_THREAT_PREF,
+ CellBroadcasts.Preference.ENABLE_CMAS_PRESIDENTIAL_PREF,
+ CellBroadcasts.Preference.ENABLE_EMERGENCY_PERF,
+ CellBroadcasts.Preference.ENABLE_ALERT_VIBRATION_PREF,
+ CellBroadcasts.Preference.ENABLE_CMAS_IN_SECOND_LANGUAGE_PREF
+ );
+
+ /** The database for this content provider. */
+ private SQLiteOpenHelper mOpenHelper;
+
+ @Override
+ public boolean onCreate() {
+ Log.d(TAG, "onCreate");
+ mOpenHelper = new CellBroadcastDatabaseHelper(getContext(), true);
+ return true;
+ }
+
+ @Override
+ public Cursor query(Uri uri, String[] projectionIn, String selection,
+ String[] selectionArgs, String sortOrder) {
+ Log.d(TAG, "query:"
+ + " uri=" + uri
+ + " values=" + Arrays.toString(projectionIn)
+ + " selection=" + selection
+ + " selectionArgs=" + Arrays.toString(selectionArgs));
+
+ SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
+ qb.setTables(CellBroadcastDatabaseHelper.TABLE_NAME);
+ SQLiteDatabase db = mOpenHelper.getReadableDatabase();
+ Cursor c = qb.query(db, projectionIn, selection, selectionArgs, null, null, sortOrder);
+ Log.d(TAG, "query from legacy cellbroadcast, returned " + c.getCount() + " messages");
+ return c;
+ }
+
+ @Override
+ public Bundle call(String method, String name, Bundle args) {
+ Log.d(TAG, "call:"
+ + " method=" + method
+ + " name=" + name
+ + " args=" + args);
+ SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getContext());
+ if (Telephony.CellBroadcasts.CALL_METHOD_GET_PREFERENCE.equals(method)) {
+ if (PREF_KEYS.contains(name)) {
+ // if preference value does not exists, return null.
+ if (sp != null && sp.contains(name)) {
+ Bundle result = new Bundle();
+ result.putBoolean(name, sp.getBoolean(name, true));
+ Log.d(TAG, "migrate sharedpreference: " + name + " val: " + result.get(name));
+ return result;
+ }
+ } else {
+ Log.e(TAG, "unsupported preference name" + name);
+ }
+ } else {
+ Log.e(TAG, "unsuppprted call method: " + method);
+ }
+ return null;
+ }
+
+ @Override
+ public String getType(Uri uri) {
+ Log.d(TAG, "getType");
+ return null;
+ }
+
+ @Override
+ public Uri insert(Uri uri, ContentValues values) {
+ throw new UnsupportedOperationException("insert not supported");
+ }
+
+ @Override
+ public int delete(Uri uri, String selection, String[] selectionArgs) {
+ throw new UnsupportedOperationException("delete not supported");
+ }
+
+ @Override
+ public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
+ throw new UnsupportedOperationException("update not supported");
+ }
+} \ No newline at end of file