1<?xml version="1.0" encoding="utf-8"?> 2<manifest 3 package="host.exp.exponent" 4 xmlns:android="http://schemas.android.com/apk/res/android" 5 xmlns:tools="http://schemas.android.com/tools"> 6 7 <permission 8 android:name="host.exp.exponent.permission.C2D_MESSAGE" 9 android:protectionLevel="signature"/> 10 11 <!-- These are required permissions to make the app run --> 12 <uses-permission android:name="host.exp.exponent.permission.C2D_MESSAGE" /> 13 <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 14 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 15 <uses-permission android:name="android.permission.INTERNET" /> 16 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> 17 <uses-permission android:name="android.permission.WAKE_LOCK" /> 18 19 <!-- ADD PERMISSIONS HERE --> 20 <!-- BEGIN OPTIONAL PERMISSIONS --> 21 <uses-permission android:name="android.permission.MANAGE_DOCUMENTS" /> 22 <uses-permission android:name="android.permission.READ_INTERNAL_STORAGE" /> 23 <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 24 <uses-permission android:name="android.permission.USE_FINGERPRINT" /> 25 <uses-permission android:name="android.permission.VIBRATE" /> 26 <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" /> 27 <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> 28 <uses-permission android:name="android.permission.HIGH_SAMPLING_RATE_SENSORS" /> 29 <uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" /> 30 31 <!-- These require runtime permissions on M --> 32 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 33 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 34 <uses-permission android:name="android.permission.CAMERA" /> 35 <uses-permission android:name="android.permission.READ_CONTACTS" /> 36 <uses-permission android:name="android.permission.READ_CALENDAR" /> 37 <uses-permission android:name="android.permission.WRITE_CALENDAR" /> 38 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 39 <uses-permission android:name="android.permission.RECORD_AUDIO" /> 40 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 41 <uses-permission android:name="android.permission.WRITE_SETTINGS" /> 42 <!-- END OPTIONAL PERMISSIONS --> 43 44 <!-- ADD TEST PERMISSIONS HERE --> 45 46 <uses-feature android:glEsVersion="0x00020000" android:required="false" /> 47 <uses-feature android:name="android.software.leanback" android:required="false" /> 48 <uses-feature android:name="android.hardware.touchscreen" android:required="false" /> 49 50 <application 51 android:name=".MainApplication" 52 android:allowBackup="true" 53 android:icon="@mipmap/ic_launcher" 54 android:label="${appLabel}" 55 android:largeHeap="true" 56 android:requestLegacyExternalStorage="true" 57 android:usesCleartextTraffic="true"> 58 59 <activity 60 android:name=".LauncherActivity" 61 android:exported="true" 62 android:launchMode="singleTask" 63 android:theme="@android:style/Theme.Translucent.NoTitleBar"> 64 <!-- START LAUNCHER INTENT FILTERS --> 65 <intent-filter> 66 <data android:scheme="exp"/> 67 <data android:scheme="exps"/> 68 69 <action android:name="android.intent.action.VIEW"/> 70 71 <category android:name="android.intent.category.DEFAULT"/> 72 <category android:name="android.intent.category.BROWSABLE"/> 73 </intent-filter> 74 75 <intent-filter android:autoVerify="true"> 76 <data 77 android:host="expo.io" 78 android:path="/expo-go" 79 android:scheme="https"/> 80 <data 81 android:host="expo.io" 82 android:path="/expo-go" 83 android:scheme="http"/> 84 85 <data 86 android:host="expo.dev" 87 android:path="/expo-go" 88 android:scheme="https"/> 89 <data 90 android:host="expo.dev" 91 android:path="/expo-go" 92 android:scheme="http"/> 93 94 <action android:name="android.intent.action.VIEW"/> 95 96 <category android:name="android.intent.category.DEFAULT"/> 97 <category android:name="android.intent.category.BROWSABLE"/> 98 </intent-filter> 99 100 <!-- This has to be separate from the exp[s]:// scheme filter. No idea why --> 101 <intent-filter> 102 <data 103 android:host="exp.host" 104 android:pathPrefix="/@" 105 android:scheme="http"/> 106 <data 107 android:host="exp.host" 108 android:pathPrefix="/@" 109 android:scheme="https"/> 110 <data 111 android:host="*.exp.direct" 112 android:pathPattern=".*" 113 android:scheme="http"/> 114 <data 115 android:host="*.exp.direct" 116 android:pathPattern=".*" 117 android:scheme="https"/> 118 119 <action android:name="android.intent.action.VIEW"/> 120 121 <category android:name="android.intent.category.DEFAULT"/> 122 <category android:name="android.intent.category.BROWSABLE"/> 123 </intent-filter> 124 125 <intent-filter> 126 <category android:name="android.intent.category.DEFAULT" /> 127 <category android:name="android.intent.category.BROWSABLE" /> 128 <action android:name="expo.modules.notifications.OPEN_APP_ACTION"/> 129 </intent-filter> 130 <!-- END LAUNCHER INTENT FILTERS --> 131 </activity> 132 133 <activity 134 android:name=".experience.ExperienceActivity" 135 android:exported="true" 136 android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode" 137 android:theme="@style/Theme.Exponent.Light" 138 android:windowSoftInputMode="adjustResize"> 139 </activity> 140 141 <activity 142 android:name=".MainActivity" 143 android:exported="true" 144 android:launchMode="singleTask" 145 android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode" 146 android:theme="@style/Theme.Exponent.Splash" 147 android:windowSoftInputMode="adjustResize"> 148 <!-- ADD DETACH SCHEME HERE --> 149 <!-- ADD DETACH INTENT FILTERS HERE --> 150 <!-- ADD DETACH APP SPECIFIC INTENT FILTERS --> 151 </activity> 152 153 <activity 154 android:name=".experience.HomeActivity" 155 android:exported="true" 156 android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode" 157 android:label="${appLabel}" 158 android:launchMode="singleTask" 159 android:screenOrientation="portrait" 160 android:theme="@style/Theme.Exponent.HomeActivity"> 161 <!-- START HOME INTENT FILTERS --> 162 <intent-filter> 163 <action android:name="android.intent.action.MAIN"/> 164 165 <category android:name="android.intent.category.DEFAULT"/> 166 <category android:name="android.intent.category.LAUNCHER"/> 167 </intent-filter> 168 <intent-filter> 169 <data android:scheme="expauth"/> 170 171 <action android:name="android.intent.action.VIEW"/> 172 173 <category android:name="android.intent.category.DEFAULT"/> 174 <category android:name="android.intent.category.BROWSABLE"/> 175 </intent-filter> 176 <intent-filter> 177 <data android:scheme="expo-home"/> 178 179 <action android:name="android.intent.action.VIEW"/> 180 181 <category android:name="android.intent.category.DEFAULT"/> 182 <category android:name="android.intent.category.BROWSABLE"/> 183 </intent-filter> 184 <!-- END HOME INTENT FILTERS --> 185 </activity> 186 187 <activity 188 android:name=".experience.TvActivity" 189 android:exported="true" 190 android:label="${appLabel}" 191 android:theme="@style/Theme.Exponent.Light" 192 android:screenOrientation="landscape"> 193 <intent-filter> 194 <action android:name="android.intent.action.MAIN" /> 195 <category android:name="android.intent.category.LEANBACK_LAUNCHER" /> 196 </intent-filter> 197 </activity> 198 199 200 201 <activity android:name="com.facebook.react.devsupport.DevSettingsActivity"/> 202 <!-- WHEN_PREPARING_SHELL_REMOVE_FROM_HERE --> 203 <!-- ADD DEV SETTINGS HERE --> 204 <!-- BEGIN_SDK_48 --> 205 <activity android:name="abi48_0_0.com.facebook.react.devsupport.DevSettingsActivity"/> 206 <!-- END_SDK_48 --> 207 <!-- BEGIN_SDK_47 --> 208 <activity android:name="abi47_0_0.com.facebook.react.devsupport.DevSettingsActivity"/> 209 <!-- END_SDK_47 --> 210 <!-- BEGIN_SDK_46 --> 211 <activity android:name="abi46_0_0.com.facebook.react.devsupport.DevSettingsActivity"/> 212 <!-- END_SDK_46 --> 213 <!-- WHEN_PREPARING_SHELL_REMOVE_TO_HERE --> 214 215 <activity 216 android:name="net.openid.appauth.RedirectUriReceiverActivity" 217 android:exported="true" 218 tools:node="replace"> 219 <intent-filter> 220 <action android:name="android.intent.action.VIEW"/> 221 <category android:name="android.intent.category.DEFAULT"/> 222 <category android:name="android.intent.category.BROWSABLE"/> 223 <data android:scheme="host.exp.exponent" android:path="oauthredirect"/> 224 </intent-filter> 225 </activity> 226 227 <activity 228 android:name=".experience.ErrorActivity" 229 android:theme="@style/Theme.Exponent.Dark" 230 android:screenOrientation="portrait"> 231 </activity> 232 233 <activity 234 android:name="com.facebook.FacebookActivity" 235 android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation" 236 android:label="${appLabel}" 237 android:theme="@android:style/Theme.Translucent.NoTitleBar" 238 tools:replace="android:theme" /> 239 240 <activity 241 android:name="com.facebook.CustomTabActivity" 242 android:exported="true"> 243 <intent-filter> 244 <action android:name="android.intent.action.VIEW" /> 245 <category android:name="android.intent.category.DEFAULT" /> 246 <category android:name="android.intent.category.BROWSABLE" /> 247 <!-- REPLACE WITH FACEBOOK SCHEME --> 248 </intent-filter> 249 </activity> 250 251 <activity 252 android:name="com.facebook.ads.InterstitialAdActivity" 253 android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation" 254 android:label="${appLabel}" 255 android:theme="@android:style/Theme.Translucent.NoTitleBar" /> 256 257 <service 258 android:name=".ExponentIntentService" 259 android:exported="false" /> 260 261 <!-- Analytics --> 262 <receiver 263 android:name="host.exp.exponent.referrer.InstallReferrerReceiver" 264 android:exported="true"> 265 <intent-filter> 266 <action android:name="com.android.vending.INSTALL_REFERRER" /> 267 </intent-filter> 268 </receiver> 269 270 <!-- 271 This crashes: https://code.google.com/p/analytics-issues/issues/detail?id=667 272 TODO: turn it back on when it's fixed 273 <service 274 android:name="com.google.android.gms.analytics.CampaignTrackingService" 275 android:enabled="true" 276 android:exported="false" />--> 277 278 <receiver android:name="com.google.android.gms.analytics.AnalyticsReceiver" 279 android:enabled="true"> 280 <intent-filter> 281 <action android:name="com.google.android.gms.analytics.ANALYTICS_DISPATCH" /> 282 </intent-filter> 283 </receiver> 284 285 <service android:name="com.google.android.gms.analytics.AnalyticsService" 286 android:enabled="true" 287 android:exported="false"/> 288 289 <!-- FCM --> 290 <service 291 android:name=".fcm.ExpoFcmMessagingService" 292 android:exported="true"> 293 <intent-filter> 294 <action android:name="com.google.firebase.MESSAGING_EVENT" /> 295 </intent-filter> 296 </service> 297 <service 298 android:name=".fcm.FcmRegistrationIntentService" 299 android:exported="false"> 300 </service> 301 <!-- Applied to Firebase data messages --> 302 <meta-data 303 android:name="expo.modules.notifications.default_notification_icon" 304 android:resource="@drawable/shell_notification_icon" /> 305 <meta-data 306 android:name="expo.modules.notifications.default_notification_color" 307 android:resource="@color/notification_icon_color" /> 308 309 <!-- Applied to Firebase notification messages --> 310 <meta-data 311 android:name="com.google.firebase.messaging.default_notification_icon" 312 android:resource="@drawable/shell_notification_icon" /> 313 <meta-data 314 android:name="com.google.firebase.messaging.default_notification_color" 315 android:resource="@color/notification_icon_color" /> 316 317 318 <!-- ImagePicker native module --> 319 <activity 320 android:name="com.canhub.cropper.CropImageActivity" 321 android:theme="@style/Base.Theme.AppCompat"> 322 </activity> 323 324 <!-- ADD GOOGLE MAPS CONFIG HERE --> 325 <!-- BEGIN GOOGLE MAPS CONFIG --> 326 <meta-data 327 android:name="com.google.android.geo.API_KEY" 328 android:value="${GOOGLE_MAPS_API_KEY}"/> 329 <!-- END GOOGLE MAPS CONFIG --> 330 331 <!-- ADD GOOGLE MOBILE ADS CONFIG HERE --> 332 <!-- BEGIN GOOGLE MOBILE ADS CONFIG --> 333 <meta-data 334 android:name="com.google.android.gms.ads.APPLICATION_ID" 335 android:value="ca-app-pub-3940256099942544~3347511713"/> 336 <meta-data android:name="com.google.android.gms.ads.DELAY_APP_MEASUREMENT_INIT" android:value="true"/> 337 <!-- END GOOGLE MOBILE ADS CONFIG --> 338 339 <!-- ADD BRANCH CONFIG HERE --> 340 341 <!-- ADD FACEBOOK APP ID CONFIG HERE --> 342 <!-- ADD FACEBOOK APP DISPLAY NAME CONFIG HERE --> 343 <!-- Tags below need to be in one line with no whitespace after android:value --> 344 <!-- in order for XDL to be able to replace values in them --> 345 <meta-data android:name="com.facebook.sdk.AutoLogAppEventsEnabled" android:value="false"/> 346 <meta-data android:name="com.facebook.sdk.AutoInitEnabled" android:value="false"/> 347 <meta-data android:name="com.facebook.sdk.AdvertiserIDCollectionEnabled" android:value="false"/> 348 349 </application> 350 351</manifest> 352