diff options
-rw-r--r-- | Android.bp | 4 | ||||
-rw-r--r-- | AndroidManifest.xml | 12 | ||||
-rw-r--r-- | OWNERS | 4 | ||||
-rw-r--r-- | res/values-as/strings.xml | 2 | ||||
-rw-r--r-- | res/values-gu/strings.xml | 2 | ||||
-rw-r--r-- | res/values-ko/strings.xml | 2 | ||||
-rw-r--r-- | res/values-te/strings.xml | 4 | ||||
-rw-r--r-- | src/com/android/providers/tv/TvProvider.java | 158 | ||||
-rw-r--r-- | tests/Android.bp | 4 |
9 files changed, 165 insertions, 27 deletions
@@ -14,6 +14,10 @@ // limitations under the License. // +package { + default_applicable_licenses: ["Android-Apache-2.0"], +} + android_app { name: "TvProvider", diff --git a/AndroidManifest.xml b/AndroidManifest.xml index f1d4de0..ce474c2 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -75,7 +75,8 @@ <service android:name="EpgDataCleanupService" /> <!-- Handles database upgrades after OTAs --> - <receiver android:name="TvProviderUpgradeReceiver"> + <receiver android:name="TvProviderUpgradeReceiver" + android:exported="true"> <!-- This broadcast is sent after the core system has finished booting, before the home app is launched or BOOT_COMPLETED is sent. --> @@ -85,14 +86,16 @@ </receiver> <!-- Deletes transient rows on boot. --> - <receiver android:name="BootCompletedReceiver"> + <receiver android:name="BootCompletedReceiver" + android:exported="true"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"/> </intent-filter> </receiver> <!-- Removes channels and programs when some package is fully removed. --> - <receiver android:name="PackageRemovedReceiver"> + <receiver android:name="PackageRemovedReceiver" + android:exported="true"> <intent-filter> <action android:name="android.intent.action.PACKAGE_FULLY_REMOVED"/> <data android:scheme="package"/> @@ -101,7 +104,8 @@ <!-- Removes preview programs, watch next programs, and preview channels when some package is disabled. --> - <receiver android:name="PackageChangedReceiver"> + <receiver android:name="PackageChangedReceiver" + android:exported="true"> <intent-filter> <action android:name="android.intent.action.PACKAGE_CHANGED"/> <data android:scheme="package"/> @@ -1,2 +1,4 @@ -shubang@google.com +amyjojo@google.com nchalko@google.com +quxiangfang@google.com +shubang@google.com diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml index 5322cae..aa3fbaf 100644 --- a/res/values-as/strings.xml +++ b/res/values-as/strings.xml @@ -16,7 +16,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="app_label" msgid="7454398782183407432">"TV সঞ্চয়াগাৰ"</string> + <string name="app_label" msgid="7454398782183407432">"TV ষ্ট’ৰেজ"</string> <string name="permlab_readTvListings" msgid="5272001606068276291">"TVৰ সকলো কাৰ্যসূচী পঢ়ক"</string> <string name="permdesc_readTvListings" msgid="1165157606059567535">"আপোনাৰ ডিভাইচত থকা TVৰ সকলো কাৰ্যসূচী পঢ়ক"</string> </resources> diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml index de422eb..0e969ca 100644 --- a/res/values-gu/strings.xml +++ b/res/values-gu/strings.xml @@ -18,5 +18,5 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="7454398782183407432">"TV સ્ટોરેજ"</string> <string name="permlab_readTvListings" msgid="5272001606068276291">"બધી TV સૂચિઓ વાંચો"</string> - <string name="permdesc_readTvListings" msgid="1165157606059567535">"તમારા ઉપકરણ પર ઉપલબ્ધ બધી TV સૂચિઓ વાંચો"</string> + <string name="permdesc_readTvListings" msgid="1165157606059567535">"તમારા ડિવાઇસ પર ઉપલબ્ધ બધી TV સૂચિઓ વાંચો"</string> </resources> diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index f0ed728..33150f3 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -17,6 +17,6 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="7454398782183407432">"TV Storage"</string> - <string name="permlab_readTvListings" msgid="5272001606068276291">"모든 TV 프로그램 목록 읽기"</string> + <string name="permlab_readTvListings" msgid="5272001606068276291">"모든 TV 프로그램 정보 읽기"</string> <string name="permdesc_readTvListings" msgid="1165157606059567535">"기기에서 사용 가능한 모든 TV 편성정보 읽기"</string> </resources> diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml index 68a1395..e9c0dbf 100644 --- a/res/values-te/strings.xml +++ b/res/values-te/strings.xml @@ -17,6 +17,6 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="7454398782183407432">"టీవీ నిల్వ"</string> - <string name="permlab_readTvListings" msgid="5272001606068276291">"అన్ని టీవీ జాబితాలను చదవడం"</string> - <string name="permdesc_readTvListings" msgid="1165157606059567535">"మీ పరికరంలో అందుబాటులో ఉండే అన్ని టీవీ జాబితాలను చదువుతుంది"</string> + <string name="permlab_readTvListings" msgid="5272001606068276291">"అన్ని టీవీ లిస్ట్లను చదవడం"</string> + <string name="permdesc_readTvListings" msgid="1165157606059567535">"మీ పరికరంలో అందుబాటులో ఉండే అన్ని టీవీ లిస్ట్లను చదువుతుంది"</string> </resources> diff --git a/src/com/android/providers/tv/TvProvider.java b/src/com/android/providers/tv/TvProvider.java index d49d387..c6e151d 100644 --- a/src/com/android/providers/tv/TvProvider.java +++ b/src/com/android/providers/tv/TvProvider.java @@ -89,7 +89,7 @@ public class TvProvider extends ContentProvider { private static final boolean DEBUG = false; private static final String TAG = "TvProvider"; - static final int DATABASE_VERSION = 36; + static final int DATABASE_VERSION = 39; static final String SHARED_PREF_BLOCKED_PACKAGES_KEY = "blocked_packages"; static final String CHANNELS_TABLE = "channels"; static final String PROGRAMS_TABLE = "programs"; @@ -237,6 +237,16 @@ public class TvProvider extends ContentProvider { CHANNELS_TABLE + "." + Channels.COLUMN_INTERNAL_PROVIDER_ID); sChannelProjectionMap.put(Channels.COLUMN_GLOBAL_CONTENT_ID, CHANNELS_TABLE + "." + Channels.COLUMN_GLOBAL_CONTENT_ID); + sChannelProjectionMap.put(Channels.COLUMN_REMOTE_CONTROL_KEY_PRESET_NUMBER, + CHANNELS_TABLE + "." + Channels.COLUMN_REMOTE_CONTROL_KEY_PRESET_NUMBER); + sChannelProjectionMap.put(Channels.COLUMN_SCRAMBLED, + CHANNELS_TABLE + "." + Channels.COLUMN_SCRAMBLED); + sChannelProjectionMap.put(Channels.COLUMN_VIDEO_RESOLUTION, + CHANNELS_TABLE + "." + Channels.COLUMN_VIDEO_RESOLUTION); + sChannelProjectionMap.put(Channels.COLUMN_CHANNEL_LIST_ID, + CHANNELS_TABLE + "." + Channels.COLUMN_CHANNEL_LIST_ID); + sChannelProjectionMap.put(Channels.COLUMN_BROADCAST_GENRE, + CHANNELS_TABLE + "." + Channels.COLUMN_BROADCAST_GENRE); sProgramProjectionMap.clear(); sProgramProjectionMap.put(Programs._ID, Programs._ID); @@ -291,12 +301,18 @@ public class TvProvider extends ContentProvider { sProgramProjectionMap.put(Programs.COLUMN_REVIEW_RATING, Programs.COLUMN_REVIEW_RATING); sProgramProjectionMap.put(PROGRAMS_COLUMN_SERIES_ID, PROGRAMS_COLUMN_SERIES_ID); + sProgramProjectionMap.put(Programs.COLUMN_MULTI_SERIES_ID, + Programs.COLUMN_MULTI_SERIES_ID); sProgramProjectionMap.put(Programs.COLUMN_EVENT_ID, Programs.COLUMN_EVENT_ID); sProgramProjectionMap.put(Programs.COLUMN_GLOBAL_CONTENT_ID, Programs.COLUMN_GLOBAL_CONTENT_ID); sProgramProjectionMap.put(Programs.COLUMN_SPLIT_ID, Programs.COLUMN_SPLIT_ID); + sProgramProjectionMap.put(Programs.COLUMN_SCRAMBLED, + Programs.COLUMN_SCRAMBLED); + sProgramProjectionMap.put(Programs.COLUMN_INTERNAL_PROVIDER_ID, + Programs.COLUMN_INTERNAL_PROVIDER_ID); sWatchedProgramProjectionMap.clear(); sWatchedProgramProjectionMap.put(WatchedPrograms._ID, WatchedPrograms._ID); @@ -392,8 +408,12 @@ public class TvProvider extends ContentProvider { sRecordedProgramProjectionMap.put(RecordedPrograms.COLUMN_REVIEW_RATING, RecordedPrograms.COLUMN_REVIEW_RATING); sRecordedProgramProjectionMap.put(PROGRAMS_COLUMN_SERIES_ID, PROGRAMS_COLUMN_SERIES_ID); + sRecordedProgramProjectionMap.put(RecordedPrograms.COLUMN_MULTI_SERIES_ID, + RecordedPrograms.COLUMN_MULTI_SERIES_ID); sRecordedProgramProjectionMap.put(RecordedPrograms.COLUMN_SPLIT_ID, RecordedPrograms.COLUMN_SPLIT_ID); + sRecordedProgramProjectionMap.put(RecordedPrograms.COLUMN_INTERNAL_PROVIDER_ID, + RecordedPrograms.COLUMN_INTERNAL_PROVIDER_ID); sPreviewProgramProjectionMap.clear(); sPreviewProgramProjectionMap.put(PreviewPrograms._ID, PreviewPrograms._ID); @@ -492,6 +512,10 @@ public class TvProvider extends ContentProvider { PreviewPrograms.COLUMN_CONTENT_ID); sPreviewProgramProjectionMap.put(PreviewPrograms.COLUMN_SPLIT_ID, PreviewPrograms.COLUMN_SPLIT_ID); + sPreviewProgramProjectionMap.put(PreviewPrograms.COLUMN_START_TIME_UTC_MILLIS, + PreviewPrograms.COLUMN_START_TIME_UTC_MILLIS); + sPreviewProgramProjectionMap.put(PreviewPrograms.COLUMN_END_TIME_UTC_MILLIS, + PreviewPrograms.COLUMN_END_TIME_UTC_MILLIS); sWatchNextProgramProjectionMap.clear(); sWatchNextProgramProjectionMap.put(WatchNextPrograms._ID, WatchNextPrograms._ID); @@ -592,6 +616,10 @@ public class TvProvider extends ContentProvider { WatchNextPrograms.COLUMN_LAST_ENGAGEMENT_TIME_UTC_MILLIS); sWatchNextProgramProjectionMap.put(WatchNextPrograms.COLUMN_SPLIT_ID, WatchNextPrograms.COLUMN_SPLIT_ID); + sWatchNextProgramProjectionMap.put(WatchNextPrograms.COLUMN_START_TIME_UTC_MILLIS, + PreviewPrograms.COLUMN_START_TIME_UTC_MILLIS); + sWatchNextProgramProjectionMap.put(WatchNextPrograms.COLUMN_END_TIME_UTC_MILLIS, + PreviewPrograms.COLUMN_END_TIME_UTC_MILLIS); } // Mapping from broadcast genre to canonical genre. @@ -642,7 +670,9 @@ public class TvProvider extends ContentProvider { + RecordedPrograms.COLUMN_REVIEW_RATING_STYLE + " INTEGER," + RecordedPrograms.COLUMN_REVIEW_RATING + " TEXT," + PROGRAMS_COLUMN_SERIES_ID + " TEXT," + + RecordedPrograms.COLUMN_MULTI_SERIES_ID + " TEXT," + RecordedPrograms.COLUMN_SPLIT_ID + " TEXT," + + RecordedPrograms.COLUMN_INTERNAL_PROVIDER_ID + " TEXT," + "FOREIGN KEY(" + RecordedPrograms.COLUMN_CHANNEL_ID + ") " + "REFERENCES " + CHANNELS_TABLE + "(" + Channels._ID + ") " + "ON UPDATE CASCADE ON DELETE SET NULL);"; @@ -698,6 +728,8 @@ public class TvProvider extends ContentProvider { + PreviewPrograms.COLUMN_BROWSABLE + " INTEGER NOT NULL DEFAULT 1," + PreviewPrograms.COLUMN_CONTENT_ID + " TEXT," + PreviewPrograms.COLUMN_SPLIT_ID + " TEXT," + + PreviewPrograms.COLUMN_START_TIME_UTC_MILLIS + " INTEGER," + + PreviewPrograms.COLUMN_END_TIME_UTC_MILLIS + " INTEGER," + "FOREIGN KEY(" + PreviewPrograms.COLUMN_CHANNEL_ID + "," + PreviewPrograms.COLUMN_PACKAGE_NAME + ") REFERENCES " + CHANNELS_TABLE + "(" @@ -760,7 +792,9 @@ public class TvProvider extends ContentProvider { + WatchNextPrograms.COLUMN_BROWSABLE + " INTEGER NOT NULL DEFAULT 1," + WatchNextPrograms.COLUMN_CONTENT_ID + " TEXT," + WatchNextPrograms.COLUMN_LAST_ENGAGEMENT_TIME_UTC_MILLIS + " INTEGER," - + WatchNextPrograms.COLUMN_SPLIT_ID + " TEXT" + + WatchNextPrograms.COLUMN_SPLIT_ID + " TEXT," + + WatchNextPrograms.COLUMN_START_TIME_UTC_MILLIS + " INTEGER," + + WatchNextPrograms.COLUMN_END_TIME_UTC_MILLIS + " INTEGER" + ");"; private static final String CREATE_WATCH_NEXT_PROGRAMS_PACKAGE_NAME_INDEX_SQL = "CREATE INDEX watch_next_programs_package_name_index ON " + WATCH_NEXT_PROGRAMS_TABLE @@ -832,6 +866,11 @@ public class TvProvider extends ContentProvider { + Channels.COLUMN_TRANSIENT + " INTEGER NOT NULL DEFAULT 0," + Channels.COLUMN_INTERNAL_PROVIDER_ID + " TEXT," + Channels.COLUMN_GLOBAL_CONTENT_ID + " TEXT," + + Channels.COLUMN_REMOTE_CONTROL_KEY_PRESET_NUMBER + " INTEGER," + + Channels.COLUMN_SCRAMBLED + " INTEGER NOT NULL DEFAULT 0," + + Channels.COLUMN_VIDEO_RESOLUTION + " TEXT," + + Channels.COLUMN_CHANNEL_LIST_ID + " TEXT," + + Channels.COLUMN_BROADCAST_GENRE + " TEXT," // Needed for foreign keys in other tables. + "UNIQUE(" + Channels._ID + "," + Channels.COLUMN_PACKAGE_NAME + ")" + ");"); @@ -867,9 +906,12 @@ public class TvProvider extends ContentProvider { + Programs.COLUMN_REVIEW_RATING + " TEXT," + Programs.COLUMN_VERSION_NUMBER + " INTEGER," + PROGRAMS_COLUMN_SERIES_ID + " TEXT," + + Programs.COLUMN_MULTI_SERIES_ID + " TEXT," + Programs.COLUMN_EVENT_ID + " INTEGER NOT NULL DEFAULT 0," + Programs.COLUMN_GLOBAL_CONTENT_ID + " TEXT," + Programs.COLUMN_SPLIT_ID + " TEXT," + + Programs.COLUMN_SCRAMBLED + " INTEGER NOT NULL DEFAULT 0," + + Programs.COLUMN_INTERNAL_PROVIDER_ID + " TEXT," + "FOREIGN KEY(" + Programs.COLUMN_CHANNEL_ID + "," + Programs.COLUMN_PACKAGE_NAME + ") REFERENCES " + CHANNELS_TABLE + "(" @@ -1018,20 +1060,102 @@ public class TvProvider extends ContentProvider { } } if (oldVersion <= 35) { + if (!getColumnNames(db, CHANNELS_TABLE) + .contains(Channels.COLUMN_GLOBAL_CONTENT_ID)) { + db.execSQL("ALTER TABLE " + CHANNELS_TABLE + " ADD " + + Channels.COLUMN_GLOBAL_CONTENT_ID+ " TEXT;"); + } + if (!getColumnNames(db, PROGRAMS_TABLE) + .contains(Programs.COLUMN_EVENT_ID)) { + db.execSQL("ALTER TABLE " + PROGRAMS_TABLE + " ADD " + + Programs.COLUMN_EVENT_ID + " INTEGER NOT NULL DEFAULT 0;"); + } + if (!getColumnNames(db, PROGRAMS_TABLE) + .contains(Programs.COLUMN_GLOBAL_CONTENT_ID)) { + db.execSQL("ALTER TABLE " + PROGRAMS_TABLE + " ADD " + + Programs.COLUMN_GLOBAL_CONTENT_ID + " TEXT;"); + } + if (!getColumnNames(db, PROGRAMS_TABLE) + .contains(Programs.COLUMN_SPLIT_ID)) { + db.execSQL("ALTER TABLE " + PROGRAMS_TABLE + " ADD " + + Programs.COLUMN_SPLIT_ID + " TEXT;"); + } + if (!getColumnNames(db, RECORDED_PROGRAMS_TABLE) + .contains(RecordedPrograms.COLUMN_SPLIT_ID)) { + db.execSQL("ALTER TABLE " + RECORDED_PROGRAMS_TABLE + " ADD " + + RecordedPrograms.COLUMN_SPLIT_ID + " TEXT;"); + } + if (!getColumnNames(db, PREVIEW_PROGRAMS_TABLE) + .contains(PreviewPrograms.COLUMN_SPLIT_ID)) { + db.execSQL("ALTER TABLE " + PREVIEW_PROGRAMS_TABLE + " ADD " + + PreviewPrograms.COLUMN_SPLIT_ID + " TEXT;"); + } + if (!getColumnNames(db, WATCH_NEXT_PROGRAMS_TABLE) + .contains(WatchNextPrograms.COLUMN_SPLIT_ID)) { + db.execSQL("ALTER TABLE " + WATCH_NEXT_PROGRAMS_TABLE + " ADD " + + WatchNextPrograms.COLUMN_SPLIT_ID + " TEXT;"); + } + } + if (oldVersion <= 36) { db.execSQL("ALTER TABLE " + CHANNELS_TABLE + " ADD " - + Channels.COLUMN_GLOBAL_CONTENT_ID + " TEXT;"); - db.execSQL("ALTER TABLE " + PROGRAMS_TABLE + " ADD " - + Programs.COLUMN_EVENT_ID + " INTEGER NOT NULL DEFAULT 0;"); - db.execSQL("ALTER TABLE " + PROGRAMS_TABLE + " ADD " - + Programs.COLUMN_GLOBAL_CONTENT_ID + " TEXT;"); - db.execSQL("ALTER TABLE " + PROGRAMS_TABLE + " ADD " - + Programs.COLUMN_SPLIT_ID + " TEXT;"); - db.execSQL("ALTER TABLE " + RECORDED_PROGRAMS_TABLE + " ADD " - + RecordedPrograms.COLUMN_SPLIT_ID + " TEXT;"); - db.execSQL("ALTER TABLE " + PREVIEW_PROGRAMS_TABLE + " ADD " - + PreviewPrograms.COLUMN_SPLIT_ID + " TEXT;"); - db.execSQL("ALTER TABLE " + WATCHED_PROGRAMS_TABLE + " ADD " - + WatchNextPrograms.COLUMN_SPLIT_ID + " TEXT;"); + + Channels.COLUMN_REMOTE_CONTROL_KEY_PRESET_NUMBER + " INTEGER;"); + db.execSQL("ALTER TABLE " + CHANNELS_TABLE + " ADD " + + Channels.COLUMN_SCRAMBLED + " INTEGER NOT NULL DEFAULT 0;"); + db.execSQL("ALTER TABLE " + CHANNELS_TABLE + " ADD " + + Channels.COLUMN_VIDEO_RESOLUTION + " TEXT;"); + db.execSQL("ALTER TABLE " + CHANNELS_TABLE + " ADD " + + Channels.COLUMN_CHANNEL_LIST_ID + " TEXT;"); + db.execSQL("ALTER TABLE " + CHANNELS_TABLE + " ADD " + + Channels.COLUMN_BROADCAST_GENRE + " TEXT;"); + } + if (oldVersion <= 37) { + if (!getColumnNames(db, PREVIEW_PROGRAMS_TABLE) + .contains(PreviewPrograms.COLUMN_START_TIME_UTC_MILLIS)) { + db.execSQL("ALTER TABLE " + PREVIEW_PROGRAMS_TABLE + " ADD " + + PreviewPrograms.COLUMN_START_TIME_UTC_MILLIS + " INTEGER;"); + } + if (!getColumnNames(db, PREVIEW_PROGRAMS_TABLE) + .contains(PreviewPrograms.COLUMN_END_TIME_UTC_MILLIS)) { + db.execSQL("ALTER TABLE " + PREVIEW_PROGRAMS_TABLE + " ADD " + + PreviewPrograms.COLUMN_END_TIME_UTC_MILLIS + " INTEGER;"); + } + if (!getColumnNames(db, WATCH_NEXT_PROGRAMS_TABLE) + .contains(WatchNextPrograms.COLUMN_START_TIME_UTC_MILLIS)) { + db.execSQL("ALTER TABLE " + WATCH_NEXT_PROGRAMS_TABLE + " ADD " + + WatchNextPrograms.COLUMN_START_TIME_UTC_MILLIS + " INTEGER;"); + } + if (!getColumnNames(db, WATCH_NEXT_PROGRAMS_TABLE) + .contains(WatchNextPrograms.COLUMN_END_TIME_UTC_MILLIS)) { + db.execSQL("ALTER TABLE " + WATCH_NEXT_PROGRAMS_TABLE + " ADD " + + WatchNextPrograms.COLUMN_END_TIME_UTC_MILLIS + " INTEGER;"); + } + } + if (oldVersion <= 38) { + if (!getColumnNames(db, PROGRAMS_TABLE) + .contains(Programs.COLUMN_SCRAMBLED)) { + db.execSQL("ALTER TABLE " + PROGRAMS_TABLE + " ADD " + + Programs.COLUMN_SCRAMBLED + " INTEGER NOT NULL DEFAULT 0;"); + } + if (!getColumnNames(db, PROGRAMS_TABLE) + .contains(Programs.COLUMN_MULTI_SERIES_ID)) { + db.execSQL("ALTER TABLE " + PROGRAMS_TABLE + " ADD " + + Programs.COLUMN_MULTI_SERIES_ID + " TEXT;"); + } + if (!getColumnNames(db, PROGRAMS_TABLE) + .contains(Programs.COLUMN_INTERNAL_PROVIDER_ID)) { + db.execSQL("ALTER TABLE " + PROGRAMS_TABLE + " ADD " + + Programs.COLUMN_INTERNAL_PROVIDER_ID + " TEXT;"); + } + if (!getColumnNames(db, RECORDED_PROGRAMS_TABLE) + .contains(RecordedPrograms.COLUMN_MULTI_SERIES_ID)) { + db.execSQL("ALTER TABLE " + RECORDED_PROGRAMS_TABLE + " ADD " + + RecordedPrograms.COLUMN_MULTI_SERIES_ID + " TEXT;"); + } + if (!getColumnNames(db, RECORDED_PROGRAMS_TABLE) + .contains(RecordedPrograms.COLUMN_INTERNAL_PROVIDER_ID)) { + db.execSQL("ALTER TABLE " + RECORDED_PROGRAMS_TABLE + " ADD " + + RecordedPrograms.COLUMN_INTERNAL_PROVIDER_ID + " TEXT;"); + } } Log.i(TAG, "Upgrading from version " + oldVersion + " to " + newVersion + " is done."); } @@ -1099,8 +1223,8 @@ public class TvProvider extends ContentProvider { void scheduleEpgDataCleanup() { Intent intent = new Intent(EpgDataCleanupService.ACTION_CLEAN_UP_EPG_DATA); intent.setClass(getContext(), EpgDataCleanupService.class); - PendingIntent pendingIntent = PendingIntent.getService( - getContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); + PendingIntent pendingIntent = PendingIntent.getService(getContext(), 0, intent, + PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE); AlarmManager alarmManager = (AlarmManager) getContext().getSystemService(Context.ALARM_SERVICE); alarmManager.setInexactRepeating(AlarmManager.RTC, System.currentTimeMillis(), diff --git a/tests/Android.bp b/tests/Android.bp index 7094786..635f5cb 100644 --- a/tests/Android.bp +++ b/tests/Android.bp @@ -14,6 +14,10 @@ // limitations under the License. // +package { + default_applicable_licenses: ["Android-Apache-2.0"], +} + android_test { name: "TvProviderTests", srcs: ["src/**/*.java"], |