diff options
| -rw-r--r-- | core/api/current.txt | 1 | ||||
| -rw-r--r-- | core/res/AndroidManifest.xml | 7 | ||||
| -rw-r--r-- | services/core/java/com/android/server/tv/interactive/TvInteractiveAppManagerService.java | 7 |
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 { |