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