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:label="@string/app_name" 143 android:launchMode="singleTask" 144 android:screenOrientation="portrait" 145 android:theme="@style/Theme.Exponent.HomeActivity"> 146 <!-- START HOME INTENT FILTERS --> 147 <intent-filter> 148 <action android:name="android.intent.action.MAIN"/> 149 150 <category android:name="android.intent.category.DEFAULT"/> 151 <category android:name="android.intent.category.LAUNCHER"/> 152 </intent-filter> 153 <intent-filter> 154 <data android:scheme="expauth"/> 155 156 <action android:name="android.intent.action.VIEW"/> 157 158 <category android:name="android.intent.category.DEFAULT"/> 159 <category android:name="android.intent.category.BROWSABLE"/> 160 </intent-filter> 161 <intent-filter> 162 <data android:scheme="expo-home"/> 163 164 <action android:name="android.intent.action.VIEW"/> 165 166 <category android:name="android.intent.category.DEFAULT"/> 167 <category android:name="android.intent.category.BROWSABLE"/> 168 </intent-filter> 169 <!-- END HOME INTENT FILTERS --> 170 </activity> 171 172 <activity 173 android:name=".experience.TvActivity" 174 android:label="@string/app_name" 175 android:theme="@style/Theme.Exponent.Light" 176 android:screenOrientation="landscape"> 177 <intent-filter> 178 <action android:name="android.intent.action.MAIN" /> 179 <category android:name="android.intent.category.LEANBACK_LAUNCHER" /> 180 </intent-filter> 181 </activity> 182 183 184 185 <activity android:name="com.facebook.react.devsupport.DevSettingsActivity"/> 186 <!-- WHEN_PREPARING_SHELL_REMOVE_FROM_HERE --> 187 <!-- ADD DEV SETTINGS HERE --> 188 <!-- BEGIN_SDK_41 --> 189 <activity android:name="abi41_0_0.com.facebook.react.devsupport.DevSettingsActivity"/> 190 <!-- END_SDK_41 --> 191 <!-- BEGIN_SDK_40 --> 192 <activity android:name="abi40_0_0.com.facebook.react.devsupport.DevSettingsActivity"/> 193 <!-- END_SDK_40 --> 194 <!-- BEGIN_SDK_39 --> 195 <activity android:name="abi39_0_0.com.facebook.react.devsupport.DevSettingsActivity"/> 196 <!-- END_SDK_39 --> 197 <!-- WHEN_PREPARING_SHELL_REMOVE_TO_HERE --> 198 199 <activity 200 android:name="net.openid.appauth.RedirectUriReceiverActivity" 201 tools:node="replace"> 202 <intent-filter> 203 <action android:name="android.intent.action.VIEW"/> 204 <category android:name="android.intent.category.DEFAULT"/> 205 <category android:name="android.intent.category.BROWSABLE"/> 206 <data android:scheme="host.exp.exponent" android:path="oauthredirect"/> 207 </intent-filter> 208 </activity> 209 210 <!-- START OF STRIPE SCHEMES --> 211 <activity 212 android:exported="true" 213 android:launchMode="singleTask" 214 android:name="expo.modules.payments.stripe.RedirectUriReceiver" 215 android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"> 216 <intent-filter> 217 <action android:name="android.intent.action.VIEW" /> 218 <category android:name="android.intent.category.DEFAULT" /> 219 <category android:name="android.intent.category.BROWSABLE" /> 220 <data android:scheme="expo.modules.payments.stripe" /> 221 </intent-filter> 222 </activity> 223 <!-- Versioned Activity for Stripe --> 224 <!-- BEGIN_SDK_41 --> 225 <activity 226 android:exported="true" 227 android:launchMode="singleTask" 228 android:name="abi41_0_0.expo.modules.payments.stripe.RedirectUriReceiver" 229 android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"> 230 <intent-filter> 231 <action android:name="android.intent.action.VIEW" /> 232 <category android:name="android.intent.category.DEFAULT" /> 233 <category android:name="android.intent.category.BROWSABLE" /> 234 <data android:scheme="abi41_0_0.expo.modules.payments.stripe" /> 235 </intent-filter> 236 </activity> 237 <!-- END_SDK_41 --> 238 <!-- BEGIN_SDK_40 --> 239 <activity 240 android:exported="true" 241 android:launchMode="singleTask" 242 android:name="abi40_0_0.expo.modules.payments.stripe.RedirectUriReceiver" 243 android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"> 244 <intent-filter> 245 <action android:name="android.intent.action.VIEW" /> 246 <category android:name="android.intent.category.DEFAULT" /> 247 <category android:name="android.intent.category.BROWSABLE" /> 248 <data android:scheme="abi40_0_0.expo.modules.payments.stripe" /> 249 </intent-filter> 250 </activity> 251 <!-- END_SDK_40 --> 252 <!-- BEGIN_SDK_39 --> 253 <activity 254 android:exported="true" 255 android:launchMode="singleTask" 256 android:name="abi39_0_0.expo.modules.payments.stripe.RedirectUriReceiver" 257 android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"> 258 <intent-filter> 259 <action android:name="android.intent.action.VIEW" /> 260 <category android:name="android.intent.category.DEFAULT" /> 261 <category android:name="android.intent.category.BROWSABLE" /> 262 <data android:scheme="abi39_0_0.expo.modules.payments.stripe" /> 263 </intent-filter> 264 </activity> 265 <!-- END_SDK_39 --> 266 <!-- END OF STRIPE SCHEMES --> 267 268 <activity 269 android:name=".experience.ErrorActivity" 270 android:theme="@style/Theme.Exponent.Dark" 271 android:screenOrientation="portrait"> 272 </activity> 273 274 <activity 275 android:name="com.facebook.FacebookActivity" 276 android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation" 277 android:label="@string/app_name" 278 android:theme="@android:style/Theme.Translucent.NoTitleBar" 279 tools:replace="android:theme" /> 280 281 <activity 282 android:name="com.facebook.CustomTabActivity" 283 android:exported="true"> 284 <intent-filter> 285 <action android:name="android.intent.action.VIEW" /> 286 <category android:name="android.intent.category.DEFAULT" /> 287 <category android:name="android.intent.category.BROWSABLE" /> 288 <!-- REPLACE WITH FACEBOOK SCHEME --> 289 </intent-filter> 290 </activity> 291 292 <activity 293 android:name="com.facebook.ads.InterstitialAdActivity" 294 android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation" 295 android:label="@string/app_name" 296 android:theme="@android:style/Theme.Translucent.NoTitleBar" /> 297 298 <service 299 android:name=".ExponentIntentService" 300 android:exported="false" /> 301 302 <!-- Analytics --> 303 <receiver 304 android:name="host.exp.exponent.referrer.InstallReferrerReceiver" 305 android:exported="true"> 306 <intent-filter> 307 <action android:name="com.android.vending.INSTALL_REFERRER" /> 308 </intent-filter> 309 </receiver> 310 311 <!-- 312 This crashes: https://code.google.com/p/analytics-issues/issues/detail?id=667 313 TODO: turn it back on when it's fixed 314 <service 315 android:name="com.google.android.gms.analytics.CampaignTrackingService" 316 android:enabled="true" 317 android:exported="false" />--> 318 319 <receiver android:name="com.google.android.gms.analytics.AnalyticsReceiver" 320 android:enabled="true"> 321 <intent-filter> 322 <action android:name="com.google.android.gms.analytics.ANALYTICS_DISPATCH" /> 323 </intent-filter> 324 </receiver> 325 326 <service android:name="com.google.android.gms.analytics.AnalyticsService" 327 android:enabled="true" 328 android:exported="false"/> 329 330 <!-- FCM --> 331 <service 332 android:name=".fcm.ExpoFcmMessagingService"> 333 <intent-filter> 334 <action android:name="com.google.firebase.MESSAGING_EVENT" /> 335 </intent-filter> 336 </service> 337 <service 338 android:name=".fcm.FcmRegistrationIntentService" 339 android:exported="false"> 340 </service> 341 <!-- Applied to Firebase data messages --> 342 <meta-data 343 android:name="expo.modules.notifications.default_notification_icon" 344 android:resource="@drawable/shell_notification_icon" /> 345 <meta-data 346 android:name="expo.modules.notifications.default_notification_color" 347 android:resource="@color/notification_icon_color" /> 348 349 <!-- Applied to Firebase notification messages --> 350 <meta-data 351 android:name="com.google.firebase.messaging.default_notification_icon" 352 android:resource="@drawable/shell_notification_icon" /> 353 <meta-data 354 android:name="com.google.firebase.messaging.default_notification_color" 355 android:resource="@color/notification_icon_color" /> 356 357 358 <!-- ImagePicker native module --> 359 <activity 360 android:name="com.theartofdev.edmodo.cropper.CropImageActivity" 361 android:theme="@style/Base.Theme.AppCompat"> 362 </activity> 363 364 <!-- ADD GOOGLE MAPS CONFIG HERE --> 365 <!-- BEGIN GOOGLE MAPS CONFIG --> 366 <meta-data 367 android:name="com.google.android.geo.API_KEY" 368 android:value="${GOOGLE_MAPS_API_KEY}"/> 369 <!-- END GOOGLE MAPS CONFIG --> 370 371 <!-- ADD GOOGLE MOBILE ADS CONFIG HERE --> 372 <!-- BEGIN GOOGLE MOBILE ADS CONFIG --> 373 <meta-data 374 android:name="com.google.android.gms.ads.APPLICATION_ID" 375 android:value="ca-app-pub-3940256099942544~3347511713"/> 376 <meta-data android:name="com.google.android.gms.ads.DELAY_APP_MEASUREMENT_INIT" android:value="true"/> 377 <!-- END GOOGLE MOBILE ADS CONFIG --> 378 379 <!-- ADD BRANCH CONFIG HERE --> 380 381 <!-- ADD FACEBOOK APP ID CONFIG HERE --> 382 <!-- ADD FACEBOOK APP DISPLAY NAME CONFIG HERE --> 383 <!-- Tags below need to be in one line with no whitespace after android:value --> 384 <!-- in order for XDL to be able to replace values in them --> 385 <meta-data android:name="com.facebook.sdk.AutoLogAppEventsEnabled" android:value="false"/> 386 <meta-data android:name="com.facebook.sdk.AutoInitEnabled" android:value="false"/> 387 <meta-data android:name="com.facebook.sdk.AdvertiserIDCollectionEnabled" android:value="false"/> 388 389 <!-- ADD HERE STRIPE SCHEME META DATA --> 390 </application> 391 392</manifest> 393