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