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_46 --> 205 <activity android:name="abi46_0_0.com.facebook.react.devsupport.DevSettingsActivity"/> 206 <!-- END_SDK_46 --> 207 <!-- BEGIN_SDK_45 --> 208 <activity android:name="abi45_0_0.com.facebook.react.devsupport.DevSettingsActivity"/> 209 <!-- END_SDK_45 --> 210 <!-- WHEN_PREPARING_SHELL_REMOVE_TO_HERE --> 211 212 <activity 213 android:name="net.openid.appauth.RedirectUriReceiverActivity" 214 android:exported="true" 215 tools:node="replace"> 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="host.exp.exponent" android:path="oauthredirect"/> 221 </intent-filter> 222 </activity> 223 224 <activity 225 android:name=".experience.ErrorActivity" 226 android:theme="@style/Theme.Exponent.Dark" 227 android:screenOrientation="portrait"> 228 </activity> 229 230 <activity 231 android:name="com.facebook.FacebookActivity" 232 android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation" 233 android:label="${appLabel}" 234 android:theme="@android:style/Theme.Translucent.NoTitleBar" 235 tools:replace="android:theme" /> 236 237 <activity 238 android:name="com.facebook.CustomTabActivity" 239 android:exported="true"> 240 <intent-filter> 241 <action android:name="android.intent.action.VIEW" /> 242 <category android:name="android.intent.category.DEFAULT" /> 243 <category android:name="android.intent.category.BROWSABLE" /> 244 <!-- REPLACE WITH FACEBOOK SCHEME --> 245 </intent-filter> 246 </activity> 247 248 <activity 249 android:name="com.facebook.ads.InterstitialAdActivity" 250 android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation" 251 android:label="${appLabel}" 252 android:theme="@android:style/Theme.Translucent.NoTitleBar" /> 253 254 <service 255 android:name=".ExponentIntentService" 256 android:exported="false" /> 257 258 <!-- Analytics --> 259 <receiver 260 android:name="host.exp.exponent.referrer.InstallReferrerReceiver" 261 android:exported="true"> 262 <intent-filter> 263 <action android:name="com.android.vending.INSTALL_REFERRER" /> 264 </intent-filter> 265 </receiver> 266 267 <!-- 268 This crashes: https://code.google.com/p/analytics-issues/issues/detail?id=667 269 TODO: turn it back on when it's fixed 270 <service 271 android:name="com.google.android.gms.analytics.CampaignTrackingService" 272 android:enabled="true" 273 android:exported="false" />--> 274 275 <receiver android:name="com.google.android.gms.analytics.AnalyticsReceiver" 276 android:enabled="true"> 277 <intent-filter> 278 <action android:name="com.google.android.gms.analytics.ANALYTICS_DISPATCH" /> 279 </intent-filter> 280 </receiver> 281 282 <service android:name="com.google.android.gms.analytics.AnalyticsService" 283 android:enabled="true" 284 android:exported="false"/> 285 286 <!-- FCM --> 287 <service 288 android:name=".fcm.ExpoFcmMessagingService" 289 android:exported="true"> 290 <intent-filter> 291 <action android:name="com.google.firebase.MESSAGING_EVENT" /> 292 </intent-filter> 293 </service> 294 <service 295 android:name=".fcm.FcmRegistrationIntentService" 296 android:exported="false"> 297 </service> 298 <!-- Applied to Firebase data messages --> 299 <meta-data 300 android:name="expo.modules.notifications.default_notification_icon" 301 android:resource="@drawable/shell_notification_icon" /> 302 <meta-data 303 android:name="expo.modules.notifications.default_notification_color" 304 android:resource="@color/notification_icon_color" /> 305 306 <!-- Applied to Firebase notification messages --> 307 <meta-data 308 android:name="com.google.firebase.messaging.default_notification_icon" 309 android:resource="@drawable/shell_notification_icon" /> 310 <meta-data 311 android:name="com.google.firebase.messaging.default_notification_color" 312 android:resource="@color/notification_icon_color" /> 313 314 315 <!-- ImagePicker native module --> 316 <activity 317 android:name="com.canhub.cropper.CropImageActivity" 318 android:theme="@style/Base.Theme.AppCompat"> 319 </activity> 320 321 <!-- ADD GOOGLE MAPS CONFIG HERE --> 322 <!-- BEGIN GOOGLE MAPS CONFIG --> 323 <meta-data 324 android:name="com.google.android.geo.API_KEY" 325 android:value="${GOOGLE_MAPS_API_KEY}"/> 326 <!-- END GOOGLE MAPS CONFIG --> 327 328 <!-- ADD GOOGLE MOBILE ADS CONFIG HERE --> 329 <!-- BEGIN GOOGLE MOBILE ADS CONFIG --> 330 <meta-data 331 android:name="com.google.android.gms.ads.APPLICATION_ID" 332 android:value="ca-app-pub-3940256099942544~3347511713"/> 333 <meta-data android:name="com.google.android.gms.ads.DELAY_APP_MEASUREMENT_INIT" android:value="true"/> 334 <!-- END GOOGLE MOBILE ADS CONFIG --> 335 336 <!-- ADD BRANCH CONFIG HERE --> 337 338 <!-- ADD FACEBOOK APP ID CONFIG HERE --> 339 <!-- ADD FACEBOOK APP DISPLAY NAME CONFIG HERE --> 340 <!-- Tags below need to be in one line with no whitespace after android:value --> 341 <!-- in order for XDL to be able to replace values in them --> 342 <meta-data android:name="com.facebook.sdk.AutoLogAppEventsEnabled" android:value="false"/> 343 <meta-data android:name="com.facebook.sdk.AutoInitEnabled" android:value="false"/> 344 <meta-data android:name="com.facebook.sdk.AdvertiserIDCollectionEnabled" android:value="false"/> 345 346 </application> 347 348</manifest> 349