1/* 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 17package android.provider; 18 19import com.android.internal.R; 20 21import android.content.ContentResolver; 22import android.content.ContentUris; 23import android.content.ContentValues; 24import android.content.Context; 25import android.database.Cursor; 26import android.graphics.Bitmap; 27import android.graphics.BitmapFactory; 28import android.net.Uri; 29import android.os.Build; 30import android.text.TextUtils; 31import android.util.Log; 32import android.widget.ImageView; 33 34import java.io.ByteArrayInputStream; 35import java.io.InputStream; 36 37/** 38 * The Contacts provider stores all information about contacts. 39 * 40 * @deprecated The APIs have been superseded by {@link ContactsContract}. The newer APIs allow 41 * access multiple accounts and support aggregation of similar contacts. These APIs continue to 42 * work but will only return data for the first Google account created, which matches the original 43 * behavior. 44 */ 45@Deprecated 46public class Contacts { 47 private static final String TAG = "Contacts"; 48 49 /** 50 * @deprecated see {@link android.provider.ContactsContract} 51 */ 52 @Deprecated 53 public static final String AUTHORITY = "contacts"; 54 55 /** 56 * The content:// style URL for this provider 57 * @deprecated see {@link android.provider.ContactsContract} 58 */ 59 @Deprecated 60 public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY); 61 62 /** 63 * Signifies an email address row that is stored in the ContactMethods table 64 * @deprecated see {@link android.provider.ContactsContract} 65 */ 66 @Deprecated 67 public static final int KIND_EMAIL = 1; 68 /** 69 * Signifies a postal address row that is stored in the ContactMethods table 70 * @deprecated see {@link android.provider.ContactsContract} 71 */ 72 @Deprecated 73 public static final int KIND_POSTAL = 2; 74 /** 75 * Signifies an IM address row that is stored in the ContactMethods table 76 * @deprecated see {@link android.provider.ContactsContract} 77 */ 78 @Deprecated 79 public static final int KIND_IM = 3; 80 /** 81 * Signifies an Organization row that is stored in the Organizations table 82 * @deprecated see {@link android.provider.ContactsContract} 83 */ 84 @Deprecated 85 public static final int KIND_ORGANIZATION = 4; 86 /** 87 * Signifies an Phone row that is stored in the Phones table 88 * @deprecated see {@link android.provider.ContactsContract} 89 */ 90 @Deprecated 91 public static final int KIND_PHONE = 5; 92 93 /** 94 * no public constructor since this is a utility class 95 */ 96 private Contacts() {} 97 98 /** 99 * Columns from the Settings table that other columns join into themselves. 100 * @deprecated see {@link android.provider.ContactsContract} 101 */ 102 @Deprecated 103 public interface SettingsColumns { 104 /** 105 * The _SYNC_ACCOUNT to which this setting corresponds. This may be null. 106 * <P>Type: TEXT</P> 107 * @deprecated see {@link android.provider.ContactsContract} 108 */ 109 @Deprecated 110 public static final String _SYNC_ACCOUNT = "_sync_account"; 111 112 /** 113 * The _SYNC_ACCOUNT_TYPE to which this setting corresponds. This may be null. 114 * <P>Type: TEXT</P> 115 * @deprecated see {@link android.provider.ContactsContract} 116 */ 117 @Deprecated 118 public static final String _SYNC_ACCOUNT_TYPE = "_sync_account_type"; 119 120 /** 121 * The key of this setting. 122 * <P>Type: TEXT</P> 123 * @deprecated see {@link android.provider.ContactsContract} 124 */ 125 @Deprecated 126 public static final String KEY = "key"; 127 128 /** 129 * The value of this setting. 130 * <P>Type: TEXT</P> 131 * @deprecated see {@link android.provider.ContactsContract} 132 */ 133 @Deprecated 134 public static final String VALUE = "value"; 135 } 136 137 /** 138 * The settings over all of the people 139 * @deprecated see {@link android.provider.ContactsContract} 140 */ 141 @Deprecated 142 public static final class Settings implements BaseColumns, SettingsColumns { 143 /** 144 * no public constructor since this is a utility class 145 */ 146 private Settings() {} 147 148 /** 149 * The content:// style URL for this table 150 * @deprecated see {@link android.provider.ContactsContract} 151 */ 152 @Deprecated 153 public static final Uri CONTENT_URI = 154 Uri.parse("content://contacts/settings"); 155 156 /** 157 * The directory twig for this sub-table 158 * @deprecated see {@link android.provider.ContactsContract} 159 */ 160 @Deprecated 161 public static final String CONTENT_DIRECTORY = "settings"; 162 163 /** 164 * The default sort order for this table 165 * @deprecated see {@link android.provider.ContactsContract} 166 */ 167 @Deprecated 168 public static final String DEFAULT_SORT_ORDER = "key ASC"; 169 170 /** 171 * A setting that is used to indicate if we should sync down all groups for the 172 * specified account. For this setting the _SYNC_ACCOUNT column must be set. 173 * If this isn't set then we will only sync the groups whose SHOULD_SYNC column 174 * is set to true. 175 * <p> 176 * This is a boolean setting. It is true if it is set and it is anything other than the 177 * emptry string or "0". 178 * @deprecated see {@link android.provider.ContactsContract} 179 */ 180 @Deprecated 181 public static final String SYNC_EVERYTHING = "syncEverything"; 182 183 /** 184 * @deprecated see {@link android.provider.ContactsContract} 185 */ 186 @Deprecated 187 public static String getSetting(ContentResolver cr, String account, String key) { 188 // For now we only support a single account and the UI doesn't know what 189 // the account name is, so we're using a global setting for SYNC_EVERYTHING. 190 // Some day when we add multiple accounts to the UI this should honor the account 191 // that was asked for. 192 String selectString; 193 String[] selectArgs; 194 if (false) { 195 selectString = (account == null) 196 ? "_sync_account is null AND key=?" 197 : "_sync_account=? AND key=?"; 198// : "_sync_account=? AND _sync_account_type=? AND key=?"; 199 selectArgs = (account == null) 200 ? new String[]{key} 201 : new String[]{account, key}; 202 } else { 203 selectString = "key=?"; 204 selectArgs = new String[] {key}; 205 } 206 Cursor cursor = cr.query(Settings.CONTENT_URI, new String[]{VALUE}, 207 selectString, selectArgs, null); 208 try { 209 if (!cursor.moveToNext()) return null; 210 return cursor.getString(0); 211 } finally { 212 cursor.close(); 213 } 214 } 215 216 /** 217 * @deprecated see {@link android.provider.ContactsContract} 218 */ 219 @Deprecated 220 public static void setSetting(ContentResolver cr, String account, String key, 221 String value) { 222 ContentValues values = new ContentValues(); 223 // For now we only support a single account and the UI doesn't know what 224 // the account name is, so we're using a global setting for SYNC_EVERYTHING. 225 // Some day when we add multiple accounts to the UI this should honor the account 226 // that was asked for. 227 //values.put(_SYNC_ACCOUNT, account.mName); 228 //values.put(_SYNC_ACCOUNT_TYPE, account.mType); 229 values.put(KEY, key); 230 values.put(VALUE, value); 231 cr.update(Settings.CONTENT_URI, values, null, null); 232 } 233 } 234 235 /** 236 * Columns from the People table that other tables join into themselves. 237 * @deprecated see {@link android.provider.ContactsContract} 238 */ 239 @Deprecated 240 public interface PeopleColumns { 241 /** 242 * The person's name. 243 * <P>Type: TEXT</P> 244 * @deprecated see {@link android.provider.ContactsContract} 245 */ 246 @Deprecated 247 public static final String NAME = "name"; 248 249 /** 250 * Phonetic equivalent of the person's name, in a locale-dependent 251 * character set (e.g. hiragana for Japanese). 252 * Used for pronunciation and/or collation in some languages. 253 * <p>Type: TEXT</P> 254 * @deprecated see {@link android.provider.ContactsContract} 255 */ 256 @Deprecated 257 public static final String PHONETIC_NAME = "phonetic_name"; 258 259 /** 260 * The display name. If name is not null name, else if number is not null number, 261 * else if email is not null email. 262 * <P>Type: TEXT</P> 263 * @deprecated see {@link android.provider.ContactsContract} 264 */ 265 @Deprecated 266 public static final String DISPLAY_NAME = "display_name"; 267 268 /** 269 * The field for sorting list phonetically. The content of this field 270 * may not be human readable but phonetically sortable. 271 * <P>Type: TEXT</p> 272 * @hide Used only in Contacts application for now. 273 * @deprecated see {@link android.provider.ContactsContract} 274 */ 275 @Deprecated 276 public static final String SORT_STRING = "sort_string"; 277 278 /** 279 * Notes about the person. 280 * <P>Type: TEXT</P> 281 * @deprecated see {@link android.provider.ContactsContract} 282 */ 283 @Deprecated 284 public static final String NOTES = "notes"; 285 286 /** 287 * The number of times a person has been contacted 288 * <P>Type: INTEGER</P> 289 * @deprecated see {@link android.provider.ContactsContract} 290 */ 291 @Deprecated 292 public static final String TIMES_CONTACTED = "times_contacted"; 293 294 /** 295 * The last time a person was contacted. 296 * <P>Type: INTEGER</P> 297 * @deprecated see {@link android.provider.ContactsContract} 298 */ 299 @Deprecated 300 public static final String LAST_TIME_CONTACTED = "last_time_contacted"; 301 302 /** 303 * A custom ringtone associated with a person. Not always present. 304 * <P>Type: TEXT (URI to the ringtone)</P> 305 * @deprecated see {@link android.provider.ContactsContract} 306 */ 307 @Deprecated 308 public static final String CUSTOM_RINGTONE = "custom_ringtone"; 309 310 /** 311 * Whether the person should always be sent to voicemail. Not always 312 * present. 313 * <P>Type: INTEGER (0 for false, 1 for true)</P> 314 * @deprecated see {@link android.provider.ContactsContract} 315 */ 316 @Deprecated 317 public static final String SEND_TO_VOICEMAIL = "send_to_voicemail"; 318 319 /** 320 * Is the contact starred? 321 * <P>Type: INTEGER (boolean)</P> 322 * @deprecated see {@link android.provider.ContactsContract} 323 */ 324 @Deprecated 325 public static final String STARRED = "starred"; 326 327 /** 328 * The server version of the photo 329 * <P>Type: TEXT (the version number portion of the photo URI)</P> 330 * @deprecated see {@link android.provider.ContactsContract} 331 */ 332 @Deprecated 333 public static final String PHOTO_VERSION = "photo_version"; 334 } 335 336 /** 337 * This table contains people. 338 * @deprecated see {@link android.provider.ContactsContract} 339 */ 340 @Deprecated 341 public static final class People implements BaseColumns, SyncConstValue, PeopleColumns, 342 PhonesColumns, PresenceColumns { 343 /** 344 * no public constructor since this is a utility class 345 * @deprecated see {@link android.provider.ContactsContract} 346 */ 347 private People() {} 348 349 /** 350 * The content:// style URL for this table 351 * @deprecated see {@link android.provider.ContactsContract} 352 */ 353 @Deprecated 354 public static final Uri CONTENT_URI = 355 Uri.parse("content://contacts/people"); 356 357 /** 358 * The content:// style URL for filtering people by name. The filter 359 * argument should be passed as an additional path segment after this URI. 360 * @deprecated see {@link android.provider.ContactsContract} 361 */ 362 @Deprecated 363 public static final Uri CONTENT_FILTER_URI = 364 Uri.parse("content://contacts/people/filter"); 365 366 /** 367 * The content:// style URL for the table that holds the deleted 368 * contacts. 369 * @deprecated see {@link android.provider.ContactsContract} 370 */ 371 @Deprecated 372 public static final Uri DELETED_CONTENT_URI = 373 Uri.parse("content://contacts/deleted_people"); 374 375 /** 376 * The content:// style URL for filtering people that have a specific 377 * E-mail or IM address. The filter argument should be passed as an 378 * additional path segment after this URI. This matches any people with 379 * at least one E-mail or IM {@link ContactMethods} that match the 380 * filter. 381 * 382 * Not exposed because we expect significant changes in the contacts 383 * schema and do not want to have to support this. 384 * @hide 385 * @deprecated see {@link android.provider.ContactsContract} 386 */ 387 @Deprecated 388 public static final Uri WITH_EMAIL_OR_IM_FILTER_URI = 389 Uri.parse("content://contacts/people/with_email_or_im_filter"); 390 391 /** 392 * The MIME type of {@link #CONTENT_URI} providing a directory of 393 * people. 394 * @deprecated see {@link android.provider.ContactsContract} 395 */ 396 @Deprecated 397 public static final String CONTENT_TYPE = "vnd.android.cursor.dir/person"; 398 399 /** 400 * The MIME type of a {@link #CONTENT_URI} subdirectory of a single 401 * person. 402 * @deprecated see {@link android.provider.ContactsContract} 403 */ 404 @Deprecated 405 public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/person"; 406 407 /** 408 * The default sort order for this table 409 * @deprecated see {@link android.provider.ContactsContract} 410 */ 411 @Deprecated 412 public static final String DEFAULT_SORT_ORDER = People.NAME + " ASC"; 413 414 /** 415 * The ID of the persons preferred phone number. 416 * <P>Type: INTEGER (foreign key to phones table on the _ID field)</P> 417 * @deprecated see {@link android.provider.ContactsContract} 418 */ 419 @Deprecated 420 public static final String PRIMARY_PHONE_ID = "primary_phone"; 421 422 /** 423 * The ID of the persons preferred email. 424 * <P>Type: INTEGER (foreign key to contact_methods table on the 425 * _ID field)</P> 426 * @deprecated see {@link android.provider.ContactsContract} 427 */ 428 @Deprecated 429 public static final String PRIMARY_EMAIL_ID = "primary_email"; 430 431 /** 432 * The ID of the persons preferred organization. 433 * <P>Type: INTEGER (foreign key to organizations table on the 434 * _ID field)</P> 435 * @deprecated see {@link android.provider.ContactsContract} 436 */ 437 @Deprecated 438 public static final String PRIMARY_ORGANIZATION_ID = "primary_organization"; 439 440 /** 441 * Mark a person as having been contacted. 442 * 443 * @param resolver the ContentResolver to use 444 * @param personId the person who was contacted 445 * @deprecated see {@link android.provider.ContactsContract} 446 */ 447 @Deprecated 448 public static void markAsContacted(ContentResolver resolver, long personId) { 449 Uri uri = ContentUris.withAppendedId(CONTENT_URI, personId); 450 uri = Uri.withAppendedPath(uri, "update_contact_time"); 451 ContentValues values = new ContentValues(); 452 // There is a trigger in place that will update TIMES_CONTACTED when 453 // LAST_TIME_CONTACTED is modified. 454 values.put(LAST_TIME_CONTACTED, System.currentTimeMillis()); 455 resolver.update(uri, values, null, null); 456 } 457 458 /** 459 * @hide Used in vCard parser code. 460 * @deprecated see {@link android.provider.ContactsContract} 461 */ 462 @Deprecated 463 public static long tryGetMyContactsGroupId(ContentResolver resolver) { 464 Cursor groupsCursor = resolver.query(Groups.CONTENT_URI, GROUPS_PROJECTION, 465 Groups.SYSTEM_ID + "='" + Groups.GROUP_MY_CONTACTS + "'", null, null); 466 if (groupsCursor != null) { 467 try { 468 if (groupsCursor.moveToFirst()) { 469 return groupsCursor.getLong(0); 470 } 471 } finally { 472 groupsCursor.close(); 473 } 474 } 475 return 0; 476 } 477 478 /** 479 * Adds a person to the My Contacts group. 480 * 481 * @param resolver the resolver to use 482 * @param personId the person to add to the group 483 * @return the URI of the group membership row 484 * @throws IllegalStateException if the My Contacts group can't be found 485 * @deprecated see {@link android.provider.ContactsContract} 486 */ 487 @Deprecated 488 public static Uri addToMyContactsGroup(ContentResolver resolver, long personId) { 489 long groupId = tryGetMyContactsGroupId(resolver); 490 if (groupId == 0) { 491 throw new IllegalStateException("Failed to find the My Contacts group"); 492 } 493 494 return addToGroup(resolver, personId, groupId); 495 } 496 497 /** 498 * Adds a person to a group referred to by name. 499 * 500 * @param resolver the resolver to use 501 * @param personId the person to add to the group 502 * @param groupName the name of the group to add the contact to 503 * @return the URI of the group membership row 504 * @throws IllegalStateException if the group can't be found 505 * @deprecated see {@link android.provider.ContactsContract} 506 */ 507 @Deprecated 508 public static Uri addToGroup(ContentResolver resolver, long personId, String groupName) { 509 long groupId = 0; 510 Cursor groupsCursor = resolver.query(Groups.CONTENT_URI, GROUPS_PROJECTION, 511 Groups.NAME + "=?", new String[] { groupName }, null); 512 if (groupsCursor != null) { 513 try { 514 if (groupsCursor.moveToFirst()) { 515 groupId = groupsCursor.getLong(0); 516 } 517 } finally { 518 groupsCursor.close(); 519 } 520 } 521 522 if (groupId == 0) { 523 throw new IllegalStateException("Failed to find the My Contacts group"); 524 } 525 526 return addToGroup(resolver, personId, groupId); 527 } 528 529 /** 530 * Adds a person to a group. 531 * 532 * @param resolver the resolver to use 533 * @param personId the person to add to the group 534 * @param groupId the group to add the person to 535 * @return the URI of the group membership row 536 * @deprecated see {@link android.provider.ContactsContract} 537 */ 538 @Deprecated 539 public static Uri addToGroup(ContentResolver resolver, long personId, long groupId) { 540 ContentValues values = new ContentValues(); 541 values.put(GroupMembership.PERSON_ID, personId); 542 values.put(GroupMembership.GROUP_ID, groupId); 543 return resolver.insert(GroupMembership.CONTENT_URI, values); 544 } 545 546 private static final String[] GROUPS_PROJECTION = new String[] { 547 Groups._ID, 548 }; 549 550 /** 551 * Creates a new contacts and adds it to the "My Contacts" group. 552 * 553 * @param resolver the ContentResolver to use 554 * @param values the values to use when creating the contact 555 * @return the URI of the contact, or null if the operation fails 556 * @deprecated see {@link android.provider.ContactsContract} 557 */ 558 @Deprecated 559 public static Uri createPersonInMyContactsGroup(ContentResolver resolver, 560 ContentValues values) { 561 562 Uri contactUri = resolver.insert(People.CONTENT_URI, values); 563 if (contactUri == null) { 564 Log.e(TAG, "Failed to create the contact"); 565 return null; 566 } 567 568 if (addToMyContactsGroup(resolver, ContentUris.parseId(contactUri)) == null) { 569 resolver.delete(contactUri, null, null); 570 return null; 571 } 572 return contactUri; 573 } 574 575 /** 576 * @deprecated see {@link android.provider.ContactsContract} 577 */ 578 @Deprecated 579 public static Cursor queryGroups(ContentResolver resolver, long person) { 580 return resolver.query(GroupMembership.CONTENT_URI, null, "person=?", 581 new String[]{String.valueOf(person)}, Groups.DEFAULT_SORT_ORDER); 582 } 583 584 /** 585 * Set the photo for this person. data may be null 586 * @param cr the ContentResolver to use 587 * @param person the Uri of the person whose photo is to be updated 588 * @param data the byte[] that represents the photo 589 * @deprecated see {@link android.provider.ContactsContract} 590 */ 591 @Deprecated 592 public static void setPhotoData(ContentResolver cr, Uri person, byte[] data) { 593 Uri photoUri = Uri.withAppendedPath(person, Contacts.Photos.CONTENT_DIRECTORY); 594 ContentValues values = new ContentValues(); 595 values.put(Photos.DATA, data); 596 cr.update(photoUri, values, null, null); 597 } 598 599 /** 600 * Opens an InputStream for the person's photo and returns the photo as a Bitmap. 601 * If the person's photo isn't present returns the placeholderImageResource instead. 602 * @param person the person whose photo should be used 603 * @deprecated see {@link android.provider.ContactsContract} 604 */ 605 @Deprecated 606 public static InputStream openContactPhotoInputStream(ContentResolver cr, Uri person) { 607 Uri photoUri = Uri.withAppendedPath(person, Contacts.Photos.CONTENT_DIRECTORY); 608 Cursor cursor = cr.query(photoUri, new String[]{Photos.DATA}, null, null, null); 609 try { 610 if (cursor == null || !cursor.moveToNext()) { 611 return null; 612 } 613 byte[] data = cursor.getBlob(0); 614 if (data == null) { 615 return null; 616 } 617 return new ByteArrayInputStream(data); 618 } finally { 619 if (cursor != null) cursor.close(); 620 } 621 } 622 623 /** 624 * Opens an InputStream for the person's photo and returns the photo as a Bitmap. 625 * If the person's photo isn't present returns the placeholderImageResource instead. 626 * @param context the Context 627 * @param person the person whose photo should be used 628 * @param placeholderImageResource the image resource to use if the person doesn't 629 * have a photo 630 * @param options the decoding options, can be set to null 631 * @deprecated see {@link android.provider.ContactsContract} 632 */ 633 @Deprecated 634 public static Bitmap loadContactPhoto(Context context, Uri person, 635 int placeholderImageResource, BitmapFactory.Options options) { 636 if (person == null) { 637 return loadPlaceholderPhoto(placeholderImageResource, context, options); 638 } 639 640 InputStream stream = openContactPhotoInputStream(context.getContentResolver(), person); 641 Bitmap bm = stream != null ? BitmapFactory.decodeStream(stream, null, options) : null; 642 if (bm == null) { 643 bm = loadPlaceholderPhoto(placeholderImageResource, context, options); 644 } 645 return bm; 646 } 647 648 private static Bitmap loadPlaceholderPhoto(int placeholderImageResource, Context context, 649 BitmapFactory.Options options) { 650 if (placeholderImageResource == 0) { 651 return null; 652 } 653 return BitmapFactory.decodeResource(context.getResources(), 654 placeholderImageResource, options); 655 } 656 657 /** 658 * A sub directory of a single person that contains all of their Phones. 659 * @deprecated see {@link android.provider.ContactsContract} 660 */ 661 @Deprecated 662 public static final class Phones implements BaseColumns, PhonesColumns, 663 PeopleColumns { 664 /** 665 * no public constructor since this is a utility class 666 */ 667 private Phones() {} 668 669 /** 670 * The directory twig for this sub-table 671 * @deprecated see {@link android.provider.ContactsContract} 672 */ 673 @Deprecated 674 public static final String CONTENT_DIRECTORY = "phones"; 675 676 /** 677 * The default sort order for this table 678 * @deprecated see {@link android.provider.ContactsContract} 679 */ 680 @Deprecated 681 public static final String DEFAULT_SORT_ORDER = "number ASC"; 682 } 683 684 /** 685 * A subdirectory of a single person that contains all of their 686 * ContactMethods. 687 * @deprecated see {@link android.provider.ContactsContract} 688 */ 689 @Deprecated 690 public static final class ContactMethods 691 implements BaseColumns, ContactMethodsColumns, PeopleColumns { 692 /** 693 * no public constructor since this is a utility class 694 */ 695 private ContactMethods() {} 696 697 /** 698 * The directory twig for this sub-table 699 * @deprecated see {@link android.provider.ContactsContract} 700 */ 701 @Deprecated 702 public static final String CONTENT_DIRECTORY = "contact_methods"; 703 704 /** 705 * The default sort order for this table 706 * @deprecated see {@link android.provider.ContactsContract} 707 */ 708 @Deprecated 709 public static final String DEFAULT_SORT_ORDER = "data ASC"; 710 } 711 712 /** 713 * The extensions for a person 714 * @deprecated see {@link android.provider.ContactsContract} 715 */ 716 @Deprecated 717 public static class Extensions implements BaseColumns, ExtensionsColumns { 718 /** 719 * no public constructor since this is a utility class 720 * @deprecated see {@link android.provider.ContactsContract} 721 */ 722 private Extensions() {} 723 724 /** 725 * The directory twig for this sub-table 726 * @deprecated see {@link android.provider.ContactsContract} 727 */ 728 @Deprecated 729 public static final String CONTENT_DIRECTORY = "extensions"; 730 731 /** 732 * The default sort order for this table 733 * @deprecated see {@link android.provider.ContactsContract} 734 */ 735 @Deprecated 736 public static final String DEFAULT_SORT_ORDER = "name ASC"; 737 738 /** 739 * The ID of the person this phone number is assigned to. 740 * <P>Type: INTEGER (long)</P> 741 * @deprecated see {@link android.provider.ContactsContract} 742 */ 743 @Deprecated 744 public static final String PERSON_ID = "person"; 745 } 746 } 747 748 /** 749 * Columns from the groups table. 750 * @deprecated see {@link android.provider.ContactsContract} 751 */ 752 @Deprecated 753 public interface GroupsColumns { 754 /** 755 * The group name. 756 * <P>Type: TEXT</P> 757 * @deprecated see {@link android.provider.ContactsContract} 758 */ 759 @Deprecated 760 public static final String NAME = "name"; 761 762 /** 763 * Notes about the group. 764 * <P>Type: TEXT</P> 765 * @deprecated see {@link android.provider.ContactsContract} 766 */ 767 @Deprecated 768 public static final String NOTES = "notes"; 769 770 /** 771 * Whether this group should be synced if the SYNC_EVERYTHING settings is false 772 * for this group's account. 773 * <P>Type: INTEGER (boolean)</P> 774 * @deprecated see {@link android.provider.ContactsContract} 775 */ 776 @Deprecated 777 public static final String SHOULD_SYNC = "should_sync"; 778 779 /** 780 * The ID of this group if it is a System Group, null otherwise. 781 * <P>Type: TEXT</P> 782 * @deprecated see {@link android.provider.ContactsContract} 783 */ 784 @Deprecated 785 public static final String SYSTEM_ID = "system_id"; 786 } 787 788 /** 789 * This table contains the groups for an account. 790 * @deprecated see {@link android.provider.ContactsContract} 791 */ 792 @Deprecated 793 public static final class Groups 794 implements BaseColumns, SyncConstValue, GroupsColumns { 795 /** 796 * no public constructor since this is a utility class 797 */ 798 private Groups() {} 799 800 /** 801 * The content:// style URL for this table 802 * @deprecated see {@link android.provider.ContactsContract} 803 */ 804 @Deprecated 805 public static final Uri CONTENT_URI = 806 Uri.parse("content://contacts/groups"); 807 808 /** 809 * The content:// style URL for the table that holds the deleted 810 * groups. 811 * @deprecated see {@link android.provider.ContactsContract} 812 */ 813 @Deprecated 814 public static final Uri DELETED_CONTENT_URI = 815 Uri.parse("content://contacts/deleted_groups"); 816 817 /** 818 * The MIME type of {@link #CONTENT_URI} providing a directory of 819 * groups. 820 * @deprecated see {@link android.provider.ContactsContract} 821 */ 822 @Deprecated 823 public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contactsgroup"; 824 825 /** 826 * The MIME type of a {@link #CONTENT_URI} subdirectory of a single 827 * group. 828 * @deprecated see {@link android.provider.ContactsContract} 829 */ 830 @Deprecated 831 public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contactsgroup"; 832 833 /** 834 * The default sort order for this table 835 * @deprecated see {@link android.provider.ContactsContract} 836 */ 837 @Deprecated 838 public static final String DEFAULT_SORT_ORDER = NAME + " ASC"; 839 840 /** 841 * @deprecated see {@link android.provider.ContactsContract} 842 */ 843 @Deprecated 844 public static final String GROUP_ANDROID_STARRED = "Starred in Android"; 845 846 /** 847 * The "My Contacts" system group. 848 * @deprecated see {@link android.provider.ContactsContract} 849 */ 850 @Deprecated 851 public static final String GROUP_MY_CONTACTS = "Contacts"; 852 } 853 854 /** 855 * Columns from the Phones table that other columns join into themselves. 856 * @deprecated see {@link android.provider.ContactsContract} 857 */ 858 @Deprecated 859 public interface PhonesColumns { 860 /** 861 * The type of the the phone number. 862 * <P>Type: INTEGER (one of the constants below)</P> 863 * @deprecated see {@link android.provider.ContactsContract} 864 */ 865 @Deprecated 866 public static final String TYPE = "type"; 867 868 /** 869 * @deprecated see {@link android.provider.ContactsContract} 870 */ 871 @Deprecated 872 public static final int TYPE_CUSTOM = 0; 873 /** 874 * @deprecated see {@link android.provider.ContactsContract} 875 */ 876 @Deprecated 877 public static final int TYPE_HOME = 1; 878 /** 879 * @deprecated see {@link android.provider.ContactsContract} 880 */ 881 @Deprecated 882 public static final int TYPE_MOBILE = 2; 883 /** 884 * @deprecated see {@link android.provider.ContactsContract} 885 */ 886 @Deprecated 887 public static final int TYPE_WORK = 3; 888 /** 889 * @deprecated see {@link android.provider.ContactsContract} 890 */ 891 @Deprecated 892 public static final int TYPE_FAX_WORK = 4; 893 /** 894 * @deprecated see {@link android.provider.ContactsContract} 895 */ 896 @Deprecated 897 public static final int TYPE_FAX_HOME = 5; 898 /** 899 * @deprecated see {@link android.provider.ContactsContract} 900 */ 901 @Deprecated 902 public static final int TYPE_PAGER = 6; 903 /** 904 * @deprecated see {@link android.provider.ContactsContract} 905 */ 906 @Deprecated 907 public static final int TYPE_OTHER = 7; 908 909 /** 910 * The user provided label for the phone number, only used if TYPE is TYPE_CUSTOM. 911 * <P>Type: TEXT</P> 912 * @deprecated see {@link android.provider.ContactsContract} 913 */ 914 @Deprecated 915 public static final String LABEL = "label"; 916 917 /** 918 * The phone number as the user entered it. 919 * <P>Type: TEXT</P> 920 * @deprecated see {@link android.provider.ContactsContract} 921 */ 922 @Deprecated 923 public static final String NUMBER = "number"; 924 925 /** 926 * The normalized phone number 927 * <P>Type: TEXT</P> 928 * @deprecated see {@link android.provider.ContactsContract} 929 */ 930 @Deprecated 931 public static final String NUMBER_KEY = "number_key"; 932 933 /** 934 * Whether this is the primary phone number 935 * <P>Type: INTEGER (if set, non-0 means true)</P> 936 * @deprecated see {@link android.provider.ContactsContract} 937 */ 938 @Deprecated 939 public static final String ISPRIMARY = "isprimary"; 940 } 941 942 /** 943 * This table stores phone numbers and a reference to the person that the 944 * contact method belongs to. Phone numbers are stored separately from 945 * other contact methods to make caller ID lookup more efficient. 946 * @deprecated see {@link android.provider.ContactsContract} 947 */ 948 @Deprecated 949 public static final class Phones 950 implements BaseColumns, PhonesColumns, PeopleColumns { 951 /** 952 * no public constructor since this is a utility class 953 */ 954 private Phones() {} 955 956 /** 957 * @deprecated see {@link android.provider.ContactsContract} 958 */ 959 @Deprecated 960 public static final CharSequence getDisplayLabel(Context context, int type, 961 CharSequence label, CharSequence[] labelArray) { 962 CharSequence display = ""; 963 964 if (type != People.Phones.TYPE_CUSTOM) { 965 CharSequence[] labels = labelArray != null? labelArray 966 : context.getResources().getTextArray( 967 com.android.internal.R.array.phoneTypes); 968 try { 969 display = labels[type - 1]; 970 } catch (ArrayIndexOutOfBoundsException e) { 971 display = labels[People.Phones.TYPE_HOME - 1]; 972 } 973 } else { 974 if (!TextUtils.isEmpty(label)) { 975 display = label; 976 } 977 } 978 return display; 979 } 980 981 /** 982 * @deprecated see {@link android.provider.ContactsContract} 983 */ 984 @Deprecated 985 public static final CharSequence getDisplayLabel(Context context, int type, 986 CharSequence label) { 987 return getDisplayLabel(context, type, label, null); 988 } 989 990 /** 991 * The content:// style URL for this table 992 * @deprecated see {@link android.provider.ContactsContract} 993 */ 994 @Deprecated 995 public static final Uri CONTENT_URI = 996 Uri.parse("content://contacts/phones"); 997 998 /** 999 * The content:// style URL for filtering phone numbers 1000 * @deprecated see {@link android.provider.ContactsContract} 1001 */ 1002 @Deprecated 1003 public static final Uri CONTENT_FILTER_URL = 1004 Uri.parse("content://contacts/phones/filter"); 1005 1006 /** 1007 * The MIME type of {@link #CONTENT_URI} providing a directory of 1008 * phones. 1009 * @deprecated see {@link android.provider.ContactsContract} 1010 */ 1011 @Deprecated 1012 public static final String CONTENT_TYPE = "vnd.android.cursor.dir/phone"; 1013 1014 /** 1015 * The MIME type of a {@link #CONTENT_URI} subdirectory of a single 1016 * phone. 1017 * @deprecated see {@link android.provider.ContactsContract} 1018 */ 1019 @Deprecated 1020 public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/phone"; 1021 1022 /** 1023 * The default sort order for this table 1024 * @deprecated see {@link android.provider.ContactsContract} 1025 */ 1026 @Deprecated 1027 public static final String DEFAULT_SORT_ORDER = "name ASC"; 1028 1029 /** 1030 * The ID of the person this phone number is assigned to. 1031 * <P>Type: INTEGER (long)</P> 1032 * @deprecated see {@link android.provider.ContactsContract} 1033 */ 1034 @Deprecated 1035 public static final String PERSON_ID = "person"; 1036 } 1037 1038 /** 1039 * @deprecated see {@link android.provider.ContactsContract} 1040 */ 1041 @Deprecated 1042 public static final class GroupMembership implements BaseColumns, GroupsColumns { 1043 /** 1044 * no public constructor since this is a utility class 1045 */ 1046 private GroupMembership() {} 1047 1048 /** 1049 * The content:// style URL for this table 1050 * @deprecated see {@link android.provider.ContactsContract} 1051 */ 1052 @Deprecated 1053 public static final Uri CONTENT_URI = 1054 Uri.parse("content://contacts/groupmembership"); 1055 1056 /** 1057 * The content:// style URL for this table 1058 * @deprecated see {@link android.provider.ContactsContract} 1059 */ 1060 @Deprecated 1061 public static final Uri RAW_CONTENT_URI = 1062 Uri.parse("content://contacts/groupmembershipraw"); 1063 1064 /** 1065 * The directory twig for this sub-table 1066 * @deprecated see {@link android.provider.ContactsContract} 1067 */ 1068 @Deprecated 1069 public static final String CONTENT_DIRECTORY = "groupmembership"; 1070 1071 /** 1072 * The MIME type of {@link #CONTENT_URI} providing a directory of all 1073 * person groups. 1074 * @deprecated see {@link android.provider.ContactsContract} 1075 */ 1076 @Deprecated 1077 public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contactsgroupmembership"; 1078 1079 /** 1080 * The MIME type of a {@link #CONTENT_URI} subdirectory of a single 1081 * person group. 1082 * @deprecated see {@link android.provider.ContactsContract} 1083 */ 1084 @Deprecated 1085 public static final String CONTENT_ITEM_TYPE = 1086 "vnd.android.cursor.item/contactsgroupmembership"; 1087 1088 /** 1089 * The default sort order for this table 1090 * @deprecated see {@link android.provider.ContactsContract} 1091 */ 1092 @Deprecated 1093 public static final String DEFAULT_SORT_ORDER = "group_id ASC"; 1094 1095 /** 1096 * The row id of the accounts group. 1097 * <P>Type: TEXT</P> 1098 * @deprecated see {@link android.provider.ContactsContract} 1099 */ 1100 @Deprecated 1101 public static final String GROUP_ID = "group_id"; 1102 1103 /** 1104 * The sync id of the group. 1105 * <P>Type: TEXT</P> 1106 * @deprecated see {@link android.provider.ContactsContract} 1107 */ 1108 @Deprecated 1109 public static final String GROUP_SYNC_ID = "group_sync_id"; 1110 1111 /** 1112 * The account of the group. 1113 * <P>Type: TEXT</P> 1114 * @deprecated see {@link android.provider.ContactsContract} 1115 */ 1116 @Deprecated 1117 public static final String GROUP_SYNC_ACCOUNT = "group_sync_account"; 1118 1119 /** 1120 * The account type of the group. 1121 * <P>Type: TEXT</P> 1122 * @deprecated see {@link android.provider.ContactsContract} 1123 */ 1124 @Deprecated 1125 public static final String GROUP_SYNC_ACCOUNT_TYPE = "group_sync_account_type"; 1126 1127 /** 1128 * The row id of the person. 1129 * <P>Type: TEXT</P> 1130 * @deprecated see {@link android.provider.ContactsContract} 1131 */ 1132 @Deprecated 1133 public static final String PERSON_ID = "person"; 1134 } 1135 1136 /** 1137 * Columns from the ContactMethods table that other tables join into 1138 * themseleves. 1139 * @deprecated see {@link android.provider.ContactsContract} 1140 */ 1141 @Deprecated 1142 public interface ContactMethodsColumns { 1143 /** 1144 * The kind of the the contact method. For example, email address, 1145 * postal address, etc. 1146 * <P>Type: INTEGER (one of the values below)</P> 1147 * @deprecated see {@link android.provider.ContactsContract} 1148 */ 1149 @Deprecated 1150 public static final String KIND = "kind"; 1151 1152 /** 1153 * The type of the contact method, must be one of the types below. 1154 * <P>Type: INTEGER (one of the values below)</P> 1155 * @deprecated see {@link android.provider.ContactsContract} 1156 */ 1157 @Deprecated 1158 public static final String TYPE = "type"; 1159 /** 1160 * @deprecated see {@link android.provider.ContactsContract} 1161 */ 1162 @Deprecated 1163 public static final int TYPE_CUSTOM = 0; 1164 /** 1165 * @deprecated see {@link android.provider.ContactsContract} 1166 */ 1167 @Deprecated 1168 public static final int TYPE_HOME = 1; 1169 /** 1170 * @deprecated see {@link android.provider.ContactsContract} 1171 */ 1172 @Deprecated 1173 public static final int TYPE_WORK = 2; 1174 /** 1175 * @deprecated see {@link android.provider.ContactsContract} 1176 */ 1177 @Deprecated 1178 public static final int TYPE_OTHER = 3; 1179 1180 /** 1181 * @hide This is temporal. TYPE_MOBILE should be added to TYPE in the future. 1182 * @deprecated see {@link android.provider.ContactsContract} 1183 */ 1184 @Deprecated 1185 public static final int MOBILE_EMAIL_TYPE_INDEX = 2; 1186 1187 /** 1188 * @hide This is temporal. TYPE_MOBILE should be added to TYPE in the future. 1189 * This is not "mobile" but "CELL" since vCard uses it for identifying mobile phone. 1190 * @deprecated see {@link android.provider.ContactsContract} 1191 */ 1192 @Deprecated 1193 public static final String MOBILE_EMAIL_TYPE_NAME = "_AUTO_CELL"; 1194 1195 /** 1196 * The user defined label for the the contact method. 1197 * <P>Type: TEXT</P> 1198 * @deprecated see {@link android.provider.ContactsContract} 1199 */ 1200 @Deprecated 1201 public static final String LABEL = "label"; 1202 1203 /** 1204 * The data for the contact method. 1205 * <P>Type: TEXT</P> 1206 * @deprecated see {@link android.provider.ContactsContract} 1207 */ 1208 @Deprecated 1209 public static final String DATA = "data"; 1210 1211 /** 1212 * Auxiliary data for the contact method. 1213 * <P>Type: TEXT</P> 1214 * @deprecated see {@link android.provider.ContactsContract} 1215 */ 1216 @Deprecated 1217 public static final String AUX_DATA = "aux_data"; 1218 1219 /** 1220 * Whether this is the primary organization 1221 * <P>Type: INTEGER (if set, non-0 means true)</P> 1222 * @deprecated see {@link android.provider.ContactsContract} 1223 */ 1224 @Deprecated 1225 public static final String ISPRIMARY = "isprimary"; 1226 } 1227 1228 /** 1229 * This table stores all non-phone contact methods and a reference to the 1230 * person that the contact method belongs to. 1231 * @deprecated see {@link android.provider.ContactsContract} 1232 */ 1233 @Deprecated 1234 public static final class ContactMethods 1235 implements BaseColumns, ContactMethodsColumns, PeopleColumns { 1236 /** 1237 * The column with latitude data for postal locations 1238 * <P>Type: REAL</P> 1239 * @deprecated see {@link android.provider.ContactsContract} 1240 */ 1241 @Deprecated 1242 public static final String POSTAL_LOCATION_LATITUDE = DATA; 1243 1244 /** 1245 * The column with longitude data for postal locations 1246 * <P>Type: REAL</P> 1247 * @deprecated see {@link android.provider.ContactsContract} 1248 */ 1249 @Deprecated 1250 public static final String POSTAL_LOCATION_LONGITUDE = AUX_DATA; 1251 1252 /** 1253 * The predefined IM protocol types. The protocol can either be non-present, one 1254 * of these types, or a free-form string. These cases are encoded in the AUX_DATA 1255 * column as: 1256 * - null 1257 * - pre:<an integer, one of the protocols below> 1258 * - custom:<a string> 1259 * @deprecated see {@link android.provider.ContactsContract} 1260 */ 1261 @Deprecated 1262 public static final int PROTOCOL_AIM = 0; 1263 /** 1264 * @deprecated see {@link android.provider.ContactsContract} 1265 */ 1266 @Deprecated 1267 public static final int PROTOCOL_MSN = 1; 1268 /** 1269 * @deprecated see {@link android.provider.ContactsContract} 1270 */ 1271 @Deprecated 1272 public static final int PROTOCOL_YAHOO = 2; 1273 /** 1274 * @deprecated see {@link android.provider.ContactsContract} 1275 */ 1276 @Deprecated 1277 public static final int PROTOCOL_SKYPE = 3; 1278 /** 1279 * @deprecated see {@link android.provider.ContactsContract} 1280 */ 1281 @Deprecated 1282 public static final int PROTOCOL_QQ = 4; 1283 /** 1284 * @deprecated see {@link android.provider.ContactsContract} 1285 */ 1286 @Deprecated 1287 public static final int PROTOCOL_GOOGLE_TALK = 5; 1288 /** 1289 * @deprecated see {@link android.provider.ContactsContract} 1290 */ 1291 @Deprecated 1292 public static final int PROTOCOL_ICQ = 6; 1293 /** 1294 * @deprecated see {@link android.provider.ContactsContract} 1295 */ 1296 @Deprecated 1297 public static final int PROTOCOL_JABBER = 7; 1298 1299 /** 1300 * @deprecated see {@link android.provider.ContactsContract} 1301 */ 1302 @Deprecated 1303 public static String encodePredefinedImProtocol(int protocol) { 1304 return "pre:" + protocol; 1305 } 1306 1307 /** 1308 * @deprecated see {@link android.provider.ContactsContract} 1309 */ 1310 @Deprecated 1311 public static String encodeCustomImProtocol(String protocolString) { 1312 return "custom:" + protocolString; 1313 } 1314 1315 /** 1316 * @deprecated see {@link android.provider.ContactsContract} 1317 */ 1318 @Deprecated 1319 public static Object decodeImProtocol(String encodedString) { 1320 if (encodedString == null) { 1321 return null; 1322 } 1323 1324 if (encodedString.startsWith("pre:")) { 1325 return Integer.parseInt(encodedString.substring(4)); 1326 } 1327 1328 if (encodedString.startsWith("custom:")) { 1329 return encodedString.substring(7); 1330 } 1331 1332 throw new IllegalArgumentException( 1333 "the value is not a valid encoded protocol, " + encodedString); 1334 } 1335 1336 /** 1337 * TODO find a place to put the canonical version of these. 1338 */ 1339 interface ProviderNames { 1340 // 1341 //NOTE: update Contacts.java with new providers when they're added. 1342 // 1343 String YAHOO = "Yahoo"; 1344 String GTALK = "GTalk"; 1345 String MSN = "MSN"; 1346 String ICQ = "ICQ"; 1347 String AIM = "AIM"; 1348 String XMPP = "XMPP"; 1349 String JABBER = "JABBER"; 1350 String SKYPE = "SKYPE"; 1351 String QQ = "QQ"; 1352 } 1353 1354 /** 1355 * This looks up the provider name defined in 1356 * from the predefined IM protocol id. 1357 * This is used for interacting with the IM application. 1358 * 1359 * @param protocol the protocol ID 1360 * @return the provider name the IM app uses for the given protocol, or null if no 1361 * provider is defined for the given protocol 1362 * @deprecated see {@link android.provider.ContactsContract} 1363 * @hide 1364 */ 1365 @Deprecated 1366 public static String lookupProviderNameFromId(int protocol) { 1367 switch (protocol) { 1368 case PROTOCOL_GOOGLE_TALK: 1369 return ProviderNames.GTALK; 1370 case PROTOCOL_AIM: 1371 return ProviderNames.AIM; 1372 case PROTOCOL_MSN: 1373 return ProviderNames.MSN; 1374 case PROTOCOL_YAHOO: 1375 return ProviderNames.YAHOO; 1376 case PROTOCOL_ICQ: 1377 return ProviderNames.ICQ; 1378 case PROTOCOL_JABBER: 1379 return ProviderNames.JABBER; 1380 case PROTOCOL_SKYPE: 1381 return ProviderNames.SKYPE; 1382 case PROTOCOL_QQ: 1383 return ProviderNames.QQ; 1384 } 1385 return null; 1386 } 1387 1388 /** 1389 * no public constructor since this is a utility class 1390 */ 1391 private ContactMethods() {} 1392 1393 /** 1394 * @deprecated see {@link android.provider.ContactsContract} 1395 */ 1396 @Deprecated 1397 public static final CharSequence getDisplayLabel(Context context, int kind, 1398 int type, CharSequence label) { 1399 CharSequence display = ""; 1400 switch (kind) { 1401 case KIND_EMAIL: { 1402 if (type != People.ContactMethods.TYPE_CUSTOM) { 1403 CharSequence[] labels = context.getResources().getTextArray( 1404 com.android.internal.R.array.emailAddressTypes); 1405 try { 1406 display = labels[type - 1]; 1407 } catch (ArrayIndexOutOfBoundsException e) { 1408 display = labels[ContactMethods.TYPE_HOME - 1]; 1409 } 1410 } else { 1411 if (!TextUtils.isEmpty(label)) { 1412 display = label; 1413 } 1414 } 1415 break; 1416 } 1417 1418 case KIND_POSTAL: { 1419 if (type != People.ContactMethods.TYPE_CUSTOM) { 1420 CharSequence[] labels = context.getResources().getTextArray( 1421 com.android.internal.R.array.postalAddressTypes); 1422 try { 1423 display = labels[type - 1]; 1424 } catch (ArrayIndexOutOfBoundsException e) { 1425 display = labels[ContactMethods.TYPE_HOME - 1]; 1426 } 1427 } else { 1428 if (!TextUtils.isEmpty(label)) { 1429 display = label; 1430 } 1431 } 1432 break; 1433 } 1434 1435 default: 1436 display = context.getString(R.string.untitled); 1437 } 1438 return display; 1439 } 1440 1441 /** 1442 * Add a longitude and latitude location to a postal address. 1443 * 1444 * @param context the context to use when updating the database 1445 * @param postalId the address to update 1446 * @param latitude the latitude for the address 1447 * @param longitude the longitude for the address 1448 * @deprecated see {@link android.provider.ContactsContract} 1449 */ 1450 @Deprecated 1451 public void addPostalLocation(Context context, long postalId, 1452 double latitude, double longitude) { 1453 final ContentResolver resolver = context.getContentResolver(); 1454 // Insert the location 1455 ContentValues values = new ContentValues(2); 1456 values.put(POSTAL_LOCATION_LATITUDE, latitude); 1457 values.put(POSTAL_LOCATION_LONGITUDE, longitude); 1458 Uri loc = resolver.insert(CONTENT_URI, values); 1459 long locId = ContentUris.parseId(loc); 1460 1461 // Update the postal address 1462 values.clear(); 1463 values.put(AUX_DATA, locId); 1464 resolver.update(ContentUris.withAppendedId(CONTENT_URI, postalId), values, null, null); 1465 } 1466 1467 /** 1468 * The content:// style URL for this table 1469 * @deprecated see {@link android.provider.ContactsContract} 1470 */ 1471 @Deprecated 1472 public static final Uri CONTENT_URI = 1473 Uri.parse("content://contacts/contact_methods"); 1474 1475 /** 1476 * The content:// style URL for sub-directory of e-mail addresses. 1477 * @deprecated see {@link android.provider.ContactsContract} 1478 */ 1479 @Deprecated 1480 public static final Uri CONTENT_EMAIL_URI = 1481 Uri.parse("content://contacts/contact_methods/email"); 1482 1483 /** 1484 * The MIME type of {@link #CONTENT_URI} providing a directory of 1485 * @deprecated see {@link android.provider.ContactsContract} 1486 * phones. 1487 */ 1488 @Deprecated 1489 public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contact-methods"; 1490 1491 /** 1492 * The MIME type of a {@link #CONTENT_EMAIL_URI} sub-directory of 1493 * multiple {@link Contacts#KIND_EMAIL} entries. 1494 * @deprecated see {@link android.provider.ContactsContract} 1495 */ 1496 @Deprecated 1497 public static final String CONTENT_EMAIL_TYPE = "vnd.android.cursor.dir/email"; 1498 1499 /** 1500 * The MIME type of a {@link #CONTENT_EMAIL_URI} sub-directory of 1501 * multiple {@link Contacts#KIND_POSTAL} entries. 1502 * @deprecated see {@link android.provider.ContactsContract} 1503 */ 1504 @Deprecated 1505 public static final String CONTENT_POSTAL_TYPE = "vnd.android.cursor.dir/postal-address"; 1506 1507 /** 1508 * The MIME type of a {@link #CONTENT_URI} sub-directory of a single 1509 * {@link Contacts#KIND_EMAIL} entry. 1510 * @deprecated see {@link android.provider.ContactsContract} 1511 */ 1512 @Deprecated 1513 public static final String CONTENT_EMAIL_ITEM_TYPE = "vnd.android.cursor.item/email"; 1514 1515 /** 1516 * The MIME type of a {@link #CONTENT_URI} sub-directory of a single 1517 * {@link Contacts#KIND_POSTAL} entry. 1518 * @deprecated see {@link android.provider.ContactsContract} 1519 */ 1520 @Deprecated 1521 public static final String CONTENT_POSTAL_ITEM_TYPE 1522 = "vnd.android.cursor.item/postal-address"; 1523 1524 /** 1525 * The MIME type of a {@link #CONTENT_URI} sub-directory of a single 1526 * {@link Contacts#KIND_IM} entry. 1527 * @deprecated see {@link android.provider.ContactsContract} 1528 */ 1529 @Deprecated 1530 public static final String CONTENT_IM_ITEM_TYPE = "vnd.android.cursor.item/jabber-im"; 1531 1532 /** 1533 * The default sort order for this table 1534 * @deprecated see {@link android.provider.ContactsContract} 1535 */ 1536 @Deprecated 1537 public static final String DEFAULT_SORT_ORDER = "name ASC"; 1538 1539 /** 1540 * The ID of the person this contact method is assigned to. 1541 * <P>Type: INTEGER (long)</P> 1542 * @deprecated see {@link android.provider.ContactsContract} 1543 */ 1544 @Deprecated 1545 public static final String PERSON_ID = "person"; 1546 } 1547 1548 /** 1549 * The IM presence columns with some contacts specific columns mixed in. 1550 * @deprecated see {@link android.provider.ContactsContract} 1551 */ 1552 @Deprecated 1553 public interface PresenceColumns { 1554 /** 1555 * The priority, an integer, used by XMPP presence 1556 * <P>Type: INTEGER</P> 1557 */ 1558 String PRIORITY = "priority"; 1559 1560 /** 1561 * The server defined status. 1562 * <P>Type: INTEGER (one of the values below)</P> 1563 */ 1564 String PRESENCE_STATUS = ContactsContract.StatusUpdates.PRESENCE; 1565 1566 /** 1567 * Presence Status definition 1568 */ 1569 int OFFLINE = ContactsContract.StatusUpdates.OFFLINE; 1570 int INVISIBLE = ContactsContract.StatusUpdates.INVISIBLE; 1571 int AWAY = ContactsContract.StatusUpdates.AWAY; 1572 int IDLE = ContactsContract.StatusUpdates.IDLE; 1573 int DO_NOT_DISTURB = ContactsContract.StatusUpdates.DO_NOT_DISTURB; 1574 int AVAILABLE = ContactsContract.StatusUpdates.AVAILABLE; 1575 1576 /** 1577 * The user defined status line. 1578 * <P>Type: TEXT</P> 1579 */ 1580 String PRESENCE_CUSTOM_STATUS = ContactsContract.StatusUpdates.STATUS; 1581 1582 /** 1583 * The IM service the presence is coming from. Formatted using either 1584 * {@link Contacts.ContactMethods#encodePredefinedImProtocol} or 1585 * {@link Contacts.ContactMethods#encodeCustomImProtocol}. 1586 * <P>Type: STRING</P> 1587 * @deprecated see {@link android.provider.ContactsContract} 1588 */ 1589 @Deprecated 1590 public static final String IM_PROTOCOL = "im_protocol"; 1591 1592 /** 1593 * The IM handle the presence item is for. The handle is scoped to 1594 * the {@link #IM_PROTOCOL}. 1595 * <P>Type: STRING</P> 1596 * @deprecated see {@link android.provider.ContactsContract} 1597 */ 1598 @Deprecated 1599 public static final String IM_HANDLE = "im_handle"; 1600 1601 /** 1602 * The IM account for the local user that the presence data came from. 1603 * <P>Type: STRING</P> 1604 * @deprecated see {@link android.provider.ContactsContract} 1605 */ 1606 @Deprecated 1607 public static final String IM_ACCOUNT = "im_account"; 1608 } 1609 1610 /** 1611 * Contains presence information about contacts. 1612 * @hide 1613 * @deprecated see {@link android.provider.ContactsContract} 1614 */ 1615 @Deprecated 1616 public static final class Presence 1617 implements BaseColumns, PresenceColumns, PeopleColumns { 1618 /** 1619 * The content:// style URL for this table 1620 * @deprecated see {@link android.provider.ContactsContract} 1621 */ 1622 @Deprecated 1623 public static final Uri CONTENT_URI = 1624 Uri.parse("content://contacts/presence"); 1625 1626 /** 1627 * The ID of the person this presence item is assigned to. 1628 * <P>Type: INTEGER (long)</P> 1629 * @deprecated see {@link android.provider.ContactsContract} 1630 */ 1631 @Deprecated 1632 public static final String PERSON_ID = "person"; 1633 1634 /** 1635 * Gets the resource ID for the proper presence icon. 1636 * 1637 * @param status the status to get the icon for 1638 * @return the resource ID for the proper presence icon 1639 * @deprecated see {@link android.provider.ContactsContract} 1640 */ 1641 @Deprecated 1642 public static final int getPresenceIconResourceId(int status) { 1643 switch (status) { 1644 case Contacts.People.AVAILABLE: 1645 return com.android.internal.R.drawable.presence_online; 1646 1647 case Contacts.People.IDLE: 1648 case Contacts.People.AWAY: 1649 return com.android.internal.R.drawable.presence_away; 1650 1651 case Contacts.People.DO_NOT_DISTURB: 1652 return com.android.internal.R.drawable.presence_busy; 1653 1654 case Contacts.People.INVISIBLE: 1655 return com.android.internal.R.drawable.presence_invisible; 1656 1657 case Contacts.People.OFFLINE: 1658 default: 1659 return com.android.internal.R.drawable.presence_offline; 1660 } 1661 } 1662 1663 /** 1664 * Sets a presence icon to the proper graphic 1665 * 1666 * @param icon the icon to to set 1667 * @param serverStatus that status 1668 * @deprecated see {@link android.provider.ContactsContract} 1669 */ 1670 @Deprecated 1671 public static final void setPresenceIcon(ImageView icon, int serverStatus) { 1672 icon.setImageResource(getPresenceIconResourceId(serverStatus)); 1673 } 1674 } 1675 1676 /** 1677 * Columns from the Organizations table that other columns join into themselves. 1678 * @deprecated see {@link android.provider.ContactsContract} 1679 */ 1680 @Deprecated 1681 public interface OrganizationColumns { 1682 /** 1683 * The type of the organizations. 1684 * <P>Type: INTEGER (one of the constants below)</P> 1685 * @deprecated see {@link android.provider.ContactsContract} 1686 */ 1687 @Deprecated 1688 public static final String TYPE = "type"; 1689 1690 /** 1691 * @deprecated see {@link android.provider.ContactsContract} 1692 */ 1693 @Deprecated 1694 public static final int TYPE_CUSTOM = 0; 1695 /** 1696 * @deprecated see {@link android.provider.ContactsContract} 1697 */ 1698 @Deprecated 1699 public static final int TYPE_WORK = 1; 1700 /** 1701 * @deprecated see {@link android.provider.ContactsContract} 1702 */ 1703 @Deprecated 1704 public static final int TYPE_OTHER = 2; 1705 1706 /** 1707 * The user provided label, only used if TYPE is TYPE_CUSTOM. 1708 * <P>Type: TEXT</P> 1709 * @deprecated see {@link android.provider.ContactsContract} 1710 */ 1711 @Deprecated 1712 public static final String LABEL = "label"; 1713 1714 /** 1715 * The name of the company for this organization. 1716 * <P>Type: TEXT</P> 1717 * @deprecated see {@link android.provider.ContactsContract} 1718 */ 1719 @Deprecated 1720 public static final String COMPANY = "company"; 1721 1722 /** 1723 * The title within this organization. 1724 * <P>Type: TEXT</P> 1725 * @deprecated see {@link android.provider.ContactsContract} 1726 */ 1727 @Deprecated 1728 public static final String TITLE = "title"; 1729 1730 /** 1731 * The person this organization is tied to. 1732 * <P>Type: TEXT</P> 1733 * @deprecated see {@link android.provider.ContactsContract} 1734 */ 1735 @Deprecated 1736 public static final String PERSON_ID = "person"; 1737 1738 /** 1739 * Whether this is the primary organization 1740 * <P>Type: INTEGER (if set, non-0 means true)</P> 1741 * @deprecated see {@link android.provider.ContactsContract} 1742 */ 1743 @Deprecated 1744 public static final String ISPRIMARY = "isprimary"; 1745 } 1746 1747 /** 1748 * A sub directory of a single person that contains all of their Phones. 1749 * @deprecated see {@link android.provider.ContactsContract} 1750 */ 1751 @Deprecated 1752 public static final class Organizations implements BaseColumns, OrganizationColumns { 1753 /** 1754 * no public constructor since this is a utility class 1755 */ 1756 private Organizations() {} 1757 1758 /** 1759 * @deprecated see {@link android.provider.ContactsContract} 1760 */ 1761 @Deprecated 1762 public static final CharSequence getDisplayLabel(Context context, int type, 1763 CharSequence label) { 1764 CharSequence display = ""; 1765 1766 if (type != TYPE_CUSTOM) { 1767 CharSequence[] labels = context.getResources().getTextArray( 1768 com.android.internal.R.array.organizationTypes); 1769 try { 1770 display = labels[type - 1]; 1771 } catch (ArrayIndexOutOfBoundsException e) { 1772 display = labels[Organizations.TYPE_WORK - 1]; 1773 } 1774 } else { 1775 if (!TextUtils.isEmpty(label)) { 1776 display = label; 1777 } 1778 } 1779 return display; 1780 } 1781 1782 /** 1783 * The content:// style URL for this table 1784 * @deprecated see {@link android.provider.ContactsContract} 1785 */ 1786 @Deprecated 1787 public static final Uri CONTENT_URI = 1788 Uri.parse("content://contacts/organizations"); 1789 1790 /** 1791 * The directory twig for this sub-table 1792 * @deprecated see {@link android.provider.ContactsContract} 1793 */ 1794 @Deprecated 1795 public static final String CONTENT_DIRECTORY = "organizations"; 1796 1797 /** 1798 * The default sort order for this table 1799 * @deprecated see {@link android.provider.ContactsContract} 1800 */ 1801 @Deprecated 1802 public static final String DEFAULT_SORT_ORDER = "company, title, isprimary ASC"; 1803 } 1804 1805 /** 1806 * Columns from the Photos table that other columns join into themselves. 1807 * @deprecated see {@link android.provider.ContactsContract} 1808 */ 1809 @Deprecated 1810 public interface PhotosColumns { 1811 /** 1812 * The _SYNC_VERSION of the photo that was last downloaded 1813 * <P>Type: TEXT</P> 1814 * @deprecated see {@link android.provider.ContactsContract} 1815 */ 1816 @Deprecated 1817 public static final String LOCAL_VERSION = "local_version"; 1818 1819 /** 1820 * The person this photo is associated with. 1821 * <P>Type: TEXT</P> 1822 * @deprecated see {@link android.provider.ContactsContract} 1823 */ 1824 @Deprecated 1825 public static final String PERSON_ID = "person"; 1826 1827 /** 1828 * non-zero if a download is required and the photo isn't marked as a bad resource. 1829 * You must specify this in the columns in order to use it in the where clause. 1830 * <P>Type: INTEGER(boolean)</P> 1831 * @deprecated see {@link android.provider.ContactsContract} 1832 */ 1833 @Deprecated 1834 public static final String DOWNLOAD_REQUIRED = "download_required"; 1835 1836 /** 1837 * non-zero if this photo is known to exist on the server 1838 * <P>Type: INTEGER(boolean)</P> 1839 * @deprecated see {@link android.provider.ContactsContract} 1840 */ 1841 @Deprecated 1842 public static final String EXISTS_ON_SERVER = "exists_on_server"; 1843 1844 /** 1845 * Contains the description of the upload or download error from 1846 * the previous attempt. If null then the previous attempt succeeded. 1847 * <P>Type: TEXT</P> 1848 * @deprecated see {@link android.provider.ContactsContract} 1849 */ 1850 @Deprecated 1851 public static final String SYNC_ERROR = "sync_error"; 1852 1853 /** 1854 * The image data, or null if there is no image. 1855 * <P>Type: BLOB</P> 1856 * @deprecated see {@link android.provider.ContactsContract} 1857 */ 1858 @Deprecated 1859 public static final String DATA = "data"; 1860 1861 } 1862 1863 /** 1864 * The photos over all of the people 1865 * @deprecated see {@link android.provider.ContactsContract} 1866 */ 1867 @Deprecated 1868 public static final class Photos implements BaseColumns, PhotosColumns, SyncConstValue { 1869 /** 1870 * no public constructor since this is a utility class 1871 */ 1872 private Photos() {} 1873 1874 /** 1875 * The content:// style URL for this table 1876 * @deprecated see {@link android.provider.ContactsContract} 1877 */ 1878 @Deprecated 1879 public static final Uri CONTENT_URI = Uri.parse("content://contacts/photos"); 1880 1881 /** 1882 * The directory twig for this sub-table 1883 * @deprecated see {@link android.provider.ContactsContract} 1884 */ 1885 @Deprecated 1886 public static final String CONTENT_DIRECTORY = "photo"; 1887 1888 /** 1889 * The default sort order for this table 1890 * @deprecated see {@link android.provider.ContactsContract} 1891 */ 1892 @Deprecated 1893 public static final String DEFAULT_SORT_ORDER = "person ASC"; 1894 } 1895 1896 /** 1897 * @deprecated see {@link android.provider.ContactsContract} 1898 */ 1899 @Deprecated 1900 public interface ExtensionsColumns { 1901 /** 1902 * The name of this extension. May not be null. There may be at most one row for each name. 1903 * <P>Type: TEXT</P> 1904 * @deprecated see {@link android.provider.ContactsContract} 1905 */ 1906 @Deprecated 1907 public static final String NAME = "name"; 1908 1909 /** 1910 * The value of this extension. May not be null. 1911 * <P>Type: TEXT</P> 1912 * @deprecated see {@link android.provider.ContactsContract} 1913 */ 1914 @Deprecated 1915 public static final String VALUE = "value"; 1916 } 1917 1918 /** 1919 * The extensions for a person 1920 * @deprecated see {@link android.provider.ContactsContract} 1921 */ 1922 @Deprecated 1923 public static final class Extensions implements BaseColumns, ExtensionsColumns { 1924 /** 1925 * no public constructor since this is a utility class 1926 */ 1927 private Extensions() {} 1928 1929 /** 1930 * The content:// style URL for this table 1931 * @deprecated see {@link android.provider.ContactsContract} 1932 */ 1933 @Deprecated 1934 public static final Uri CONTENT_URI = 1935 Uri.parse("content://contacts/extensions"); 1936 1937 /** 1938 * The MIME type of {@link #CONTENT_URI} providing a directory of 1939 * phones. 1940 * @deprecated see {@link android.provider.ContactsContract} 1941 */ 1942 @Deprecated 1943 public static final String CONTENT_TYPE = "vnd.android.cursor.dir/contact_extensions"; 1944 1945 /** 1946 * The MIME type of a {@link #CONTENT_URI} subdirectory of a single 1947 * phone. 1948 * @deprecated see {@link android.provider.ContactsContract} 1949 */ 1950 @Deprecated 1951 public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/contact_extensions"; 1952 1953 /** 1954 * The default sort order for this table 1955 * @deprecated see {@link android.provider.ContactsContract} 1956 */ 1957 @Deprecated 1958 public static final String DEFAULT_SORT_ORDER = "person, name ASC"; 1959 1960 /** 1961 * The ID of the person this phone number is assigned to. 1962 * <P>Type: INTEGER (long)</P> 1963 * @deprecated see {@link android.provider.ContactsContract} 1964 */ 1965 @Deprecated 1966 public static final String PERSON_ID = "person"; 1967 } 1968 1969 /** 1970 * Contains helper classes used to create or manage {@link android.content.Intent Intents} 1971 * that involve contacts. 1972 * @deprecated see {@link android.provider.ContactsContract} 1973 */ 1974 @Deprecated 1975 public static final class Intents { 1976 /** 1977 * @deprecated see {@link android.provider.ContactsContract} 1978 */ 1979 @Deprecated 1980 public Intents() { 1981 } 1982 1983 /** 1984 * This is the intent that is fired when a search suggestion is clicked on. 1985 * @deprecated see {@link android.provider.ContactsContract} 1986 */ 1987 @Deprecated 1988 public static final String SEARCH_SUGGESTION_CLICKED = 1989 ContactsContract.Intents.SEARCH_SUGGESTION_CLICKED; 1990 1991 /** 1992 * This is the intent that is fired when a search suggestion for dialing a number 1993 * is clicked on. 1994 * @deprecated see {@link android.provider.ContactsContract} 1995 */ 1996 @Deprecated 1997 public static final String SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED = 1998 ContactsContract.Intents.SEARCH_SUGGESTION_DIAL_NUMBER_CLICKED; 1999 2000 /** 2001 * This is the intent that is fired when a search suggestion for creating a contact 2002 * is clicked on. 2003 * @deprecated see {@link android.provider.ContactsContract} 2004 */ 2005 @Deprecated 2006 public static final String SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED = 2007 ContactsContract.Intents.SEARCH_SUGGESTION_CREATE_CONTACT_CLICKED; 2008 2009 /** 2010 * Starts an Activity that lets the user pick a contact to attach an image to. 2011 * After picking the contact it launches the image cropper in face detection mode. 2012 * @deprecated see {@link android.provider.ContactsContract} 2013 */ 2014 @Deprecated 2015 public static final String ATTACH_IMAGE = ContactsContract.Intents.ATTACH_IMAGE; 2016 2017 /** 2018 * Takes as input a data URI with a mailto: or tel: scheme. If a single 2019 * contact exists with the given data it will be shown. If no contact 2020 * exists, a dialog will ask the user if they want to create a new 2021 * contact with the provided details filled in. If multiple contacts 2022 * share the data the user will be prompted to pick which contact they 2023 * want to view. 2024 * <p> 2025 * For <code>mailto:</code> URIs, the scheme specific portion must be a 2026 * raw email address, such as one built using 2027 * {@link Uri#fromParts(String, String, String)}. 2028 * <p> 2029 * For <code>tel:</code> URIs, the scheme specific portion is compared 2030 * to existing numbers using the standard caller ID lookup algorithm. 2031 * The number must be properly encoded, for example using 2032 * {@link Uri#fromParts(String, String, String)}. 2033 * <p> 2034 * Any extras from the {@link Insert} class will be passed along to the 2035 * create activity if there are no contacts to show. 2036 * <p> 2037 * Passing true for the {@link #EXTRA_FORCE_CREATE} extra will skip 2038 * prompting the user when the contact doesn't exist. 2039 * @deprecated see {@link android.provider.ContactsContract} 2040 */ 2041 @Deprecated 2042 public static final String SHOW_OR_CREATE_CONTACT = 2043 ContactsContract.Intents.SHOW_OR_CREATE_CONTACT; 2044 2045 /** 2046 * Used with {@link #SHOW_OR_CREATE_CONTACT} to force creating a new 2047 * contact if no matching contact found. Otherwise, default behavior is 2048 * to prompt user with dialog before creating. 2049 * <p> 2050 * Type: BOOLEAN 2051 * @deprecated see {@link android.provider.ContactsContract} 2052 */ 2053 @Deprecated 2054 public static final String EXTRA_FORCE_CREATE = ContactsContract.Intents.EXTRA_FORCE_CREATE; 2055 2056 /** 2057 * Used with {@link #SHOW_OR_CREATE_CONTACT} to specify an exact 2058 * description to be shown when prompting user about creating a new 2059 * contact. 2060 * <p> 2061 * Type: STRING 2062 * @deprecated see {@link android.provider.ContactsContract} 2063 */ 2064 @Deprecated 2065 public static final String EXTRA_CREATE_DESCRIPTION = 2066 ContactsContract.Intents.EXTRA_CREATE_DESCRIPTION; 2067 2068 /** 2069 * Optional extra used with {@link #SHOW_OR_CREATE_CONTACT} to specify a 2070 * dialog location using screen coordinates. When not specified, the 2071 * dialog will be centered. 2072 * 2073 * @hide pending API council review 2074 * @deprecated see {@link android.provider.ContactsContract} 2075 */ 2076 @Deprecated 2077 public static final String EXTRA_TARGET_RECT = ContactsContract.Intents.EXTRA_TARGET_RECT; 2078 2079 /** 2080 * Intents related to the Contacts app UI. 2081 * @deprecated see {@link android.provider.ContactsContract} 2082 */ 2083 @Deprecated 2084 public static final class UI { 2085 /** 2086 * @deprecated see {@link android.provider.ContactsContract} 2087 */ 2088 @Deprecated 2089 public UI() { 2090 } 2091 2092 /** 2093 * The action for the default contacts list tab. 2094 * @deprecated see {@link android.provider.ContactsContract} 2095 */ 2096 @Deprecated 2097 public static final String LIST_DEFAULT = ContactsContract.Intents.UI.LIST_DEFAULT; 2098 2099 /** 2100 * The action for the contacts list tab. 2101 * @deprecated see {@link android.provider.ContactsContract} 2102 */ 2103 @Deprecated 2104 public static final String LIST_GROUP_ACTION = 2105 ContactsContract.Intents.UI.LIST_GROUP_ACTION; 2106 2107 /** 2108 * When in LIST_GROUP_ACTION mode, this is the group to display. 2109 * @deprecated see {@link android.provider.ContactsContract} 2110 */ 2111 @Deprecated 2112 public static final String GROUP_NAME_EXTRA_KEY = 2113 ContactsContract.Intents.UI.GROUP_NAME_EXTRA_KEY; 2114 /** 2115 * The action for the all contacts list tab. 2116 * @deprecated see {@link android.provider.ContactsContract} 2117 */ 2118 @Deprecated 2119 public static final String LIST_ALL_CONTACTS_ACTION = 2120 ContactsContract.Intents.UI.LIST_ALL_CONTACTS_ACTION; 2121 2122 /** 2123 * The action for the contacts with phone numbers list tab. 2124 * @deprecated see {@link android.provider.ContactsContract} 2125 */ 2126 @Deprecated 2127 public static final String LIST_CONTACTS_WITH_PHONES_ACTION = 2128 ContactsContract.Intents.UI.LIST_CONTACTS_WITH_PHONES_ACTION; 2129 2130 /** 2131 * The action for the starred contacts list tab. 2132 * @deprecated see {@link android.provider.ContactsContract} 2133 */ 2134 @Deprecated 2135 public static final String LIST_STARRED_ACTION = 2136 ContactsContract.Intents.UI.LIST_STARRED_ACTION; 2137 2138 /** 2139 * The action for the frequent contacts list tab. 2140 * @deprecated see {@link android.provider.ContactsContract} 2141 */ 2142 @Deprecated 2143 public static final String LIST_FREQUENT_ACTION = 2144 ContactsContract.Intents.UI.LIST_FREQUENT_ACTION; 2145 2146 /** 2147 * The action for the "strequent" contacts list tab. It first lists the starred 2148 * contacts in alphabetical order and then the frequent contacts in descending 2149 * order of the number of times they have been contacted. 2150 * @deprecated see {@link android.provider.ContactsContract} 2151 */ 2152 @Deprecated 2153 public static final String LIST_STREQUENT_ACTION = 2154 ContactsContract.Intents.UI.LIST_STREQUENT_ACTION; 2155 2156 /** 2157 * A key for to be used as an intent extra to set the activity 2158 * title to a custom String value. 2159 * @deprecated see {@link android.provider.ContactsContract} 2160 */ 2161 @Deprecated 2162 public static final String TITLE_EXTRA_KEY = 2163 ContactsContract.Intents.UI.TITLE_EXTRA_KEY; 2164 2165 /** 2166 * Activity Action: Display a filtered list of contacts 2167 * <p> 2168 * Input: Extra field {@link #FILTER_TEXT_EXTRA_KEY} is the text to use for 2169 * filtering 2170 * <p> 2171 * Output: Nothing. 2172 * @deprecated see {@link android.provider.ContactsContract} 2173 */ 2174 @Deprecated 2175 public static final String FILTER_CONTACTS_ACTION = 2176 ContactsContract.Intents.UI.FILTER_CONTACTS_ACTION; 2177 2178 /** 2179 * Used as an int extra field in {@link #FILTER_CONTACTS_ACTION} 2180 * intents to supply the text on which to filter. 2181 * @deprecated see {@link android.provider.ContactsContract} 2182 */ 2183 @Deprecated 2184 public static final String FILTER_TEXT_EXTRA_KEY = 2185 ContactsContract.Intents.UI.FILTER_TEXT_EXTRA_KEY; 2186 } 2187 2188 /** 2189 * Convenience class that contains string constants used 2190 * to create contact {@link android.content.Intent Intents}. 2191 * @deprecated see {@link android.provider.ContactsContract} 2192 */ 2193 @Deprecated 2194 public static final class Insert { 2195 /** 2196 * @deprecated see {@link android.provider.ContactsContract} 2197 */ 2198 @Deprecated 2199 public Insert() { 2200 } 2201 2202 /** The action code to use when adding a contact 2203 * @deprecated see {@link android.provider.ContactsContract} 2204 */ 2205 @Deprecated 2206 public static final String ACTION = ContactsContract.Intents.Insert.ACTION; 2207 2208 /** 2209 * If present, forces a bypass of quick insert mode. 2210 * @deprecated see {@link android.provider.ContactsContract} 2211 */ 2212 @Deprecated 2213 public static final String FULL_MODE = ContactsContract.Intents.Insert.FULL_MODE; 2214 2215 /** 2216 * The extra field for the contact name. 2217 * <P>Type: String</P> 2218 * @deprecated see {@link android.provider.ContactsContract} 2219 */ 2220 @Deprecated 2221 public static final String NAME = ContactsContract.Intents.Insert.NAME; 2222 2223 /** 2224 * The extra field for the contact phonetic name. 2225 * <P>Type: String</P> 2226 * @deprecated see {@link android.provider.ContactsContract} 2227 */ 2228 @Deprecated 2229 public static final String PHONETIC_NAME = 2230 ContactsContract.Intents.Insert.PHONETIC_NAME; 2231 2232 /** 2233 * The extra field for the contact company. 2234 * <P>Type: String</P> 2235 * @deprecated see {@link android.provider.ContactsContract} 2236 */ 2237 @Deprecated 2238 public static final String COMPANY = ContactsContract.Intents.Insert.COMPANY; 2239 2240 /** 2241 * The extra field for the contact job title. 2242 * <P>Type: String</P> 2243 * @deprecated see {@link android.provider.ContactsContract} 2244 */ 2245 @Deprecated 2246 public static final String JOB_TITLE = ContactsContract.Intents.Insert.JOB_TITLE; 2247 2248 /** 2249 * The extra field for the contact notes. 2250 * <P>Type: String</P> 2251 * @deprecated see {@link android.provider.ContactsContract} 2252 */ 2253 @Deprecated 2254 public static final String NOTES = ContactsContract.Intents.Insert.NOTES; 2255 2256 /** 2257 * The extra field for the contact phone number. 2258 * <P>Type: String</P> 2259 * @deprecated see {@link android.provider.ContactsContract} 2260 */ 2261 @Deprecated 2262 public static final String PHONE = ContactsContract.Intents.Insert.PHONE; 2263 2264 /** 2265 * The extra field for the contact phone number type. 2266 * <P>Type: Either an integer value from {@link android.provider.Contacts.PhonesColumns PhonesColumns}, 2267 * or a string specifying a custom label.</P> 2268 * @deprecated see {@link android.provider.ContactsContract} 2269 */ 2270 @Deprecated 2271 public static final String PHONE_TYPE = ContactsContract.Intents.Insert.PHONE_TYPE; 2272 2273 /** 2274 * The extra field for the phone isprimary flag. 2275 * <P>Type: boolean</P> 2276 * @deprecated see {@link android.provider.ContactsContract} 2277 */ 2278 @Deprecated 2279 public static final String PHONE_ISPRIMARY = 2280 ContactsContract.Intents.Insert.PHONE_ISPRIMARY; 2281 2282 /** 2283 * The extra field for an optional second contact phone number. 2284 * <P>Type: String</P> 2285 * @deprecated see {@link android.provider.ContactsContract} 2286 */ 2287 @Deprecated 2288 public static final String SECONDARY_PHONE = 2289 ContactsContract.Intents.Insert.SECONDARY_PHONE; 2290 2291 /** 2292 * The extra field for an optional second contact phone number type. 2293 * <P>Type: Either an integer value from {@link android.provider.Contacts.PhonesColumns PhonesColumns}, 2294 * or a string specifying a custom label.</P> 2295 * @deprecated see {@link android.provider.ContactsContract} 2296 */ 2297 @Deprecated 2298 public static final String SECONDARY_PHONE_TYPE = 2299 ContactsContract.Intents.Insert.SECONDARY_PHONE_TYPE; 2300 2301 /** 2302 * The extra field for an optional third contact phone number. 2303 * <P>Type: String</P> 2304 * @deprecated see {@link android.provider.ContactsContract} 2305 */ 2306 @Deprecated 2307 public static final String TERTIARY_PHONE = 2308 ContactsContract.Intents.Insert.TERTIARY_PHONE; 2309 2310 /** 2311 * The extra field for an optional third contact phone number type. 2312 * <P>Type: Either an integer value from {@link android.provider.Contacts.PhonesColumns PhonesColumns}, 2313 * or a string specifying a custom label.</P> 2314 * @deprecated see {@link android.provider.ContactsContract} 2315 */ 2316 @Deprecated 2317 public static final String TERTIARY_PHONE_TYPE = 2318 ContactsContract.Intents.Insert.TERTIARY_PHONE_TYPE; 2319 2320 /** 2321 * The extra field for the contact email address. 2322 * <P>Type: String</P> 2323 * @deprecated see {@link android.provider.ContactsContract} 2324 */ 2325 @Deprecated 2326 public static final String EMAIL = ContactsContract.Intents.Insert.EMAIL; 2327 2328 /** 2329 * The extra field for the contact email type. 2330 * <P>Type: Either an integer value from {@link android.provider.Contacts.ContactMethodsColumns ContactMethodsColumns} 2331 * or a string specifying a custom label.</P> 2332 * @deprecated see {@link android.provider.ContactsContract} 2333 */ 2334 @Deprecated 2335 public static final String EMAIL_TYPE = ContactsContract.Intents.Insert.EMAIL_TYPE; 2336 2337 /** 2338 * The extra field for the email isprimary flag. 2339 * <P>Type: boolean</P> 2340 * @deprecated see {@link android.provider.ContactsContract} 2341 */ 2342 @Deprecated 2343 public static final String EMAIL_ISPRIMARY = 2344 ContactsContract.Intents.Insert.EMAIL_ISPRIMARY; 2345 2346 /** 2347 * The extra field for an optional second contact email address. 2348 * <P>Type: String</P> 2349 * @deprecated see {@link android.provider.ContactsContract} 2350 */ 2351 @Deprecated 2352 public static final String SECONDARY_EMAIL = 2353 ContactsContract.Intents.Insert.SECONDARY_EMAIL; 2354 2355 /** 2356 * The extra field for an optional second contact email type. 2357 * <P>Type: Either an integer value from {@link android.provider.Contacts.ContactMethodsColumns ContactMethodsColumns} 2358 * or a string specifying a custom label.</P> 2359 * @deprecated see {@link android.provider.ContactsContract} 2360 */ 2361 @Deprecated 2362 public static final String SECONDARY_EMAIL_TYPE = 2363 ContactsContract.Intents.Insert.SECONDARY_EMAIL_TYPE; 2364 2365 /** 2366 * The extra field for an optional third contact email address. 2367 * <P>Type: String</P> 2368 * @deprecated see {@link android.provider.ContactsContract} 2369 */ 2370 @Deprecated 2371 public static final String TERTIARY_EMAIL = 2372 ContactsContract.Intents.Insert.TERTIARY_EMAIL; 2373 2374 /** 2375 * The extra field for an optional third contact email type. 2376 * <P>Type: Either an integer value from {@link android.provider.Contacts.ContactMethodsColumns ContactMethodsColumns} 2377 * or a string specifying a custom label.</P> 2378 * @deprecated see {@link android.provider.ContactsContract} 2379 */ 2380 @Deprecated 2381 public static final String TERTIARY_EMAIL_TYPE = 2382 ContactsContract.Intents.Insert.TERTIARY_EMAIL_TYPE; 2383 2384 /** 2385 * The extra field for the contact postal address. 2386 * <P>Type: String</P> 2387 * @deprecated see {@link android.provider.ContactsContract} 2388 */ 2389 @Deprecated 2390 public static final String POSTAL = ContactsContract.Intents.Insert.POSTAL; 2391 2392 /** 2393 * The extra field for the contact postal address type. 2394 * <P>Type: Either an integer value from {@link android.provider.Contacts.ContactMethodsColumns ContactMethodsColumns} 2395 * or a string specifying a custom label.</P> 2396 * @deprecated see {@link android.provider.ContactsContract} 2397 */ 2398 @Deprecated 2399 public static final String POSTAL_TYPE = ContactsContract.Intents.Insert.POSTAL_TYPE; 2400 2401 /** 2402 * The extra field for the postal isprimary flag. 2403 * <P>Type: boolean</P> 2404 * @deprecated see {@link android.provider.ContactsContract} 2405 */ 2406 @Deprecated 2407 public static final String POSTAL_ISPRIMARY = ContactsContract.Intents.Insert.POSTAL_ISPRIMARY; 2408 2409 /** 2410 * The extra field for an IM handle. 2411 * <P>Type: String</P> 2412 * @deprecated see {@link android.provider.ContactsContract} 2413 */ 2414 @Deprecated 2415 public static final String IM_HANDLE = ContactsContract.Intents.Insert.IM_HANDLE; 2416 2417 /** 2418 * The extra field for the IM protocol 2419 * <P>Type: the result of {@link Contacts.ContactMethods#encodePredefinedImProtocol} 2420 * or {@link Contacts.ContactMethods#encodeCustomImProtocol}.</P> 2421 * @deprecated see {@link android.provider.ContactsContract} 2422 */ 2423 @Deprecated 2424 public static final String IM_PROTOCOL = ContactsContract.Intents.Insert.IM_PROTOCOL; 2425 2426 /** 2427 * The extra field for the IM isprimary flag. 2428 * <P>Type: boolean</P> 2429 * @deprecated see {@link android.provider.ContactsContract} 2430 */ 2431 @Deprecated 2432 public static final String IM_ISPRIMARY = ContactsContract.Intents.Insert.IM_ISPRIMARY; 2433 } 2434 } 2435} 2436