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