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:usesCleartextTraffic="true">
55
56    <activity
57      android:name=".LauncherActivity"
58      android:exported="true"
59      android:launchMode="singleTask"
60      android:theme="@android:style/Theme.Translucent.NoTitleBar">
61      <!-- START LAUNCHER INTENT FILTERS -->
62      <intent-filter>
63        <data android:scheme="exp"/>
64        <data android:scheme="exps"/>
65
66        <action android:name="android.intent.action.VIEW"/>
67
68        <category android:name="android.intent.category.DEFAULT"/>
69        <category android:name="android.intent.category.BROWSABLE"/>
70      </intent-filter>
71
72      <!-- This has to be separate from the exp[s]:// scheme filter. No idea why -->
73      <intent-filter>
74        <data
75          android:host="exp.host"
76          android:pathPrefix="/@"
77          android:scheme="http"/>
78        <data
79          android:host="exp.host"
80          android:pathPrefix="/@"
81          android:scheme="https"/>
82        <data
83          android:host="*.exp.direct"
84          android:pathPattern=".*"
85          android:scheme="http"/>
86        <data
87          android:host="*.exp.direct"
88          android:pathPattern=".*"
89          android:scheme="https"/>
90
91        <action android:name="android.intent.action.VIEW"/>
92
93        <category android:name="android.intent.category.DEFAULT"/>
94        <category android:name="android.intent.category.BROWSABLE"/>
95      </intent-filter>
96
97      <intent-filter>
98          <category android:name="android.intent.category.DEFAULT" />
99          <category android:name="android.intent.category.BROWSABLE" />
100          <action android:name="expo.modules.notifications.OPEN_APP_ACTION"/>
101      </intent-filter>
102      <!-- END LAUNCHER INTENT FILTERS -->
103    </activity>
104
105    <activity
106      android:name=".experience.ExperienceActivity"
107      android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
108      android:theme="@style/Theme.Exponent.Light"
109      android:windowSoftInputMode="adjustResize">
110    </activity>
111
112    <activity
113      android:name=".MainActivity"
114      android:launchMode="singleTask"
115      android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
116      android:theme="@style/Theme.Exponent.Splash"
117      android:windowSoftInputMode="adjustResize">
118      <!-- ADD DETACH SCHEME HERE -->
119      <!-- ADD DETACH INTENT FILTERS HERE -->
120      <!-- ADD DETACH APP SPECIFIC INTENT FILTERS -->
121    </activity>
122
123    <activity
124      android:name=".experience.HomeActivity"
125      android:label="@string/app_name"
126      android:launchMode="singleTask"
127      android:screenOrientation="portrait"
128      android:theme="@style/Theme.Exponent.Light.LightStatusBar">
129      <!-- START HOME INTENT FILTERS -->
130      <intent-filter>
131        <action android:name="android.intent.action.MAIN"/>
132
133        <category android:name="android.intent.category.DEFAULT"/>
134        <category android:name="android.intent.category.LAUNCHER"/>
135      </intent-filter>
136      <!-- END HOME INTENT FILTERS -->
137    </activity>
138
139    <activity
140      android:name=".experience.TvActivity"
141      android:label="@string/app_name"
142      android:theme="@style/Theme.Exponent.Light"
143      android:screenOrientation="landscape">
144     <intent-filter>
145       <action android:name="android.intent.action.MAIN" />
146       <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
147     </intent-filter>
148   </activity>
149
150
151
152    <activity android:name="com.facebook.react.devsupport.DevSettingsActivity"/>
153    <!-- WHEN_PREPARING_SHELL_REMOVE_FROM_HERE -->
154    <!-- ADD DEV SETTINGS HERE -->
155    <!-- BEGIN_SDK_37 -->
156    <activity android:name="abi37_0_0.com.facebook.react.devsupport.DevSettingsActivity"/>
157    <!-- END_SDK_37 -->
158    <!-- BEGIN_SDK_36 -->
159    <activity android:name="abi36_0_0.com.facebook.react.devsupport.DevSettingsActivity"/>
160    <!-- END_SDK_36 -->
161    <!-- BEGIN_SDK_35 -->
162    <activity android:name="abi35_0_0.com.facebook.react.devsupport.DevSettingsActivity"/>
163    <!-- END_SDK_35 -->
164    <!-- WHEN_PREPARING_SHELL_REMOVE_TO_HERE -->
165
166    <activity
167        android:name="net.openid.appauth.RedirectUriReceiverActivity"
168        tools:node="replace">
169      <intent-filter>
170        <action android:name="android.intent.action.VIEW"/>
171        <category android:name="android.intent.category.DEFAULT"/>
172        <category android:name="android.intent.category.BROWSABLE"/>
173        <data android:scheme="host.exp.exponent" android:path="oauthredirect"/>
174      </intent-filter>
175    </activity>
176
177    <!-- START OF STRIPE SCHEMES -->
178    <activity
179        android:exported="true"
180        android:launchMode="singleTask"
181        android:name="expo.modules.payments.stripe.RedirectUriReceiver"
182        android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen">
183        <intent-filter>
184            <action android:name="android.intent.action.VIEW" />
185            <category android:name="android.intent.category.DEFAULT" />
186            <category android:name="android.intent.category.BROWSABLE" />
187            <data android:scheme="expo.modules.payments.stripe" />
188        </intent-filter>
189    </activity>
190    <!-- Versioned Activity for Stripe -->
191    <!-- BEGIN_SDK_37 -->
192    <activity
193      android:exported="true"
194      android:launchMode="singleTask"
195      android:name="abi37_0_0.expo.modules.payments.stripe.RedirectUriReceiver"
196      android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen">
197      <intent-filter>
198        <action android:name="android.intent.action.VIEW" />
199        <category android:name="android.intent.category.DEFAULT" />
200        <category android:name="android.intent.category.BROWSABLE" />
201        <data android:scheme="abi37_0_0.expo.modules.payments.stripe" />
202      </intent-filter>
203    </activity>
204    <!-- END_SDK_37 -->
205    <!-- BEGIN_SDK_36 -->
206    <activity
207      android:exported="true"
208      android:launchMode="singleTask"
209      android:name="abi36_0_0.expo.modules.payments.stripe.RedirectUriReceiver"
210      android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen">
211      <intent-filter>
212        <action android:name="android.intent.action.VIEW" />
213        <category android:name="android.intent.category.DEFAULT" />
214        <category android:name="android.intent.category.BROWSABLE" />
215        <data android:scheme="abi36_0_0.expo.modules.payments.stripe" />
216      </intent-filter>
217    </activity>
218    <!-- END_SDK_36 -->
219		<!-- BEGIN_SDK_35 -->
220		<activity
221			android:exported="true"
222			android:launchMode="singleTask"
223			android:name="abi35_0_0.expo.modules.payments.stripe.RedirectUriReceiver"
224			android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen">
225			<intent-filter>
226				<action android:name="android.intent.action.VIEW" />
227					<category android:name="android.intent.category.DEFAULT" />
228					<category android:name="android.intent.category.BROWSABLE" />
229					<data android:scheme="abi35_0_0.expo.modules.payments.stripe" />
230			</intent-filter>
231		</activity>
232		<!-- END_SDK_35 -->
233    <!-- END OF STRIPE SCHEMES -->
234
235    <activity
236      android:name=".experience.ErrorActivity"
237      android:theme="@style/Theme.Exponent.Dark"
238      android:screenOrientation="portrait">
239    </activity>
240
241    <activity
242      android:name=".experience.InfoActivity"
243      android:screenOrientation="portrait"
244      android:theme="@style/Theme.Exponent.Light">
245    </activity>
246
247    <activity
248      android:name="com.facebook.FacebookActivity"
249      android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
250      android:label="@string/app_name"
251      android:theme="@android:style/Theme.Translucent.NoTitleBar"
252      tools:replace="android:theme" />
253
254    <activity
255      android:name="com.facebook.CustomTabActivity"
256      android:exported="true">
257      <intent-filter>
258        <action android:name="android.intent.action.VIEW" />
259        <category android:name="android.intent.category.DEFAULT" />
260        <category android:name="android.intent.category.BROWSABLE" />
261        <!-- REPLACE WITH FACEBOOK SCHEME -->
262      </intent-filter>
263    </activity>
264
265    <activity
266      android:name="com.facebook.ads.InterstitialAdActivity"
267      android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
268      android:label="@string/app_name"
269      android:theme="@android:style/Theme.Translucent.NoTitleBar" />
270
271    <service
272      android:name=".ExponentIntentService"
273      android:exported="false" />
274
275    <!-- Analytics -->
276    <receiver
277      android:name="host.exp.exponent.referrer.InstallReferrerReceiver"
278      android:exported="true">
279      <intent-filter>
280        <action android:name="com.android.vending.INSTALL_REFERRER" />
281      </intent-filter>
282    </receiver>
283
284    <!--
285    This crashes: https://code.google.com/p/analytics-issues/issues/detail?id=667
286    TODO: turn it back on when it's fixed
287    <service
288      android:name="com.google.android.gms.analytics.CampaignTrackingService"
289      android:enabled="true"
290      android:exported="false" />-->
291
292    <receiver android:name="com.google.android.gms.analytics.AnalyticsReceiver"
293              android:enabled="true">
294      <intent-filter>
295        <action android:name="com.google.android.gms.analytics.ANALYTICS_DISPATCH" />
296      </intent-filter>
297    </receiver>
298
299    <service android:name="com.google.android.gms.analytics.AnalyticsService"
300             android:enabled="true"
301             android:exported="false"/>
302
303    <!-- GCM -->
304    <receiver
305      android:name="com.google.android.gms.gcm.GcmReceiver"
306      android:exported="true"
307      android:permission="com.google.android.c2dm.permission.SEND">
308      <intent-filter>
309        <action android:name="com.google.android.c2dm.intent.RECEIVE"/>
310        <action android:name="com.google.android.c2dm.intent.REGISTRATION"/>
311
312        <category android:name="host.exp.exponent"/>
313      </intent-filter>
314    </receiver>
315
316    <service
317      android:name=".gcm.ExponentGcmListenerService"
318      android:exported="false">
319      <intent-filter>
320        <action android:name="com.google.android.c2dm.intent.RECEIVE"/>
321      </intent-filter>
322    </service>
323    <service
324      android:name=".gcm.ExponentInstanceIDListenerService"
325      android:exported="false">
326      <intent-filter>
327        <action android:name="com.google.android.gms.iid.InstanceID"/>
328      </intent-filter>
329    </service>
330    <service
331      android:name=".gcm.GcmRegistrationIntentService"
332      android:exported="false">
333    </service>
334
335    <!-- FCM -->
336    <service
337      android:name=".fcm.ExpoFcmMessagingService">
338      <intent-filter>
339        <action android:name="com.google.firebase.MESSAGING_EVENT" />
340      </intent-filter>
341    </service>
342    <meta-data
343      android:name="com.google.firebase.messaging.default_notification_icon"
344      android:resource="@drawable/shell_notification_icon" />
345    <meta-data
346      android:name="com.google.firebase.messaging.default_notification_color"
347      android:resource="@color/colorAccent" />
348    <service
349      android:name=".fcm.FcmRegistrationIntentService"
350      android:exported="false">
351    </service>
352
353    <service
354      android:name="host.exp.exponent.services.ScopedExpoNotificationsService"
355      android:exported="false"
356      android:permission="android.permission.BIND_JOB_SERVICE">
357      <intent-filter>
358          <action android:name="expo.modules.notifications.NOTIFICATION_EVENT" />
359      </intent-filter>
360    </service>
361
362    <!-- ImagePicker native module -->
363    <activity
364      android:name="com.theartofdev.edmodo.cropper.CropImageActivity"
365      android:theme="@style/Base.Theme.AppCompat">
366    </activity>
367
368    <!-- ADD GOOGLE MAPS CONFIG HERE -->
369    <!-- BEGIN GOOGLE MAPS CONFIG -->
370    <meta-data
371      android:name="com.google.android.geo.API_KEY"
372      android:value="${GOOGLE_MAPS_API_KEY}"/>
373    <!-- END GOOGLE MAPS CONFIG -->
374
375    <!-- ADD GOOGLE MOBILE ADS CONFIG HERE -->
376    <!-- BEGIN GOOGLE MOBILE ADS CONFIG -->
377    <meta-data
378      android:name="com.google.android.gms.ads.APPLICATION_ID"
379      android:value="ca-app-pub-3940256099942544~3347511713"/>
380    <meta-data android:name="com.google.android.gms.ads.DELAY_APP_MEASUREMENT_INIT" android:value="true"/>
381    <!-- END GOOGLE MOBILE ADS CONFIG -->
382
383    <!-- ADD BRANCH CONFIG HERE -->
384
385    <!-- ADD FACEBOOK APP ID CONFIG HERE -->
386    <!-- ADD FACEBOOK APP DISPLAY NAME CONFIG HERE -->
387    <!-- Tags below need to be in one line with no whitespace after android:value -->
388    <!-- in order for XDL to be able to replace values in them -->
389    <meta-data android:name="com.facebook.sdk.AutoLogAppEventsEnabled" android:value="false"/>
390    <meta-data android:name="com.facebook.sdk.AutoInitEnabled" android:value="false"/>
391    <meta-data android:name="com.facebook.sdk.AdvertiserIDCollectionEnabled" android:value="false"/>
392
393    <!-- ADD HERE STRIPE SCHEME META DATA -->
394  </application>
395
396</manifest>
397