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  <uses-permission android:name="android.permission.INTERNET"/>
12  <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
13  <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
14  <uses-permission android:name="android.permission.WAKE_LOCK"/>
15  <uses-permission android:name="host.exp.exponent.permission.C2D_MESSAGE"/>
16  <uses-permission android:name="android.permission.READ_INTERNAL_STORAGE"/>
17  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
18  <uses-permission android:name="android.permission.MANAGE_DOCUMENTS" />
19  <uses-permission android:name="android.permission.USE_FINGERPRINT" />
20  <uses-permission android:name="android.permission.VIBRATE" />
21
22  <!-- These require runtime permissions on M -->
23  <uses-permission android:name="android.permission.READ_CONTACTS"/>
24  <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
25  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
26  <uses-permission android:name="android.permission.CAMERA"/>
27  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
28  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
29
30  <uses-feature android:glEsVersion="0x00020000" android:required="true" />
31
32  <application
33    android:name=".ExponentApplication"
34    android:allowBackup="true"
35    android:icon="@mipmap/ic_launcher"
36    android:label="@string/app_name"
37    android:largeHeap="true">
38
39    <activity
40      android:name=".LauncherActivity"
41      android:exported="true"
42      android:launchMode="singleTask"
43      android:screenOrientation="portrait"
44      android:theme="@android:style/Theme.Translucent.NoTitleBar">
45      <!-- ADD SHELL SCHEME HERE -->
46      <!-- DELETE AFTER -->
47      <intent-filter>
48        <data android:scheme="exp"/>
49        <data android:scheme="exps"/>
50
51        <action android:name="android.intent.action.VIEW"/>
52
53        <category android:name="android.intent.category.DEFAULT"/>
54        <category android:name="android.intent.category.BROWSABLE"/>
55      </intent-filter>
56
57      <!-- This has to be separate from the exp[s]:// scheme filter. No idea why -->
58      <intent-filter>
59        <data
60          android:host="exp.host"
61          android:pathPrefix="/@"
62          android:scheme="http"/>
63        <data
64          android:host="exp.host"
65          android:pathPrefix="/@"
66          android:scheme="https"/>
67        <data
68          android:host="*.exp.direct"
69          android:pathPattern=".*"
70          android:scheme="http"/>
71        <data
72          android:host="*.exp.direct"
73          android:pathPattern=".*"
74          android:scheme="https"/>
75
76        <action android:name="android.intent.action.VIEW"/>
77
78        <category android:name="android.intent.category.DEFAULT"/>
79        <category android:name="android.intent.category.BROWSABLE"/>
80      </intent-filter>
81      <!-- DELETE BEFORE -->
82
83      <intent-filter>
84        <action android:name="android.intent.action.MAIN"/>
85
86        <category android:name="android.intent.category.LAUNCHER"/>
87      </intent-filter>
88    </activity>
89
90    <activity
91      android:name=".experience.ExperienceActivity"
92      android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
93      android:theme="@style/Theme.Exponent.Light"
94      android:windowSoftInputMode="adjustResize">
95    </activity>
96
97    <activity
98      android:name=".experience.HomeActivity"
99      android:label="@string/app_name"
100      android:launchMode="singleTask"
101      android:screenOrientation="portrait"
102      android:theme="@style/Theme.Exponent.Light">
103    </activity>
104
105    <activity android:name="com.facebook.react.devsupport.DevSettingsActivity"/>
106    <!-- ADD DEV SETTINGS HERE -->
107    <activity android:name="abi14_0_0.com.facebook.react.devsupport.DevSettingsActivity"/>
108    <activity android:name="abi13_0_0.com.facebook.react.devsupport.DevSettingsActivity"/>
109    <activity android:name="abi12_0_0.com.facebook.react.devsupport.DevSettingsActivity"/>
110    <activity android:name="abi11_0_0.com.facebook.react.devsupport.DevSettingsActivity"/>
111    <activity android:name="abi10_0_0.com.facebook.react.devsupport.DevSettingsActivity"/>
112    <activity android:name="abi9_0_0.com.facebook.react.devsupport.DevSettingsActivity"/>
113    <activity android:name="abi8_0_0.com.facebook.react.devsupport.DevSettingsActivity"/>
114    <activity android:name="abi7_0_0.com.facebook.react.devsupport.DevSettingsActivity"/>
115
116    <activity
117      android:name=".ExponentDevActivity"
118      android:exported="true"
119      android:label="@string/dev_activity_name"
120      android:screenOrientation="portrait"
121      android:theme="@style/Theme.Exponent.Dark"
122      android:windowSoftInputMode="adjustPan">
123    </activity>
124
125    <activity
126      android:name=".oauth.OAuthWebViewActivity"
127      android:screenOrientation="portrait"
128      android:theme="@style/Theme.Exponent.Light">
129    </activity>
130
131    <activity
132        android:name="net.openid.appauth.RedirectUriReceiverActivity"
133        tools:node="replace">
134      <intent-filter>
135        <action android:name="android.intent.action.VIEW"/>
136        <category android:name="android.intent.category.DEFAULT"/>
137        <category android:name="android.intent.category.BROWSABLE"/>
138        <data android:scheme="host.exp.exponent" android:path="oauthredirect"/>
139      </intent-filter>
140    </activity>
141
142    <activity
143      android:name=".oauth.OAuthResultActivity">
144    </activity>
145
146    <activity
147      android:name=".chrometabs.ChromeTabsManagerActivity">
148    </activity>
149
150    <activity
151      android:name=".experience.ErrorActivity"
152      android:theme="@style/Theme.Exponent.Dark"
153      android:screenOrientation="portrait">
154    </activity>
155
156    <activity
157      android:name=".experience.InfoActivity"
158      android:screenOrientation="portrait"
159      android:theme="@style/Theme.Exponent.Light">
160    </activity>
161
162    <activity
163      android:name="com.facebook.FacebookActivity"
164      android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
165      android:label="@string/app_name"
166      android:theme="@android:style/Theme.Translucent.NoTitleBar" />
167
168    <service
169      android:name=".ExponentIntentService"
170      android:exported="false" />
171
172    <!-- Analytics -->
173    <receiver
174      android:name="host.exp.exponent.referrer.InstallReferrerReceiver"
175      android:exported="true">
176      <intent-filter>
177        <action android:name="com.android.vending.INSTALL_REFERRER" />
178      </intent-filter>
179    </receiver>
180
181    <!--
182    This crashes: https://code.google.com/p/analytics-issues/issues/detail?id=667
183    TODO: turn it back on when it's fixed
184    <service
185      android:name="com.google.android.gms.analytics.CampaignTrackingService"
186      android:enabled="true"
187      android:exported="false" />-->
188
189    <receiver android:name="com.google.android.gms.analytics.AnalyticsReceiver"
190              android:enabled="true">
191      <intent-filter>
192        <action android:name="com.google.android.gms.analytics.ANALYTICS_DISPATCH" />
193      </intent-filter>
194    </receiver>
195
196    <service android:name="com.google.android.gms.analytics.AnalyticsService"
197             android:enabled="true"
198             android:exported="false"/>
199
200    <!-- GCM -->
201    <receiver
202      android:name="com.google.android.gms.gcm.GcmReceiver"
203      android:exported="true"
204      android:permission="com.google.android.c2dm.permission.SEND">
205      <intent-filter>
206        <action android:name="com.google.android.c2dm.intent.RECEIVE"/>
207        <action android:name="com.google.android.c2dm.intent.REGISTRATION"/>
208
209        <category android:name="host.exp.exponent"/>
210      </intent-filter>
211    </receiver>
212
213    <service
214      android:name=".gcm.ExponentGcmListenerService"
215      android:exported="false">
216      <intent-filter>
217        <action android:name="com.google.android.c2dm.intent.RECEIVE"/>
218      </intent-filter>
219    </service>
220    <service
221      android:name=".gcm.ExponentInstanceIDListenerService"
222      android:exported="false">
223      <intent-filter>
224        <action android:name="com.google.android.gms.iid.InstanceID"/>
225      </intent-filter>
226    </service>
227    <service
228      android:name=".gcm.RegistrationIntentService"
229      android:exported="false">
230    </service>
231
232    <!-- ImagePicker native module -->
233    <activity
234      android:name="com.theartofdev.edmodo.cropper.CropImageActivity"
235      android:theme="@style/Base.Theme.AppCompat">
236    </activity>
237
238
239    <!-- ADD FABRIC CONFIG HERE -->
240    <!-- BEGIN FABRIC CONFIG -->
241    <meta-data
242      android:name="io.fabric.ApiKey"
243      android:value="${FABRIC_API_KEY}"/>
244    <!-- END FABRIC CONFIG -->
245
246    <!-- ADD GOOGLE MAPS CONFIG HERE -->
247    <!-- BEGIN GOOGLE MAPS CONFIG -->
248    <meta-data
249      android:name="com.google.android.geo.API_KEY"
250      android:value="${GOOGLE_MAPS_API_KEY}"/>
251    <!-- END GOOGLE MAPS CONFIG -->
252  </application>
253
254</manifest>
255