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