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