Home | History | Annotate | Download | only in TV
      1 <?xml version="1.0" encoding="utf-8"?>
      2 <!--
      3   ~ Copyright (C) 2015 The Android Open Source Project
      4   ~
      5   ~ Licensed under the Apache License, Version 2.0 (the "License");
      6   ~ you may not use this file except in compliance with the License.
      7   ~ You may obtain a copy of the License at
      8   ~
      9   ~      http://www.apache.org/licenses/LICENSE-2.0
     10   ~
     11   ~ Unless required by applicable law or agreed to in writing, software
     12   ~ distributed under the License is distributed on an "AS IS" BASIS,
     13   ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14   ~ See the License for the specific language governing permissions and
     15   ~ limitations under the License.
     16   -->
     17 
     18 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     19     package="com.android.tv" xmlns:tools="http://schemas.android.com/tools">
     20 
     21     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
     22     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
     23     <uses-permission android:name="android.permission.CHANGE_HDMI_CEC_ACTIVE_SOURCE" />
     24     <uses-permission android:name="android.permission.GLOBAL_SEARCH" tools:ignore="ProtectedPermissions"/>
     25     <uses-permission android:name="android.permission.INTERNET" />
     26     <uses-permission android:name="android.permission.MODIFY_PARENTAL_CONTROLS" />
     27     <uses-permission android:name="android.permission.READ_CONTENT_RATING_SYSTEMS" />
     28     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
     29     <uses-permission android:name="android.permission.READ_TV_LISTINGS" />
     30     <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
     31     <uses-permission android:name="com.android.providers.tv.permission.READ_EPG_DATA" />
     32     <uses-permission android:name="com.android.providers.tv.permission.WRITE_EPG_DATA" />
     33     <uses-permission android:name="com.android.providers.tv.permission.ACCESS_ALL_EPG_DATA" />
     34     <uses-permission android:name="com.android.providers.tv.permission.ACCESS_WATCHED_PROGRAMS" />
     35 
     36     <!-- Permissions/feature for USB tuner -->
     37     <uses-permission android:name="android.permission.DVB_DEVICE" />
     38     <uses-feature android:name="android.hardware.usb.host" android:required="false" />
     39 
     40     <!-- Limit only for Android TV -->
     41     <uses-feature android:name="android.software.leanback" android:required="true" />
     42     <uses-feature android:name="android.software.live_tv" android:required="true" />
     43     <uses-feature android:name="android.hardware.touchscreen" android:required="false"/>
     44 
     45 
     46     <!-- Receives input events from the TV app. -->
     47     <permission android:name="com.android.tv.permission.RECEIVE_INPUT_EVENT"
     48         android:protectionLevel="signatureOrSystem"
     49         android:label="@string/permlab_receiveInputEvent"
     50         android:description="@string/permdesc_receiveInputEvent"
     51         tools:ignore="SignatureOrSystemPermissions"/>
     52     <!-- Customizes Live TV with customization packages. -->
     53     <permission android:name="com.android.tv.permission.CUSTOMIZE_TV_APP"
     54         android:protectionLevel="signatureOrSystem"
     55         android:label="@string/permlab_customizeTvApp"
     56         android:description="@string/permdesc_customizeTvApp"
     57         tools:ignore="SignatureOrSystemPermissions"/>
     58 
     59     <uses-sdk android:targetSdkVersion="26" android:minSdkVersion="23"/>
     60 
     61     <application android:label="@string/app_name"
     62         android:name=".TvApplication"
     63         android:allowBackup="true"
     64         android:icon="@drawable/ic_launcher"
     65         android:banner="@drawable/banner"
     66         android:supportsRtl="true"
     67         android:theme="@style/Theme.TV">
     68         <activity android:name="com.android.tv.TvActivity">
     69             <intent-filter>
     70                 <action android:name="android.intent.action.MAIN" />
     71                 <category android:name="android.intent.category.LAUNCHER" />
     72                 <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
     73             </intent-filter>
     74         </activity>
     75 
     76         <activity android:name="com.android.tv.MainActivity"
     77             android:configChanges="keyboard|keyboardHidden|screenSize|smallestScreenSize|screenLayout|orientation"
     78             android:screenOrientation="landscape"
     79             android:launchMode="singleTask"
     80             android:resizeableActivity="true"
     81             android:supportsPictureInPicture="true"
     82             android:theme="@style/Theme.TV.MainActivity">
     83             <intent-filter>
     84                 <action android:name="android.intent.action.VIEW" />
     85                 <category android:name="android.intent.category.DEFAULT" />
     86                 <data android:mimeType="vnd.android.cursor.item/channel" />
     87                 <data android:mimeType="vnd.android.cursor.dir/channel" />
     88                 <data android:mimeType="vnd.android.cursor.item/program" />
     89                 <data android:mimeType="vnd.android.cursor.dir/program" />
     90             </intent-filter>
     91             <intent-filter>
     92                 <action android:name="android.media.tv.action.SETUP_INPUTS" />
     93                 <category android:name="android.intent.category.DEFAULT" />
     94             </intent-filter>
     95             <intent-filter>
     96                 <action android:name="android.intent.action.SEARCH" />
     97             </intent-filter>
     98             <meta-data android:name="supports_leanback" android:value="true" />
     99             <meta-data android:name="android.app.searchable"
    100                 android:resource="@xml/searchable" />
    101         </activity>
    102 
    103         <activity android:name=".LauncherActivity"
    104             android:configChanges="keyboard|keyboardHidden"
    105             android:theme="@android:style/Theme.Translucent.NoTitleBar" />
    106 
    107         <activity android:name=".SetupPassthroughActivity"
    108             android:configChanges="keyboard|keyboardHidden"
    109             android:theme="@android:style/Theme.Translucent.NoTitleBar">
    110             <intent-filter>
    111                 <action android:name="com.android.tv.action.LAUNCH_INPUT_SETUP" />
    112                 <category android:name="android.intent.category.DEFAULT" />
    113             </intent-filter>
    114         </activity>
    115 
    116         <activity android:name=".SelectInputActivity"
    117             android:configChanges="keyboard|keyboardHidden"
    118             android:launchMode="singleTask"
    119             android:theme="@style/Theme.SelectInputActivity" />
    120 
    121         <activity android:name=".onboarding.OnboardingActivity"
    122             android:configChanges="keyboard|keyboardHidden"
    123             android:launchMode="singleTop"
    124             android:theme="@style/Theme.Setup.GuidedStep" />
    125 
    126         <activity android:name=".dvr.ui.browse.DvrBrowseActivity"
    127             android:configChanges="keyboard|keyboardHidden"
    128             android:launchMode="singleTask"
    129             android:theme="@style/Theme.Leanback.Browse">
    130             <intent-filter>
    131                 <action android:name="android.media.tv.action.VIEW_RECORDING_SCHEDULES" />
    132                 <category android:name="android.intent.category.DEFAULT" />
    133             </intent-filter>
    134             <intent-filter>
    135                 <action android:name="android.intent.action.VIEW" />
    136                 <category android:name="android.intent.category.DEFAULT" />
    137                 <data android:mimeType="vnd.android.cursor.dir/recorded_program" />
    138             </intent-filter>
    139         </activity>
    140 
    141         <activity android:name=".dvr.ui.playback.DvrPlaybackActivity"
    142             android:configChanges="keyboard|keyboardHidden|screenSize|smallestScreenSize|screenLayout|orientation"
    143             android:launchMode="singleTask"
    144             android:theme="@style/Theme.Leanback">
    145             <intent-filter>
    146                 <action android:name="android.intent.action.VIEW" />
    147                 <category android:name="android.intent.category.DEFAULT" />
    148                 <data android:mimeType="vnd.android.cursor.item/recorded_program" />
    149             </intent-filter>
    150         </activity>
    151 
    152         <activity android:name=".dvr.ui.browse.DvrDetailsActivity"
    153             android:configChanges="keyboard|keyboardHidden"
    154             android:theme="@style/Theme.TV.Dvr.Browse.Details" />
    155 
    156         <activity android:name=".dvr.ui.DvrSeriesSettingsActivity"
    157             android:configChanges="keyboard|keyboardHidden"
    158             android:theme="@style/Theme.TV.Dvr.Series.Settings.GuidedStep" />
    159 
    160         <activity android:name=".dvr.ui.DvrSeriesDeletionActivity"
    161             android:configChanges="keyboard|keyboardHidden"
    162             android:theme="@style/Theme.TV.Dvr.Series.Deletion.GuidedStep" />
    163 
    164         <activity android:name=".dvr.ui.DvrSeriesScheduledDialogActivity"
    165             android:theme="@style/Theme.TV.dialog.HalfSizedDialog"/>
    166 
    167         <activity android:name=".dvr.ui.list.DvrSchedulesActivity"
    168             android:configChanges="keyboard|keyboardHidden"
    169             android:theme="@style/Theme.Leanback.Details" />
    170 
    171         <provider android:name="com.android.tv.search.LocalSearchProvider"
    172             android:authorities="com.android.tv.search"
    173             android:exported="true"
    174             android:enabled="true" tools:ignore="ExportedContentProvider">
    175             <meta-data android:name="SupportedSwitchActionType" android:value="CHANNEL|TVINPUT" />
    176         </provider>
    177 
    178         <service android:name="com.android.tv.recommendation.NotificationService"
    179              android:exported="false" />
    180         <service android:name=".recommendation.ChannelPreviewUpdater$ChannelPreviewUpdateService"
    181              android:permission="android.permission.BIND_JOB_SERVICE" />
    182 
    183         <receiver android:name="com.android.tv.receiver.BootCompletedReceiver">
    184             <intent-filter>
    185                 <action android:name="android.intent.action.BOOT_COMPLETED" />
    186             </intent-filter>
    187         </receiver>
    188         <receiver android:name="com.android.tv.receiver.PackageIntentsReceiver">
    189             <intent-filter>
    190                 <action android:name="android.intent.action.PACKAGE_ADDED" />
    191                 <!-- PACKAGE_CHANGED for package enabled/disabled notification -->
    192                 <action android:name="android.intent.action.PACKAGE_CHANGED" />
    193                 <action android:name="android.intent.action.PACKAGE_REMOVED" />
    194                 <data android:scheme="package"/>
    195             </intent-filter>
    196             <intent-filter>
    197                 <action android:name="android.intent.action.BOOT_COMPLETED" />
    198             </intent-filter>
    199         </receiver>
    200         <receiver android:name="com.android.tv.receiver.GlobalKeyReceiver">
    201             <intent-filter>
    202                 <action android:name="android.intent.action.GLOBAL_BUTTON" />
    203             </intent-filter>
    204 
    205             <!-- Not directly related to GlobalKeyReceiver but needed to be able to provide our
    206                 content rating definitions to the system service. -->
    207             <intent-filter>
    208                 <action android:name="android.media.tv.action.QUERY_CONTENT_RATING_SYSTEMS" />
    209             </intent-filter>
    210             <meta-data android:name="android.media.tv.metadata.CONTENT_RATING_SYSTEMS"
    211                     android:resource="@xml/tv_content_rating_systems" />
    212         </receiver>
    213 
    214         <!-- USB tuner components definition -->
    215         <activity android:name="com.android.tv.tuner.setup.TunerSetupActivity"
    216             android:configChanges="keyboard|keyboardHidden"
    217             android:label="@string/bt_app_name"
    218             android:launchMode="singleInstance"
    219             android:process="com.android.tv.tuner"
    220             android:theme="@style/Theme.Setup.GuidedStep" >
    221             <intent-filter>
    222                 <action android:name="android.intent.action.MAIN" />
    223             </intent-filter>
    224         </activity>
    225 
    226         <service android:name=".tuner.tvinput.TunerTvInputService"
    227             android:enabled="false"
    228             android:process="com.android.tv.tuner"
    229             android:label="@string/bt_app_name"
    230             android:permission="android.permission.BIND_TV_INPUT" >
    231             <intent-filter>
    232                 <action android:name="android.media.tv.TvInputService" />
    233             </intent-filter>
    234             <meta-data android:name="android.media.tv.input"
    235                 android:resource="@xml/ut_tvinputservice" />
    236         </service>
    237         <service android:name=".tuner.exoplayer.ffmpeg.FfmpegDecoderService"
    238             android:isolatedProcess="true"
    239             android:process="com.android.tv.ffmpeg" >
    240             <intent-filter>
    241               <action android:name=".tuner.exoplayer.ffmpeg.IFfmpegDecoder" />
    242             </intent-filter>
    243         </service>
    244         <provider android:name=".tuner.TunerPreferenceProvider"
    245             android:authorities="com.android.tv.tuner.preferences"
    246             android:process="com.android.tv.tuner"
    247             android:exported="false" />
    248         <!-- System initial setup component definition -->
    249         <activity android:name=".setup.SystemSetupActivity"
    250                   android:configChanges="keyboard|keyboardHidden"
    251                   android:label="@string/bt_app_name"
    252                   android:launchMode="singleInstance"
    253                   android:theme="@style/Theme.Setup.GuidedStep" >
    254             <intent-filter>
    255                 <action android:name="com.android.tv.action.LAUNCH_SYSTEM_SETUP" />
    256                 <category android:name="android.intent.category.DEFAULT" />
    257             </intent-filter>
    258         </activity>
    259         <!-- TunerInputController should be the same process with MainActivity to check status of MainActivity -->
    260         <receiver android:name=".tuner.TunerInputController$IntentReceiver"
    261             android:exported="false">
    262             <intent-filter>
    263                 <action android:name="android.intent.action.BOOT_COMPLETED" />
    264                 <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
    265                 <action android:name="android.hardware.usb.action.USB_DEVICE_DETACHED" />
    266                 <action android:name="com.android.tv.action.APPLICATION_FIRST_LAUNCHED" />
    267                 <action android:name="com.android.tv.action.NETWORK_TUNER_ATTACHED" />
    268                 <action android:name="com.android.tv.action.NETWORK_TUNER_DETACHED" />
    269             </intent-filter>
    270         </receiver>
    271 
    272         <!-- DVR -->
    273         <service android:name=".dvr.recorder.DvrRecordingService" android:label="@string/dvr_service_name" />
    274         <receiver android:name=".dvr.recorder.DvrStartRecordingReceiver" />
    275 
    276         <service android:name=".tuner.tvinput.TunerStorageCleanUpService"
    277             android:permission="android.permission.BIND_JOB_SERVICE"
    278             android:process="com.android.tv.tuner"
    279             android:exported="true" />
    280 
    281         <service android:name=".data.epg.EpgFetcher$EpgFetchService"
    282             android:permission="android.permission.BIND_JOB_SERVICE" />
    283 
    284 
    285     </application>
    286 </manifest>
    287