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