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