summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/api/current.txt1
-rw-r--r--core/res/AndroidManifest.xml7
-rw-r--r--services/core/java/com/android/server/tv/interactive/TvInteractiveAppManagerService.java7
3 files changed, 14 insertions, 1 deletions
diff --git a/core/api/current.txt b/core/api/current.txt
index 7363c265d5db..cb2ede8ee273 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -50,6 +50,7 @@ package android {
field public static final String BIND_TELECOM_CONNECTION_SERVICE = "android.permission.BIND_TELECOM_CONNECTION_SERVICE";
field public static final String BIND_TEXT_SERVICE = "android.permission.BIND_TEXT_SERVICE";
field public static final String BIND_TV_INPUT = "android.permission.BIND_TV_INPUT";
+ field public static final String BIND_TV_INTERACTIVE_APP = "android.permission.BIND_TV_INTERACTIVE_APP";
field public static final String BIND_VISUAL_VOICEMAIL_SERVICE = "android.permission.BIND_VISUAL_VOICEMAIL_SERVICE";
field public static final String BIND_VOICE_INTERACTION = "android.permission.BIND_VOICE_INTERACTION";
field public static final String BIND_VPN_SERVICE = "android.permission.BIND_VPN_SERVICE";
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index f1068729132d..c62d964cd518 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -4205,6 +4205,13 @@
<permission android:name="android.permission.BIND_TV_INPUT"
android:protectionLevel="signature|privileged" />
+ <!-- Must be required by a {@link android.media.tv.interactive.TvInteractiveAppService}
+ to ensure that only the system can bind to it.
+ <p>Protection level: signature|privileged
+ -->
+ <permission android:name="android.permission.BIND_TV_INTERACTIVE_APP"
+ android:protectionLevel="signature|privileged" />
+
<!-- @SystemApi
Must be required by a {@link com.android.media.tv.remoteprovider.TvRemoteProvider}
to ensure that only the system can bind to it.
diff --git a/services/core/java/com/android/server/tv/interactive/TvInteractiveAppManagerService.java b/services/core/java/com/android/server/tv/interactive/TvInteractiveAppManagerService.java
index 28ca26cb6921..468612fe1041 100644
--- a/services/core/java/com/android/server/tv/interactive/TvInteractiveAppManagerService.java
+++ b/services/core/java/com/android/server/tv/interactive/TvInteractiveAppManagerService.java
@@ -134,7 +134,12 @@ public class TvInteractiveAppManagerService extends SystemService {
for (ResolveInfo ri : services) {
ServiceInfo si = ri.serviceInfo;
- // TODO: add BIND_TV_INTERACTIVE_APP permission and check it here
+ if (!android.Manifest.permission.BIND_TV_INTERACTIVE_APP.equals(si.permission)) {
+ Slog.w(TAG, "Skipping TV interactiva app service " + si.name
+ + ": it does not require the permission "
+ + android.Manifest.permission.BIND_TV_INTERACTIVE_APP);
+ continue;
+ }
ComponentName component = new ComponentName(si.packageName, si.name);
try {