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="${appLabel}" 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 <data 84 android:host="expo.dev" 85 android:path="/expo-go" 86 android:scheme="https"/> 87 <data 88 android:host="expo.dev" 89 android:path="/expo-go" 90 android:scheme="http"/> 91 92 <action android:name="android.intent.action.VIEW"/> 93 94 <category android:name="android.intent.category.DEFAULT"/> 95 <category android:name="android.intent.category.BROWSABLE"/> 96 </intent-filter> 97 98 <!-- This has to be separate from the exp[s]:// scheme filter. No idea why --> 99 <intent-filter> 100 <data 101 android:host="exp.host" 102 android:pathPrefix="/@" 103 android:scheme="http"/> 104 <data 105 android:host="exp.host" 106 android:pathPrefix="/@" 107 android:scheme="https"/> 108 <data 109 android:host="*.exp.direct" 110 android:pathPattern=".*" 111 android:scheme="http"/> 112 <data 113 android:host="*.exp.direct" 114 android:pathPattern=".*" 115 android:scheme="https"/> 116 117 <action android:name="android.intent.action.VIEW"/> 118 119 <category android:name="android.intent.category.DEFAULT"/> 120 <category android:name="android.intent.category.BROWSABLE"/> 121 </intent-filter> 122 123 <intent-filter> 124 <category android:name="android.intent.category.DEFAULT" /> 125 <category android:name="android.intent.category.BROWSABLE" /> 126 <action android:name="expo.modules.notifications.OPEN_APP_ACTION"/> 127 </intent-filter> 128 <!-- END LAUNCHER INTENT FILTERS --> 129 </activity> 130 131 <activity 132 android:name=".experience.ExperienceActivity" 133 android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode" 134 android:theme="@style/Theme.Exponent.Light" 135 android:windowSoftInputMode="adjustResize"> 136 </activity> 137 138 <activity 139 android:name=".MainActivity" 140 android:launchMode="singleTask" 141 android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode" 142 android:theme="@style/Theme.Exponent.Splash" 143 android:windowSoftInputMode="adjustResize"> 144 <!-- ADD DETACH SCHEME HERE --> 145 <!-- ADD DETACH INTENT FILTERS HERE --> 146 <!-- ADD DETACH APP SPECIFIC INTENT FILTERS --> 147 </activity> 148 149 <activity 150 android:name=".experience.HomeActivity" 151 android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode" 152 android:label="${appLabel}" 153 android:launchMode="singleTask" 154 android:screenOrientation="portrait" 155 android:theme="@style/Theme.Exponent.HomeActivity"> 156 <!-- START HOME INTENT FILTERS --> 157 <intent-filter> 158 <action android:name="android.intent.action.MAIN"/> 159 160 <category android:name="android.intent.category.DEFAULT"/> 161 <category android:name="android.intent.category.LAUNCHER"/> 162 </intent-filter> 163 <intent-filter> 164 <data android:scheme="expauth"/> 165 166 <action android:name="android.intent.action.VIEW"/> 167 168 <category android:name="android.intent.category.DEFAULT"/> 169 <category android:name="android.intent.category.BROWSABLE"/> 170 </intent-filter> 171 <intent-filter> 172 <data android:scheme="expo-home"/> 173 174 <action android:name="android.intent.action.VIEW"/> 175 176 <category android:name="android.intent.category.DEFAULT"/> 177 <category android:name="android.intent.category.BROWSABLE"/> 178 </intent-filter> 179 <!-- END HOME INTENT FILTERS --> 180 </activity> 181 182 <activity 183 android:name=".experience.TvActivity" 184 android:label="${appLabel}" 185 android:theme="@style/Theme.Exponent.Light" 186 android:screenOrientation="landscape"> 187 <intent-filter> 188 <action android:name="android.intent.action.MAIN" /> 189 <category android:name="android.intent.category.LEANBACK_LAUNCHER" /> 190 </intent-filter> 191 </activity> 192 193 194 195 <activity android:name="com.facebook.react.devsupport.DevSettingsActivity"/> 196 <!-- WHEN_PREPARING_SHELL_REMOVE_FROM_HERE --> 197 <!-- ADD DEV SETTINGS HERE --> 198 <!-- BEGIN_SDK_44 --> 199 <activity android:name="abi44_0_0.com.facebook.react.devsupport.DevSettingsActivity"/> 200 <!-- END_SDK_44 --> 201 <!-- BEGIN_SDK_43 --> 202 <activity android:name="abi43_0_0.com.facebook.react.devsupport.DevSettingsActivity"/> 203 <!-- END_SDK_43 --> 204 <!-- WHEN_PREPARING_SHELL_REMOVE_TO_HERE --> 205 206 <activity 207 android:name="net.openid.appauth.RedirectUriReceiverActivity" 208 tools:node="replace"> 209 <intent-filter> 210 <action android:name="android.intent.action.VIEW"/> 211 <category android:name="android.intent.category.DEFAULT"/> 212 <category android:name="android.intent.category.BROWSABLE"/> 213 <data android:scheme="host.exp.exponent" android:path="oauthredirect"/> 214 </intent-filter> 215 </activity> 216 217 <activity 218 android:name=".experience.ErrorActivity" 219 android:theme="@style/Theme.Exponent.Dark" 220 android:screenOrientation="portrait"> 221 </activity> 222 223 <activity 224 android:name="com.facebook.FacebookActivity" 225 android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation" 226 android:label="${appLabel}" 227 android:theme="@android:style/Theme.Translucent.NoTitleBar" 228 tools:replace="android:theme" /> 229 230 <activity 231 android:name="com.facebook.CustomTabActivity" 232 android:exported="true"> 233 <intent-filter> 234 <action android:name="android.intent.action.VIEW" /> 235 <category android:name="android.intent.category.DEFAULT" /> 236 <category android:name="android.intent.category.BROWSABLE" /> 237 <!-- REPLACE WITH FACEBOOK SCHEME --> 238 </intent-filter> 239 </activity> 240 241 <activity 242 android:name="com.facebook.ads.InterstitialAdActivity" 243 android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation" 244 android:label="${appLabel}" 245 android:theme="@android:style/Theme.Translucent.NoTitleBar" /> 246 247 <service 248 android:name=".ExponentIntentService" 249 android:exported="false" /> 250 251 <!-- Analytics --> 252 <receiver 253 android:name="host.exp.exponent.referrer.InstallReferrerReceiver" 254 android:exported="true"> 255 <intent-filter> 256 <action android:name="com.android.vending.INSTALL_REFERRER" /> 257 </intent-filter> 258 </receiver> 259 260 <!-- 261 This crashes: https://code.google.com/p/analytics-issues/issues/detail?id=667 262 TODO: turn it back on when it's fixed 263 <service 264 android:name="com.google.android.gms.analytics.CampaignTrackingService" 265 android:enabled="true" 266 android:exported="false" />--> 267 268 <receiver android:name="com.google.android.gms.analytics.AnalyticsReceiver" 269 android:enabled="true"> 270 <intent-filter> 271 <action android:name="com.google.android.gms.analytics.ANALYTICS_DISPATCH" /> 272 </intent-filter> 273 </receiver> 274 275 <service android:name="com.google.android.gms.analytics.AnalyticsService" 276 android:enabled="true" 277 android:exported="false"/> 278 279 <!-- FCM --> 280 <service 281 android:name=".fcm.ExpoFcmMessagingService"> 282 <intent-filter> 283 <action android:name="com.google.firebase.MESSAGING_EVENT" /> 284 </intent-filter> 285 </service> 286 <service 287 android:name=".fcm.FcmRegistrationIntentService" 288 android:exported="false"> 289 </service> 290 <!-- Applied to Firebase data messages --> 291 <meta-data 292 android:name="expo.modules.notifications.default_notification_icon" 293 android:resource="@drawable/shell_notification_icon" /> 294 <meta-data 295 android:name="expo.modules.notifications.default_notification_color" 296 android:resource="@color/notification_icon_color" /> 297 298 <!-- Applied to Firebase notification messages --> 299 <meta-data 300 android:name="com.google.firebase.messaging.default_notification_icon" 301 android:resource="@drawable/shell_notification_icon" /> 302 <meta-data 303 android:name="com.google.firebase.messaging.default_notification_color" 304 android:resource="@color/notification_icon_color" /> 305 306 307 <!-- ImagePicker native module --> 308 <activity 309 android:name="com.canhub.cropper.CropImageActivity" 310 android:theme="@style/Base.Theme.AppCompat"> 311 </activity> 312 313 <!-- ADD GOOGLE MAPS CONFIG HERE --> 314 <!-- BEGIN GOOGLE MAPS CONFIG --> 315 <meta-data 316 android:name="com.google.android.geo.API_KEY" 317 android:value="${GOOGLE_MAPS_API_KEY}"/> 318 <!-- END GOOGLE MAPS CONFIG --> 319 320 <!-- ADD GOOGLE MOBILE ADS CONFIG HERE --> 321 <!-- BEGIN GOOGLE MOBILE ADS CONFIG --> 322 <meta-data 323 android:name="com.google.android.gms.ads.APPLICATION_ID" 324 android:value="ca-app-pub-3940256099942544~3347511713"/> 325 <meta-data android:name="com.google.android.gms.ads.DELAY_APP_MEASUREMENT_INIT" android:value="true"/> 326 <!-- END GOOGLE MOBILE ADS CONFIG --> 327 328 <!-- ADD BRANCH CONFIG HERE --> 329 330 <!-- ADD FACEBOOK APP ID CONFIG HERE --> 331 <!-- ADD FACEBOOK APP DISPLAY NAME CONFIG HERE --> 332 <!-- Tags below need to be in one line with no whitespace after android:value --> 333 <!-- in order for XDL to be able to replace values in them --> 334 <meta-data android:name="com.facebook.sdk.AutoLogAppEventsEnabled" android:value="false"/> 335 <meta-data android:name="com.facebook.sdk.AutoInitEnabled" android:value="false"/> 336 <meta-data android:name="com.facebook.sdk.AdvertiserIDCollectionEnabled" android:value="false"/> 337 338 </application> 339 340</manifest> 341