1 <?xml version="1.0" encoding="utf-8"?> 2 <!-- Copyright (C) 2006 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.contacts" 19 android:sharedUserId="android.uid.shared" 20 > 21 22 <original-package android:name="com.android.contacts" /> 23 24 <uses-permission android:name="android.permission.CALL_PRIVILEGED" /> 25 <uses-permission android:name="android.permission.READ_CONTACTS" /> 26 <uses-permission android:name="android.permission.WRITE_CONTACTS" /> 27 <uses-permission android:name="android.permission.INTERNET" /> 28 <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 29 <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" /> 30 <uses-permission android:name="com.google.android.googleapps.permission.GOOGLE_AUTH.mail" /> 31 <uses-permission android:name="android.permission.WAKE_LOCK" /> 32 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 33 <uses-permission android:name="android.permission.WRITE_SETTINGS" /> 34 <uses-permission android:name="android.permission.USE_CREDENTIALS" /> 35 <uses-permission android:name="android.permission.VIBRATE" /> 36 37 <application 38 android:label="@string/contactsList" 39 android:icon="@drawable/ic_launcher_contacts" 40 android:process="android.process.acore" 41 android:taskAffinity="android.task.contacts" 42 > 43 44 <!-- A virtual 12 key dialer --> 45 <activity android:name="TwelveKeyDialer" 46 android:launchMode="singleTop" 47 > 48 <intent-filter> 49 <action android:name="com.android.phone.action.TOUCH_DIALER" /> 50 <category android:name="android.intent.category.DEFAULT" /> 51 <category android:name="android.intent.category.TAB" /> 52 </intent-filter> 53 </activity> 54 55 <!-- A list of recent calls --> 56 <activity android:name="RecentCallsListActivity" 57 android:label="@string/recentCallsIconLabel" 58 > 59 <intent-filter> 60 <action android:name="com.android.phone.action.RECENT_CALLS" /> 61 <category android:name="android.intent.category.DEFAULT" /> 62 <category android:name="android.intent.category.TAB" /> 63 </intent-filter> 64 </activity> 65 66 <!-- Tab container for all tabs --> 67 <activity android:name="DialtactsActivity" 68 android:label="@string/launcherDialer" 69 android:theme="@style/DialtactsTheme" 70 android:launchMode="singleTask" 71 android:clearTaskOnLaunch="true" 72 android:icon="@drawable/ic_launcher_phone" 73 android:screenOrientation="nosensor" 74 > 75 <intent-filter> 76 <action android:name="android.intent.action.DIAL" /> 77 <category android:name="android.intent.category.DEFAULT" /> 78 <category android:name="android.intent.category.BROWSABLE" /> 79 <data android:mimeType="vnd.android.cursor.item/phone" /> 80 <data android:mimeType="vnd.android.cursor.item/person" /> 81 </intent-filter> 82 <intent-filter> 83 <action android:name="android.intent.action.DIAL" /> 84 <category android:name="android.intent.category.DEFAULT" /> 85 <category android:name="android.intent.category.BROWSABLE" /> 86 <data android:scheme="voicemail" /> 87 </intent-filter> 88 <intent-filter> 89 <action android:name="android.intent.action.DIAL" /> 90 <category android:name="android.intent.category.DEFAULT" /> 91 </intent-filter> 92 <intent-filter> 93 <action android:name="android.intent.action.MAIN" /> 94 <category android:name="android.intent.category.DEFAULT" /> 95 <category android:name="android.intent.category.LAUNCHER" /> 96 <category android:name="android.intent.category.BROWSABLE" /> 97 </intent-filter> 98 <intent-filter> 99 <action android:name="android.intent.action.VIEW" /> 100 <action android:name="android.intent.action.DIAL" /> 101 <category android:name="android.intent.category.DEFAULT" /> 102 <category android:name="android.intent.category.BROWSABLE" /> 103 <data android:scheme="tel" /> 104 </intent-filter> 105 <intent-filter> 106 <action android:name="android.intent.action.VIEW" /> 107 <category android:name="android.intent.category.DEFAULT" /> 108 <category android:name="android.intent.category.BROWSABLE" /> 109 <data android:mimeType="vnd.android.cursor.dir/calls" /> 110 </intent-filter> 111 <intent-filter> 112 <action android:name="android.intent.action.CALL_BUTTON" /> 113 <category android:name="android.intent.category.DEFAULT" /> 114 <category android:name="android.intent.category.BROWSABLE" /> 115 </intent-filter> 116 </activity> 117 118 <!-- Tab container for all tabs --> 119 <activity-alias android:name="DialtactsContactsEntryActivity" 120 android:targetActivity="DialtactsActivity" 121 android:label="@string/contactsList" 122 android:icon="@drawable/ic_launcher_contacts" 123 > 124 <intent-filter> 125 <action android:name="android.intent.action.MAIN" /> 126 <category android:name="android.intent.category.DEFAULT" /> 127 <category android:name="android.intent.category.LAUNCHER" /> 128 <category android:name="android.intent.category.BROWSABLE" /> 129 </intent-filter> 130 131 <intent-filter> 132 <action android:name="android.intent.action.VIEW" /> 133 <category android:name="android.intent.category.DEFAULT" /> 134 <data android:mimeType="vnd.android.cursor.dir/person" android:host="contacts" /> 135 <data android:mimeType="vnd.android.cursor.dir/contact" android:host="com.android.contacts" /> 136 </intent-filter> 137 138 </activity-alias> 139 140 <!-- Main launch Intent to open the Contacts app. This will open the app in its last manual 141 state. This is the state that has been explicitly set by the user (e.g. by clicking a tab). 142 States configured via other Intents (e.g. CallLog after Call) are not considered manual 143 state. At the moment, the Intent always goes to the DialtactsActivity, but this might later 144 be changed to also include sub-activities like Edit or View if they were left open --> 145 146 <activity-alias android:name="ContactsLaunchActivity" 147 android:targetActivity="DialtactsActivity" 148 > 149 <intent-filter> 150 <action android:name="android.intent.action.MAIN" /> 151 <category android:name="android.intent.category.DEFAULT" /> 152 <category android:name="android.intent.category.BROWSABLE" /> 153 </intent-filter> 154 </activity-alias> 155 156 <!-- An empty activity that presents the DialtactActivity's Favorites tab --> 157 <activity-alias android:name="DialtactsFavoritesEntryActivity" 158 android:targetActivity="DialtactsActivity" 159 > 160 <intent-filter> 161 <action android:name="android.intent.action.MAIN" /> 162 <category android:name="android.intent.category.DEFAULT" /> 163 </intent-filter> 164 </activity-alias> 165 166 <!-- The actual list of contacts, usually embedded in ContactsActivity --> 167 <activity android:name="ContactsListActivity" 168 android:label="@string/contactsList" 169 android:clearTaskOnLaunch="true" 170 > 171 <intent-filter> 172 <action android:name="com.android.contacts.action.LIST_DEFAULT" /> 173 <category android:name="android.intent.category.DEFAULT" /> 174 <category android:name="android.intent.category.TAB" /> 175 </intent-filter> 176 177 <intent-filter> 178 <action android:name="com.android.contacts.action.LIST_CONTACTS" /> 179 <category android:name="android.intent.category.DEFAULT" /> 180 <category android:name="android.intent.category.TAB" /> 181 </intent-filter> 182 183 <intent-filter> 184 <action android:name="com.android.contacts.action.LIST_ALL_CONTACTS" /> 185 <category android:name="android.intent.category.DEFAULT" /> 186 <category android:name="android.intent.category.TAB" /> 187 </intent-filter> 188 189 <intent-filter> 190 <action android:name="com.android.contacts.action.LIST_CONTACTS_WITH_PHONES" /> 191 <category android:name="android.intent.category.DEFAULT" /> 192 <category android:name="android.intent.category.TAB" /> 193 </intent-filter> 194 195 <intent-filter android:label="@string/starredList"> 196 <action android:name="com.android.contacts.action.LIST_STARRED" /> 197 <category android:name="android.intent.category.DEFAULT" /> 198 <category android:name="android.intent.category.TAB" /> 199 </intent-filter> 200 201 <intent-filter android:label="@string/frequentList"> 202 <action android:name="com.android.contacts.action.LIST_FREQUENT" /> 203 <category android:name="android.intent.category.DEFAULT" /> 204 <category android:name="android.intent.category.TAB" /> 205 </intent-filter> 206 207 <intent-filter android:label="@string/strequentList"> 208 <action android:name="com.android.contacts.action.LIST_STREQUENT" /> 209 <category android:name="android.intent.category.DEFAULT" /> 210 <category android:name="android.intent.category.TAB" /> 211 </intent-filter> 212 213 <intent-filter> 214 <action android:name="android.intent.action.INSERT_OR_EDIT" /> 215 <category android:name="android.intent.category.DEFAULT" /> 216 <data android:mimeType="vnd.android.cursor.item/person" /> 217 <data android:mimeType="vnd.android.cursor.item/contact" /> 218 <data android:mimeType="vnd.android.cursor.item/raw_contact" /> 219 </intent-filter> 220 221 <intent-filter> 222 <action android:name="android.intent.action.PICK" /> 223 <category android:name="android.intent.category.DEFAULT" /> 224 <data android:mimeType="vnd.android.cursor.dir/contact" android:host="com.android.contacts" /> 225 <data android:mimeType="vnd.android.cursor.dir/person" android:host="contacts" /> 226 <data android:mimeType="vnd.android.cursor.dir/phone_v2" android:host="com.android.contacts" /> 227 <data android:mimeType="vnd.android.cursor.dir/phone" android:host="contacts" /> 228 <data android:mimeType="vnd.android.cursor.dir/postal-address_v2" android:host="com.android.contacts" /> 229 <data android:mimeType="vnd.android.cursor.dir/postal-address" android:host="contacts" /> 230 </intent-filter> 231 232 <intent-filter> 233 <action android:name="android.intent.action.GET_CONTENT" /> 234 <category android:name="android.intent.category.DEFAULT" /> 235 <data android:mimeType="vnd.android.cursor.item/contact" android:host="com.android.contacts" /> 236 <data android:mimeType="vnd.android.cursor.item/person" android:host="contacts" /> 237 <data android:mimeType="vnd.android.cursor.item/phone_v2" android:host="com.android.contacts" /> 238 <data android:mimeType="vnd.android.cursor.item/phone" android:host="contacts" /> 239 <data android:mimeType="vnd.android.cursor.item/postal-address_v2" android:host="com.android.contacts" /> 240 <data android:mimeType="vnd.android.cursor.item/postal-address" android:host="contacts" /> 241 </intent-filter> 242 243 </activity> 244 245 <!-- An activity for joining contacts --> 246 <activity android:name="ContactsListActivity$JoinContactActivity" 247 android:theme="@style/TallTitleBarTheme" 248 android:clearTaskOnLaunch="true" 249 > 250 <intent-filter> 251 <action android:name="com.android.contacts.action.JOIN_AGGREGATE" /> 252 <category android:name="android.intent.category.DEFAULT" /> 253 </intent-filter> 254 </activity> 255 256 <!-- The contacts search/filter UI --> 257 <activity android:name="ContactsListActivity$ContactsSearchActivity" 258 android:theme="@style/ContactsSearchTheme" 259 android:windowSoftInputMode="stateAlwaysVisible|adjustPan" 260 > 261 <intent-filter> 262 <action android:name="com.android.contacts.action.FILTER_CONTACTS" /> 263 <category android:name="android.intent.category.DEFAULT" /> 264 <data android:mimeType="vnd.android.cursor.dir/contact" android:host="com.android.contacts" /> 265 </intent-filter> 266 </activity> 267 268 <!-- The contacts search/filter UI --> 269 <activity android:name="SearchResultsActivity" 270 android:theme="@style/TallTitleBarTheme" 271 android:label="@string/contactsList" 272 > 273 <intent-filter> 274 <action android:name="android.intent.action.SEARCH" /> 275 <category android:name="android.intent.category.DEFAULT" /> 276 </intent-filter> 277 278 <meta-data android:name="android.app.searchable" 279 android:resource="@xml/searchable" 280 /> 281 </activity> 282 283 <!-- Used to select display and sync groups --> 284 <activity android:name=".ui.ContactsPreferencesActivity" android:label="@string/displayGroups" /> 285 286 <activity 287 android:name=".ui.ShowOrCreateActivity" 288 android:theme="@style/FullyTranslucent"> 289 290 <intent-filter> 291 <action android:name="com.android.contacts.action.SHOW_OR_CREATE_CONTACT" /> 292 <category android:name="android.intent.category.DEFAULT" /> 293 <data android:scheme="mailto" /> 294 <data android:scheme="tel" /> 295 </intent-filter> 296 </activity> 297 298 <!-- Used to show QuickContact window over a translucent activity, which is a 299 temporary hack until we add better framework support. --> 300 <activity 301 android:name=".ui.QuickContactActivity" 302 android:theme="@style/FullyTranslucent.QuickContact" 303 android:launchMode="singleTop" 304 android:excludeFromRecents="true" 305 android:taskAffinity="android.task.quickcontact" 306 android:windowSoftInputMode="stateUnchanged" 307 > 308 309 <intent-filter> 310 <action android:name="com.android.contacts.action.QUICK_CONTACT" /> 311 <category android:name="android.intent.category.DEFAULT" /> 312 <data android:mimeType="vnd.android.cursor.item/contact" android:host="com.android.contacts" /> 313 <data android:mimeType="vnd.android.cursor.item/person" android:host="contacts" /> 314 </intent-filter> 315 </activity> 316 317 <activity-alias android:name="ContactShortcut" 318 android:targetActivity="ContactsListActivity" 319 android:label="@string/shortcutContact" 320 android:icon="@drawable/ic_launcher_shortcut_contact"> 321 322 <intent-filter> 323 <action android:name="android.intent.action.CREATE_SHORTCUT" /> 324 <category android:name="android.intent.category.DEFAULT" /> 325 </intent-filter> 326 327 </activity-alias> 328 329 <activity-alias android:name="alias.DialShortcut" 330 android:targetActivity="ContactsListActivity" 331 android:label="@string/shortcutDialContact" 332 android:icon="@drawable/ic_launcher_shortcut_directdial"> 333 334 <intent-filter> 335 <action android:name="android.intent.action.CREATE_SHORTCUT" /> 336 <category android:name="android.intent.category.DEFAULT" /> 337 <category android:name="android.intent.category.CAR_MODE" /> 338 </intent-filter> 339 340 </activity-alias> 341 342 <activity-alias android:name="alias.MessageShortcut" 343 android:targetActivity="ContactsListActivity" 344 android:label="@string/shortcutMessageContact" 345 android:icon="@drawable/ic_launcher_shortcut_directmessage"> 346 347 <intent-filter> 348 <action android:name="android.intent.action.CREATE_SHORTCUT" /> 349 <category android:name="android.intent.category.DEFAULT" /> 350 </intent-filter> 351 352 </activity-alias> 353 354 <activity android:name="CallDetailActivity" 355 android:label="@string/callDetailTitle" 356 android:theme="@style/TallTitleBarTheme" 357 > 358 <intent-filter> 359 <action android:name="android.intent.action.VIEW" /> 360 <category android:name="android.intent.category.DEFAULT" /> 361 <data android:mimeType="vnd.android.cursor.item/calls" /> 362 </intent-filter> 363 </activity> 364 365 <!-- Views the details of a single contact --> 366 <activity android:name="ViewContactActivity" 367 android:label="@string/viewContactTitle" 368 android:theme="@style/TallTitleBarTheme"> 369 370 <intent-filter android:label="@string/viewContactDesription"> 371 <action android:name="android.intent.action.VIEW" /> 372 <category android:name="android.intent.category.DEFAULT" /> 373 <data android:mimeType="vnd.android.cursor.item/person" android:host="contacts" /> 374 <data android:mimeType="vnd.android.cursor.item/contact" android:host="com.android.contacts" /> 375 <data android:mimeType="vnd.android.cursor.item/raw_contact" android:host="com.android.contacts" /> 376 </intent-filter> 377 </activity> 378 379 <!-- Edit or insert details for a contact --> 380 <activity 381 android:name=".ui.EditContactActivity" 382 android:windowSoftInputMode="stateHidden|adjustResize"> 383 384 <intent-filter android:label="@string/editContactDescription"> 385 <action android:name="android.intent.action.EDIT" /> 386 <category android:name="android.intent.category.DEFAULT" /> 387 <data android:mimeType="vnd.android.cursor.item/person" android:host="contacts" /> 388 <data android:mimeType="vnd.android.cursor.item/contact" android:host="com.android.contacts" /> 389 <data android:mimeType="vnd.android.cursor.item/raw_contact" android:host="com.android.contacts" /> 390 </intent-filter> 391 392 <intent-filter android:label="@string/insertContactDescription"> 393 <action android:name="android.intent.action.INSERT" /> 394 <category android:name="android.intent.category.DEFAULT" /> 395 <data android:mimeType="vnd.android.cursor.dir/person" /> 396 <data android:mimeType="vnd.android.cursor.dir/contact" /> 397 <data android:mimeType="vnd.android.cursor.dir/raw_contact" /> 398 </intent-filter> 399 400 </activity> 401 402 <!-- Stub service used to keep our process alive long enough for 403 background threads to finish their operations. --> 404 <service 405 android:name=".util.EmptyService" 406 android:exported="false" /> 407 408 <!-- Views the details of a single contact --> 409 <activity android:name="ContactOptionsActivity" 410 android:label="@string/contactOptionsTitle" 411 > 412 <intent-filter> 413 <action android:name="android.intent.action.EDIT" /> 414 <category android:name="android.intent.category.DEFAULT" /> 415 </intent-filter> 416 </activity> 417 418 <!-- Attaches a photo to a contact. Started from external applications --> 419 <activity android:name="AttachImage" 420 android:label="@string/attachToContact" 421 android:taskAffinity=""> 422 <intent-filter> 423 <action android:name="android.intent.action.ATTACH_DATA" /> 424 <data android:mimeType="image/*" /> 425 <category android:name="android.intent.category.DEFAULT" /> 426 </intent-filter> 427 /> 428 </activity> 429 430 <!-- Makes .ContactsListActivity the search target for any activity in Contacts --> 431 <meta-data 432 android:name="android.app.default_searchable" 433 android:value=".ContactsListActivity" /> 434 435 436 <!-- LIVE FOLDERS --> 437 <activity 438 android:name=".ContactsLiveFolders$AllContacts" 439 android:label="@string/liveFolderAll" 440 android:icon="@drawable/ic_launcher_folder_live_contacts"> 441 <intent-filter> 442 <action android:name="android.intent.action.CREATE_LIVE_FOLDER" /> 443 <category android:name="android.intent.category.DEFAULT" /> 444 </intent-filter> 445 </activity> 446 447 <activity 448 android:name=".ContactsLiveFolders$StarredContacts" 449 android:label="@string/liveFolderFavorites" 450 android:icon="@drawable/ic_launcher_folder_live_contacts_starred"> 451 <intent-filter> 452 <action android:name="android.intent.action.CREATE_LIVE_FOLDER" /> 453 <category android:name="android.intent.category.DEFAULT" /> 454 </intent-filter> 455 </activity> 456 457 <activity 458 android:name=".ContactsLiveFolders$PhoneContacts" 459 android:label="@string/liveFolderPhone" 460 android:icon="@drawable/ic_launcher_folder_live_contacts_phone"> 461 <intent-filter> 462 <action android:name="android.intent.action.CREATE_LIVE_FOLDER" /> 463 <category android:name="android.intent.category.DEFAULT" /> 464 </intent-filter> 465 </activity> 466 467 <activity android:name=".ImportVCardActivity" 468 android:theme="@style/BackgroundOnly"> 469 <intent-filter> 470 <action android:name="android.intent.action.VIEW" /> 471 <data android:mimeType="text/directory" /> 472 <data android:mimeType="text/x-vcard" /> 473 <category android:name="android.intent.category.DEFAULT" /> 474 </intent-filter> 475 </activity> 476 477 <activity android:name=".ExportVCardActivity" 478 android:theme="@style/BackgroundOnly" /> 479 </application> 480 </manifest> 481