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
28  <!-- These require runtime permissions on M -->
29  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
30  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
31  <uses-permission android:name="android.permission.CAMERA" />
32  <uses-permission android:name="android.permission.READ_CONTACTS" />
33  <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
34  <uses-permission android:name="android.permission.RECORD_AUDIO" />
35  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
36  <uses-permission android:name="android.permission.WRITE_SETTINGS" />
37  <!-- END OPTIONAL PERMISSIONS -->
38
39  <!-- ADD TEST PERMISSIONS HERE -->
40
41  <uses-feature android:glEsVersion="0x00020000" android:required="false" />
42
43  <application
44    android:name=".MainApplication"
45    android:allowBackup="true"
46    android:icon="@mipmap/ic_launcher"
47    android:label="@string/app_name"
48    android:largeHeap="true">
49
50    <activity
51      android:name=".LauncherActivity"
52      android:exported="true"
53      android:launchMode="singleTask"
54      android:screenOrientation="portrait"
55      android:theme="@android:style/Theme.Translucent.NoTitleBar">
56      <!-- ADD SHELL SCHEME HERE -->
57      <!-- START LAUNCHER INTENT FILTERS -->
58      <intent-filter>
59        <data android:scheme="exp"/>
60        <data android:scheme="exps"/>
61
62        <action android:name="android.intent.action.VIEW"/>
63
64        <category android:name="android.intent.category.DEFAULT"/>
65        <category android:name="android.intent.category.BROWSABLE"/>
66      </intent-filter>
67
68      <!-- This has to be separate from the exp[s]:// scheme filter. No idea why -->
69      <intent-filter>
70        <data
71          android:host="exp.host"
72          android:pathPrefix="/@"
73          android:scheme="http"/>
74        <data
75          android:host="exp.host"
76          android:pathPrefix="/@"
77          android:scheme="https"/>
78        <data
79          android:host="*.exp.direct"
80          android:pathPattern=".*"
81          android:scheme="http"/>
82        <data
83          android:host="*.exp.direct"
84          android:pathPattern=".*"
85          android:scheme="https"/>
86
87        <action android:name="android.intent.action.VIEW"/>
88
89        <category android:name="android.intent.category.DEFAULT"/>
90        <category android:name="android.intent.category.BROWSABLE"/>
91      </intent-filter>
92      <!-- END LAUNCHER INTENT FILTERS -->
93    </activity>
94
95    <activity
96      android:name=".experience.ExperienceActivity"
97      android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
98      android:theme="@style/Theme.Exponent.Light"
99      android:windowSoftInputMode="adjustResize">
100    </activity>
101
102    <activity
103      android:name=".MainActivity"
104      android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
105      android:theme="@style/Theme.Exponent.Splash"
106      android:windowSoftInputMode="adjustResize">
107      <!-- ADD DETACH INTENT FILTERS HERE -->
108    </activity>
109
110    <activity
111      android:name=".experience.ShellAppActivity"
112      android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
113      android:theme="@style/Theme.Exponent.Splash"
114      android:windowSoftInputMode="adjustResize">
115      <!-- ADD SHELL INTENT FILTERS HERE -->
116    </activity>
117
118    <activity
119      android:name=".experience.HomeActivity"
120      android:label="@string/app_name"
121      android:launchMode="singleTask"
122      android:screenOrientation="portrait"
123      android:theme="@style/Theme.Exponent.Light">
124      <!-- START HOME INTENT FILTERS -->
125      <intent-filter>
126        <action android:name="android.intent.action.MAIN"/>
127
128        <category android:name="android.intent.category.LAUNCHER"/>
129      </intent-filter>
130      <!-- END HOME INTENT FILTERS -->
131    </activity>
132
133    <activity android:name="com.facebook.react.devsupport.DevSettingsActivity"/>
134    <!-- ADD DEV SETTINGS HERE -->
135    <activity android:name="abi24_0_0.com.facebook.react.devsupport.DevSettingsActivity"/>
136    <activity android:name="abi23_0_0.com.facebook.react.devsupport.DevSettingsActivity"/>
137    <activity android:name="abi22_0_0.com.facebook.react.devsupport.DevSettingsActivity"/>
138    <activity android:name="abi21_0_0.com.facebook.react.devsupport.DevSettingsActivity"/>
139    <activity android:name="abi20_0_0.com.facebook.react.devsupport.DevSettingsActivity"/>
140    <activity android:name="abi19_0_0.com.facebook.react.devsupport.DevSettingsActivity"/>
141
142    <activity
143      android:name=".ExponentDevActivity"
144      android:exported="true"
145      android:label="@string/dev_activity_name"
146      android:screenOrientation="portrait"
147      android:theme="@style/Theme.Exponent.Dark"
148      android:windowSoftInputMode="adjustPan">
149    </activity>
150
151    <activity
152      android:name=".oauth.OAuthWebViewActivity"
153      android:screenOrientation="portrait"
154      android:theme="@style/Theme.Exponent.Light">
155    </activity>
156
157    <activity
158        android:name="net.openid.appauth.RedirectUriReceiverActivity"
159        tools:node="replace">
160      <intent-filter>
161        <action android:name="android.intent.action.VIEW"/>
162        <category android:name="android.intent.category.DEFAULT"/>
163        <category android:name="android.intent.category.BROWSABLE"/>
164        <data android:scheme="host.exp.exponent" android:path="oauthredirect"/>
165      </intent-filter>
166    </activity>
167
168    <activity
169      android:name=".oauth.OAuthResultActivity">
170    </activity>
171
172    <activity
173      android:name=".chrometabs.ChromeTabsManagerActivity">
174    </activity>
175
176    <activity
177      android:name=".experience.ErrorActivity"
178      android:theme="@style/Theme.Exponent.Dark"
179      android:screenOrientation="portrait">
180    </activity>
181
182    <activity
183      android:name=".experience.InfoActivity"
184      android:screenOrientation="portrait"
185      android:theme="@style/Theme.Exponent.Light">
186    </activity>
187
188    <activity
189      android:name="com.facebook.FacebookActivity"
190      android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
191      android:label="@string/app_name"
192      android:theme="@android:style/Theme.Translucent.NoTitleBar"
193      tools:replace="android:theme" />
194
195    <activity
196      android:name="com.facebook.ads.InterstitialAdActivity"
197      android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
198      android:label="@string/app_name"
199      android:theme="@android:style/Theme.Translucent.NoTitleBar" />
200
201    <service
202      android:name=".ExponentIntentService"
203      android:exported="false" />
204
205    <!-- Analytics -->
206    <receiver
207      android:name="host.exp.exponent.referrer.InstallReferrerReceiver"
208      android:exported="true">
209      <intent-filter>
210        <action android:name="com.android.vending.INSTALL_REFERRER" />
211      </intent-filter>
212    </receiver>
213
214    <!--
215    This crashes: https://code.google.com/p/analytics-issues/issues/detail?id=667
216    TODO: turn it back on when it's fixed
217    <service
218      android:name="com.google.android.gms.analytics.CampaignTrackingService"
219      android:enabled="true"
220      android:exported="false" />-->
221
222    <receiver android:name="com.google.android.gms.analytics.AnalyticsReceiver"
223              android:enabled="true">
224      <intent-filter>
225        <action android:name="com.google.android.gms.analytics.ANALYTICS_DISPATCH" />
226      </intent-filter>
227    </receiver>
228
229    <service android:name="com.google.android.gms.analytics.AnalyticsService"
230             android:enabled="true"
231             android:exported="false"/>
232
233    <!-- GCM -->
234    <receiver
235      android:name="com.google.android.gms.gcm.GcmReceiver"
236      android:exported="true"
237      android:permission="com.google.android.c2dm.permission.SEND">
238      <intent-filter>
239        <action android:name="com.google.android.c2dm.intent.RECEIVE"/>
240        <action android:name="com.google.android.c2dm.intent.REGISTRATION"/>
241
242        <category android:name="host.exp.exponent"/>
243      </intent-filter>
244    </receiver>
245
246    <service
247      android:name=".gcm.ExponentGcmListenerService"
248      android:exported="false">
249      <intent-filter>
250        <action android:name="com.google.android.c2dm.intent.RECEIVE"/>
251      </intent-filter>
252    </service>
253    <service
254      android:name=".gcm.ExponentInstanceIDListenerService"
255      android:exported="false">
256      <intent-filter>
257        <action android:name="com.google.android.gms.iid.InstanceID"/>
258      </intent-filter>
259    </service>
260    <service
261      android:name=".gcm.RegistrationIntentService"
262      android:exported="false">
263    </service>
264
265    <!-- ImagePicker native module -->
266    <activity
267      android:name="com.theartofdev.edmodo.cropper.CropImageActivity"
268      android:theme="@style/Base.Theme.AppCompat">
269    </activity>
270
271
272    <!-- ADD FABRIC CONFIG HERE -->
273    <!-- BEGIN FABRIC CONFIG -->
274    <meta-data
275      android:name="io.fabric.ApiKey"
276      android:value="${FABRIC_API_KEY}"/>
277    <!-- END FABRIC CONFIG -->
278
279    <!-- ADD GOOGLE MAPS CONFIG HERE -->
280    <!-- BEGIN GOOGLE MAPS CONFIG -->
281    <meta-data
282      android:name="com.google.android.geo.API_KEY"
283      android:value="${GOOGLE_MAPS_API_KEY}"/>
284    <!-- END GOOGLE MAPS CONFIG -->
285
286    <!-- ADD BRANCH CONFIG HERE -->
287
288    <!-- The Facebook SDK runs FacebookInitProvider on startup and crashes if there isn't an ID here -->
289    <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="fb0"/>
290  </application>
291
292</manifest>
293