summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Android.bp4
-rw-r--r--AndroidManifest.xml12
-rw-r--r--OWNERS4
-rw-r--r--res/values-as/strings.xml2
-rw-r--r--res/values-gu/strings.xml2
-rw-r--r--res/values-ko/strings.xml2
-rw-r--r--res/values-te/strings.xml4
-rw-r--r--src/com/android/providers/tv/TvProvider.java158
-rw-r--r--tests/Android.bp4
9 files changed, 165 insertions, 27 deletions
diff --git a/Android.bp b/Android.bp
index 544bf39..1a39f11 100644
--- a/Android.bp
+++ b/Android.bp
@@ -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"/>
diff --git a/OWNERS b/OWNERS
index 242bb0d..73ea663 100644
--- a/OWNERS
+++ b/OWNERS
@@ -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"],