1 <?xml version="1.0" encoding="utf-8"?> 2 <!-- Copyright (C) 2008 The Android Open Source Project 3 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 you may not use this file except in compliance with the License. 6 You may obtain a copy of the License at 7 8 http://www.apache.org/licenses/LICENSE-2.0 9 10 Unless required by applicable law or agreed to in writing, software 11 distributed under the License is distributed on an "AS IS" BASIS, 12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 See the License for the specific language governing permissions and 14 limitations under the License. 15 --> 16 17 <manifest xmlns:android="http://schemas.android.com/apk/res/android" 18 package="com.android.email" 19 android:versionCode="230000" 20 android:versionName="2.3" 21 > 22 23 <original-package android:name="com.android.email" /> 24 25 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> 26 <uses-permission android:name="android.permission.READ_CONTACTS"/> 27 <uses-permission android:name="android.permission.READ_OWNER_DATA"/> 28 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 29 <uses-permission android:name="android.permission.INTERNET"/> 30 <uses-permission android:name="android.permission.VIBRATE"/> 31 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 32 <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 33 <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" /> 34 <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" /> 35 <uses-permission android:name="android.permission.READ_SYNC_SETTINGS" /> 36 <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" /> 37 38 <!-- For EAS purposes; could be removed when EAS has a permanent home --> 39 <uses-permission android:name="android.permission.WRITE_CONTACTS"/> 40 <uses-permission android:name="android.permission.WRITE_CALENDAR"/> 41 <uses-permission android:name="android.permission.READ_CALENDAR"/> 42 43 <!-- Only required if a store implements push mail and needs to keep network open --> 44 <uses-permission android:name="android.permission.WAKE_LOCK"/> 45 <uses-permission android:name="android.permission.READ_PHONE_STATE"/> 46 47 <!-- Grant permission to other apps to view attachments --> 48 <permission android:name="com.android.email.permission.READ_ATTACHMENT" 49 android:permissionGroup="android.permission-group.MESSAGES" 50 android:protectionLevel="dangerous" 51 android:label="@string/read_attachment_label" 52 android:description="@string/read_attachment_desc"/> 53 <uses-permission android:name="com.android.email.permission.READ_ATTACHMENT"/> 54 55 <!-- Grant permission to system apps to access provider (see provider below) --> 56 <permission android:name="com.android.email.permission.ACCESS_PROVIDER" 57 android:protectionLevel="signatureOrSystem" 58 android:label="@string/permission_access_provider_label" 59 android:description="@string/permission_access_provider_desc"/> 60 <uses-permission android:name="com.android.email.permission.ACCESS_PROVIDER"/> 61 62 <application android:icon="@drawable/icon" android:label="@string/app_name" 63 android:name="Email"> 64 <activity 65 android:name=".activity.Welcome"> 66 <intent-filter> 67 <action android:name="android.intent.action.MAIN" /> 68 <category android:name="android.intent.category.DEFAULT" /> 69 <category android:name="android.intent.category.LAUNCHER" /> 70 </intent-filter> 71 </activity> 72 <activity 73 android:name=".activity.UpgradeAccounts" 74 android:label="@string/upgrade_accounts_title" 75 android:theme="@android:style/Theme.NoTitleBar" 76 android:configChanges="keyboardHidden|orientation" > 77 </activity> 78 <!-- Must be exported in order for the AccountManager to launch it --> 79 <activity 80 android:name=".activity.setup.AccountSetupBasics" 81 android:label="@string/account_setup_basics_title" 82 android:exported="true" 83 > 84 </activity> 85 <activity 86 android:name=".activity.setup.AccountSetupAccountType" 87 android:label="@string/account_setup_account_type_title" 88 > 89 </activity> 90 <activity 91 android:name=".activity.setup.AccountSetupIncoming" 92 android:label="@string/account_setup_incoming_title" 93 > 94 </activity> 95 <activity 96 android:name=".activity.setup.AccountSetupOutgoing" 97 android:label="@string/account_setup_outgoing_title" 98 > 99 </activity> 100 <!--EXCHANGE-REMOVE-SECTION-START--> 101 <!-- This activity ignores configuration changes (e.g. rotation) so that it will 102 not make multiple calls to AccountSetupCheckSettings. --> 103 <activity 104 android:name=".activity.setup.AccountSetupExchange" 105 android:label="@string/account_setup_exchange_title" 106 android:configChanges="keyboardHidden|orientation" 107 > 108 </activity> 109 <!--EXCHANGE-REMOVE-SECTION-END--> 110 <activity 111 android:name=".activity.setup.AccountSetupOptions" 112 android:label="@string/account_setup_options_title" 113 > 114 </activity> 115 <activity 116 android:name=".activity.setup.AccountSetupNames" 117 android:label="@string/account_setup_names_title" 118 > 119 </activity> 120 <!-- XXX Note: this activity is hacked to ignore config changes, 121 since it doesn't currently handle them correctly in code. --> 122 <activity 123 android:name=".activity.setup.AccountSetupCheckSettings" 124 android:label="@string/account_setup_check_settings_title" 125 android:configChanges="keyboardHidden|orientation" 126 > 127 </activity> 128 <activity 129 android:name=".activity.setup.AccountSettings" 130 android:label="@string/account_settings_action" 131 > 132 <intent-filter> 133 <action android:name="com.android.email.activity.setup.ACCOUNT_MANAGER_ENTRY" /> 134 <category android:name="android.intent.category.DEFAULT" /> 135 </intent-filter> 136 </activity> 137 <activity 138 android:name=".activity.setup.AccountSecurity" 139 android.label="@string/account_security_title" 140 > 141 </activity> 142 143 <activity 144 android:name=".activity.Debug" 145 android:label="@string/debug_title"> 146 </activity> 147 <activity 148 android:name=".activity.AccountFolderList" 149 android:launchMode="singleTop" > 150 </activity> 151 152 <activity 153 android:name=".activity.AccountShortcutPicker" 154 android:label="@string/app_name" 155 android:enabled="false" 156 > 157 <intent-filter> 158 <action android:name="android.intent.action.CREATE_SHORTCUT" /> 159 <category android:name="android.intent.category.DEFAULT" /> 160 </intent-filter> 161 </activity> 162 163 <activity 164 android:name=".activity.MailboxList" 165 android:theme="@style/ThemeNoTitleBar"> 166 </activity> 167 168 <activity 169 android:name=".activity.MessageList" 170 android:theme="@style/ThemeNoTitleBar"> 171 <intent-filter> 172 <!-- This action is only to allow an entry point for launcher shortcuts --> 173 <action android:name="android.intent.action.MAIN" /> 174 </intent-filter> 175 </activity> 176 177 <!-- 178 This activity catches shortcuts to account created on Android 1.6 and before, 179 and redirects to MessageList. 180 singleTask is necessary to make sure the activity is really launched. 181 Without it, the framework brings up the app to front, but doesn't necessarily 182 launch the activity. 183 --> 184 <activity 185 android:name=".activity.FolderMessageList" 186 android:launchMode="singleTask" 187 > 188 <intent-filter> 189 <!-- This action is only to allow an entry point for launcher shortcuts --> 190 <action android:name="android.intent.action.MAIN" /> 191 </intent-filter> 192 </activity> 193 194 <activity 195 android:name=".activity.MessageView" 196 android:theme="@android:style/Theme.NoTitleBar" > 197 </activity> 198 <activity 199 android:name=".activity.MessageCompose" 200 android:label="@string/app_name" 201 android:enabled="false" 202 > 203 <intent-filter> 204 <action android:name="android.intent.action.VIEW" /> 205 <action android:name="android.intent.action.SENDTO" /> 206 <data android:scheme="mailto" /> 207 <category android:name="android.intent.category.DEFAULT" /> 208 <category android:name="android.intent.category.BROWSABLE" /> 209 </intent-filter> 210 <intent-filter android:label="@string/app_name"> 211 <action android:name="android.intent.action.SEND" /> 212 <data android:mimeType="*/*" /> 213 <category android:name="android.intent.category.DEFAULT" /> 214 </intent-filter> 215 <intent-filter android:label="@string/app_name"> 216 <action android:name="android.intent.action.SEND_MULTIPLE" /> 217 <data android:mimeType="*/*" /> 218 <category android:name="android.intent.category.DEFAULT" /> 219 </intent-filter> 220 </activity> 221 <!--EXCHANGE-REMOVE-SECTION-START--> 222 <receiver android:name="com.android.exchange.EmailSyncAlarmReceiver"/> 223 <receiver android:name="com.android.exchange.MailboxAlarmReceiver"/> 224 <!--EXCHANGE-REMOVE-SECTION-END--> 225 226 <receiver android:name=".service.EmailBroadcastReceiver" android:enabled="true"> 227 <intent-filter> 228 <action android:name="android.intent.action.BOOT_COMPLETED" /> 229 <action android:name="android.intent.action.DEVICE_STORAGE_LOW" /> 230 <action android:name="android.intent.action.DEVICE_STORAGE_OK" /> 231 </intent-filter> 232 </receiver> 233 <service android:name=".service.EmailBroadcastProcessorService" /> 234 235 <!-- Support for DeviceAdmin / DevicePolicyManager. See SecurityPolicy class for impl. --> 236 <receiver 237 android:name=".SecurityPolicy$PolicyAdmin" 238 android:label="@string/device_admin_label" 239 android:description="@string/device_admin_description" 240 android:permission="android.permission.BIND_DEVICE_ADMIN" > 241 <meta-data 242 android:name="android.app.device_admin" 243 android:resource="@xml/device_admin" /> 244 <intent-filter> 245 <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" /> 246 </intent-filter> 247 </receiver> 248 249 <service 250 android:name=".service.MailService" 251 android:enabled="false" 252 > 253 </service> 254 255 <!--EXCHANGE-REMOVE-SECTION-START--> 256 <!--Required stanza to register the ContactsSyncAdapterService with SyncManager --> 257 <service 258 android:name="com.android.exchange.ContactsSyncAdapterService" 259 android:exported="true"> 260 <intent-filter> 261 <action android:name="android.content.SyncAdapter" /> 262 </intent-filter> 263 <meta-data android:name="android.content.SyncAdapter" 264 android:resource="@xml/syncadapter_contacts" /> 265 </service> 266 267 <!--Required stanza to register the CalendarSyncAdapterService with SyncManager --> 268 <service 269 android:name="com.android.exchange.CalendarSyncAdapterService" 270 android:exported="true"> 271 <intent-filter> 272 <action android:name="android.content.SyncAdapter" /> 273 </intent-filter> 274 <meta-data android:name="android.content.SyncAdapter" 275 android:resource="@xml/syncadapter_calendar" /> 276 </service> 277 278 <!-- Add android:process=":remote" below to enable SyncManager as a separate process --> 279 <service 280 android:name="com.android.exchange.SyncManager" 281 android:enabled="true" 282 > 283 </service> 284 285 <!--Required stanza to register the EasAuthenticatorService with AccountManager --> 286 <service 287 android:name=".service.EasAuthenticatorService" 288 android:exported="true" 289 android:enabled="true" 290 > 291 <intent-filter> 292 <action android:name="android.accounts.AccountAuthenticator" /> 293 </intent-filter> 294 <meta-data 295 android:name="android.accounts.AccountAuthenticator" 296 android:resource="@xml/authenticator" 297 /> 298 </service> 299 <!-- 300 EasAuthenticatorService with the altenative label. Disabled by default, 301 and OneTimeInitializer enables it if the vendor policy tells so. 302 --> 303 <service 304 android:name=".service.EasAuthenticatorServiceAlternate" 305 android:exported="true" 306 android:enabled="false" 307 > 308 <intent-filter> 309 <action android:name="android.accounts.AccountAuthenticator" /> 310 </intent-filter> 311 <meta-data 312 android:name="android.accounts.AccountAuthenticator" 313 android:resource="@xml/authenticator_alternate" 314 /> 315 </service> 316 <!--EXCHANGE-REMOVE-SECTION-END--> 317 318 <provider 319 android:name=".provider.AttachmentProvider" 320 android:authorities="com.android.email.attachmentprovider" 321 android:multiprocess="true" 322 android:grantUriPermissions="true" 323 android:readPermission="com.android.email.permission.READ_ATTACHMENT" 324 /> 325 326 <!-- This provider MUST be protected by strict permissions, as granting access to 327 it exposes user passwords and other confidential information. --> 328 <provider 329 android:name=".provider.EmailProvider" 330 android:authorities="com.android.email.provider" 331 android:multiprocess="true" 332 android:permission="com.android.email.permission.ACCESS_PROVIDER" 333 /> 334 335 <!--EXCHANGE-REMOVE-SECTION-START--> 336 <!-- In this release, GAL information is used locally only, so we used the same 337 strict permissions. --> 338 <provider 339 android:name="com.android.exchange.provider.ExchangeProvider" 340 android:authorities="com.android.exchange.provider" 341 android:multiprocess="true" 342 android:permission="com.android.email.permission.ACCESS_PROVIDER" 343 /> 344 <!--EXCHANGE-REMOVE-SECTION-END--> 345 346 </application> 347 </manifest> 348