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