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<manifest xmlns:android="http://schemas.android.com/apk/res/android" 18 package="com.android.tv" > 19 20 <uses-sdk 21 android:minSdkVersion="23" 22 android:targetSdkVersion="26" /> 23 24 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 25 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 26 <uses-permission android:name="android.permission.CHANGE_HDMI_CEC_ACTIVE_SOURCE" /> 27 <uses-permission android:name="android.permission.GLOBAL_SEARCH" /> 28 <uses-permission android:name="android.permission.HDMI_CEC" /> 29 <uses-permission android:name="android.permission.INTERNET" /> 30 <uses-permission android:name="android.permission.MODIFY_PARENTAL_CONTROLS" /> 31 <uses-permission android:name="android.permission.READ_CONTENT_RATING_SYSTEMS" /> 32 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 33 <uses-permission android:name="android.permission.READ_TV_LISTINGS" /> 34 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 35 <uses-permission android:name="com.android.providers.tv.permission.READ_EPG_DATA" /> 36 <uses-permission android:name="com.android.providers.tv.permission.WRITE_EPG_DATA" /> 37 <uses-permission android:name="com.android.providers.tv.permission.ACCESS_ALL_EPG_DATA" /> 38 <uses-permission android:name="com.android.providers.tv.permission.ACCESS_WATCHED_PROGRAMS" /> 39 <!-- Permissions/feature for USB tuner --> 40 <uses-permission android:name="android.permission.DVB_DEVICE" /> 41 42 <uses-feature 43 android:name="android.hardware.usb.host" 44 android:required="false" /> 45 46 <!-- Limit only for Android TV --> 47 <uses-feature 48 android:name="android.software.leanback" 49 android:required="true" /> 50 <uses-feature 51 android:name="android.software.live_tv" 52 android:required="true" /> 53 <uses-feature 54 android:name="android.hardware.touchscreen" 55 android:required="false" /> 56 57 <!-- Receives input events from the TV app. --> 58 <permission 59 android:name="com.android.tv.permission.RECEIVE_INPUT_EVENT" 60 android:description="@string/permdesc_receiveInputEvent" 61 android:label="@string/permlab_receiveInputEvent" 62 android:protectionLevel="signatureOrSystem" /> 63 <!-- Customizes Live TV with customization packages. --> 64 <permission 65 android:name="com.android.tv.permission.CUSTOMIZE_TV_APP" 66 android:description="@string/permdesc_customizeTvApp" 67 android:label="@string/permlab_customizeTvApp" 68 android:protectionLevel="signatureOrSystem" /> 69 70 <application 71 android:name="com.android.tv.app.LiveTvApplication" 72 android:allowBackup="true" 73 android:banner="@drawable/banner" 74 android:icon="@drawable/ic_live_channels" 75 android:label="@string/app_name" 76 android:supportsRtl="true" 77 android:theme="@style/Theme.TV" > 78 <activity 79 android:name="com.android.tv.tuner.setup.LiveTvTunerSetupActivity" 80 android:configChanges="keyboard|keyboardHidden" 81 android:label="@string/bt_app_name" 82 android:launchMode="singleInstance" 83 android:process="com.android.tv.tuner" 84 android:theme="@style/Theme.Setup.GuidedStep" > 85 <intent-filter> 86 <action android:name="android.intent.action.MAIN" /> 87 </intent-filter> 88 </activity> 89 90 <!-- providers are listed here to keep them separate from the internal versions --> 91 <provider 92 android:name="com.android.tv.search.LocalSearchProvider" 93 android:authorities="com.android.tv.search" 94 android:enabled="true" 95 android:exported="true" > 96 <meta-data 97 android:name="SupportedSwitchActionType" 98 android:value="CHANNEL|TVINPUT" /> 99 </provider> 100 <provider 101 android:name="com.android.tv.common.CommonPreferenceProvider" 102 android:authorities="com.android.tv.common.preferences" 103 android:exported="false" 104 android:process="com.android.tv.common" /> 105 106 <activity android:name="com.android.tv.TvActivity" > 107 <intent-filter> 108 <action android:name="android.intent.action.MAIN" /> 109 110 <category android:name="android.intent.category.LAUNCHER" /> 111 <category android:name="android.intent.category.LEANBACK_LAUNCHER" /> 112 </intent-filter> 113 </activity> 114 <activity 115 android:name="com.android.tv.MainActivity" 116 android:configChanges="keyboard|keyboardHidden|screenSize|smallestScreenSize|screenLayout|orientation" 117 android:launchMode="singleTask" 118 android:resizeableActivity="true" 119 android:screenOrientation="landscape" 120 android:supportsPictureInPicture="true" 121 android:theme="@style/Theme.TV.MainActivity" > 122 <intent-filter> 123 <action android:name="android.intent.action.VIEW" /> 124 125 <category android:name="android.intent.category.DEFAULT" /> 126 127 <data android:mimeType="vnd.android.cursor.item/channel" /> 128 <data android:mimeType="vnd.android.cursor.dir/channel" /> 129 <data android:mimeType="vnd.android.cursor.item/program" /> 130 <data android:mimeType="vnd.android.cursor.dir/program" /> 131 </intent-filter> 132 <intent-filter> 133 <action android:name="android.media.tv.action.SETUP_INPUTS" /> 134 135 <category android:name="android.intent.category.DEFAULT" /> 136 </intent-filter> 137 <intent-filter> 138 <action android:name="android.intent.action.SEARCH" /> 139 </intent-filter> 140 141 <meta-data 142 android:name="supports_leanback" 143 android:value="true" /> 144 <meta-data 145 android:name="android.app.searchable" 146 android:resource="@xml/searchable" /> 147 </activity> 148 <activity 149 android:name="com.android.tv.LauncherActivity" 150 android:configChanges="keyboard|keyboardHidden" 151 android:theme="@android:style/Theme.Translucent.NoTitleBar" /> 152 <activity 153 android:name="com.android.tv.SetupPassthroughActivity" 154 android:configChanges="keyboard|keyboardHidden" 155 android:exported="true" 156 android:theme="@android:style/Theme.Translucent.NoTitleBar" > 157 <intent-filter> 158 <action android:name="com.android.tv.action.LAUNCH_INPUT_SETUP" /> 159 160 <category android:name="android.intent.category.DEFAULT" /> 161 </intent-filter> 162 </activity> 163 <activity 164 android:name="com.android.tv.SelectInputActivity" 165 android:configChanges="keyboard|keyboardHidden" 166 android:launchMode="singleTask" 167 android:theme="@style/Theme.SelectInputActivity" /> 168 <activity 169 android:name="com.android.tv.onboarding.OnboardingActivity" 170 android:configChanges="keyboard|keyboardHidden" 171 android:launchMode="singleTop" 172 android:theme="@style/Theme.Setup.GuidedStep" /> 173 <activity 174 android:name="com.android.tv.dvr.ui.browse.DvrBrowseActivity" 175 android:configChanges="keyboard|keyboardHidden" 176 android:launchMode="singleTask" 177 android:theme="@style/Theme.Leanback.Browse" > 178 <intent-filter> 179 <action android:name="android.media.tv.action.VIEW_RECORDING_SCHEDULES" /> 180 181 <category android:name="android.intent.category.DEFAULT" /> 182 </intent-filter> 183 <intent-filter> 184 <action android:name="android.intent.action.VIEW" /> 185 186 <category android:name="android.intent.category.DEFAULT" /> 187 188 <data android:mimeType="vnd.android.cursor.dir/recorded_program" /> 189 </intent-filter> 190 </activity> 191 <activity 192 android:name="com.android.tv.dvr.ui.playback.DvrPlaybackActivity" 193 android:configChanges="keyboard|keyboardHidden|screenSize|smallestScreenSize|screenLayout|orientation" 194 android:launchMode="singleTask" 195 android:theme="@style/Theme.Leanback" > 196 <intent-filter> 197 <action android:name="android.intent.action.VIEW" /> 198 199 <category android:name="android.intent.category.DEFAULT" /> 200 201 <data android:mimeType="vnd.android.cursor.item/recorded_program" /> 202 </intent-filter> 203 </activity> 204 <activity 205 android:name="com.android.tv.dvr.ui.browse.DvrDetailsActivity" 206 android:configChanges="keyboard|keyboardHidden" 207 android:theme="@style/Theme.TV.Dvr.Browse.Details" /> 208 <activity 209 android:name="com.android.tv.dvr.ui.DvrSeriesSettingsActivity" 210 android:configChanges="keyboard|keyboardHidden" 211 android:theme="@style/Theme.TV.Dvr.Series.Settings.GuidedStep" /> 212 <activity 213 android:name="com.android.tv.dvr.ui.DvrSeriesDeletionActivity" 214 android:configChanges="keyboard|keyboardHidden" 215 android:theme="@style/Theme.TV.Dvr.Series.Deletion.GuidedStep" /> 216 <activity 217 android:name="com.android.tv.dvr.ui.DvrSeriesScheduledDialogActivity" 218 android:theme="@style/Theme.TV.dialog.HalfSizedDialog" /> 219 <activity 220 android:name="com.android.tv.dvr.ui.list.DvrSchedulesActivity" 221 android:configChanges="keyboard|keyboardHidden" 222 android:theme="@style/Theme.Leanback.Details" /> 223 <activity 224 android:name="com.android.tv.dvr.ui.list.DvrHistoryActivity" 225 android:configChanges="keyboard|keyboardHidden" 226 android:exported="false" 227 android:theme="@style/Theme.Leanback.Details" /> 228 229 <service 230 android:name="com.android.tv.recommendation.NotificationService" 231 android:exported="false" /> 232 <service 233 android:name="com.android.tv.recommendation.ChannelPreviewUpdater$ChannelPreviewUpdateService" 234 android:permission="android.permission.BIND_JOB_SERVICE" /> 235 236 <receiver android:name="com.android.tv.receiver.BootCompletedReceiver" > 237 <intent-filter> 238 <action android:name="android.intent.action.BOOT_COMPLETED" /> 239 </intent-filter> 240 </receiver> 241 <receiver android:name="com.android.tv.receiver.PackageIntentsReceiver" > 242 <intent-filter> 243 <action android:name="android.intent.action.PACKAGE_ADDED" /> 244 <!-- PACKAGE_CHANGED for package enabled/disabled notification --> 245 <action android:name="android.intent.action.PACKAGE_CHANGED" /> 246 <action android:name="android.intent.action.PACKAGE_REMOVED" /> 247 248 <data android:scheme="package" /> 249 </intent-filter> 250 <intent-filter> 251 <action android:name="android.intent.action.BOOT_COMPLETED" /> 252 </intent-filter> 253 </receiver> <!-- System initial setup component definition --> 254 <activity 255 android:name="com.android.tv.setup.SystemSetupActivity" 256 android:configChanges="keyboard|keyboardHidden" 257 android:exported="true" 258 android:label="@string/bt_app_name" 259 android:launchMode="singleInstance" 260 android:theme="@style/Theme.Setup.GuidedStep" > 261 <intent-filter> 262 <action android:name="com.android.tv.action.LAUNCH_SYSTEM_SETUP" /> 263 264 <category android:name="android.intent.category.DEFAULT" /> 265 </intent-filter> 266 </activity> 267 <!-- 268 TunerInputController should be the same process with MainActivity to check status 269 of MainActivity 270 --> 271 <receiver 272 android:name="com.android.tv.tuner.TunerInputController$IntentReceiver" 273 android:exported="false" > 274 <intent-filter> 275 <action android:name="android.intent.action.BOOT_COMPLETED" /> 276 <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" /> 277 <action android:name="android.hardware.usb.action.USB_DEVICE_DETACHED" /> 278 <action android:name="com.android.tv.action.APPLICATION_FIRST_LAUNCHED" /> 279 <action android:name="com.android.tv.action.NETWORK_TUNER_ATTACHED" /> 280 <action android:name="com.android.tv.action.NETWORK_TUNER_DETACHED" /> 281 </intent-filter> 282 </receiver> <!-- DVR --> 283 <service 284 android:name="com.android.tv.dvr.recorder.DvrRecordingService" 285 android:label="@string/dvr_service_name" /> 286 287 <receiver android:name="com.android.tv.dvr.recorder.DvrStartRecordingReceiver" /> 288 289 <service 290 android:name="com.android.tv.tuner.tvinput.TunerStorageCleanUpService" 291 android:exported="false" 292 android:permission="android.permission.BIND_JOB_SERVICE" 293 android:process="com.android.tv.tuner" /> 294 <service 295 android:name="com.android.tv.data.epg.EpgFetchService" 296 android:permission="android.permission.BIND_JOB_SERVICE" /> 297 298 <receiver 299 android:name="com.android.tv.livetv.receiver.GlobalKeyReceiver" 300 android:exported="true" > 301 <intent-filter> 302 <action android:name="android.intent.action.GLOBAL_BUTTON" /> 303 </intent-filter> 304 305 <!-- 306 Not directly related to GlobalKeyReceiver but needed to be able to provide our 307 content rating definitions to the system service. 308 --> 309 <intent-filter> 310 <action android:name="android.media.tv.action.QUERY_CONTENT_RATING_SYSTEMS" /> 311 </intent-filter> 312 313 <meta-data 314 android:name="android.media.tv.metadata.CONTENT_RATING_SYSTEMS" 315 android:resource="@xml/tv_content_rating_systems" /> 316 </receiver> 317 318 <service 319 android:name="com.android.tv.tuner.livetuner.LiveTvTunerTvInputService" 320 android:enabled="false" 321 android:label="@string/bt_app_name" 322 android:permission="android.permission.BIND_TV_INPUT" 323 android:process="com.android.tv.tuner" > 324 <intent-filter> 325 <action android:name="android.media.tv.TvInputService" /> 326 </intent-filter> 327 328 <meta-data 329 android:name="android.media.tv.input" 330 android:resource="@xml/ut_tvinputservice" /> 331 </service> 332 </application> 333 334</manifest>