1e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng/* 2e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng * Copyright (C) 2009 The Android Open Source Project 3e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng * 4e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng * Licensed under the Apache License, Version 2.0 (the "License"); 5e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng * you may not use this file except in compliance with the License. 6e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng * You may obtain a copy of the License at 7e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng * 8e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng * http://www.apache.org/licenses/LICENSE-2.0 9e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng * 10e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng * Unless required by applicable law or agreed to in writing, software 11e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng * distributed under the License is distributed on an "AS IS" BASIS, 12e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng * See the License for the specific language governing permissions and 14e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng * limitations under the License. 15e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng */ 16e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 1769c182afb0e6d82a341a28b4317aa703af768906Gary Maipackage com.android.contacts.model.account; 18e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 19e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Chengimport android.content.ContentValues; 20e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Chengimport android.content.Context; 21e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Chengimport android.provider.ContactsContract.CommonDataKinds.Email; 22e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Chengimport android.provider.ContactsContract.CommonDataKinds.Event; 23e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Chengimport android.provider.ContactsContract.CommonDataKinds.Phone; 24e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Chengimport android.provider.ContactsContract.CommonDataKinds.Relation; 25e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 263f6a2444e0134b7380cdb2e13abf4bf1163336d0Arthur Wangimport com.android.contacts.R; 2769c182afb0e6d82a341a28b4317aa703af768906Gary Maiimport com.android.contacts.model.dataitem.DataKind; 2869c182afb0e6d82a341a28b4317aa703af768906Gary Maiimport com.android.contacts.util.CommonDateUtils; 293a0b483ff715959b88d7ef20877a7c89d211fde2Walter Jangimport com.android.contactsbind.FeedbackHelper; 303a0b483ff715959b88d7ef20877a7c89d211fde2Walter Jang 31e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Chengimport com.google.common.collect.Lists; 32e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 33e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Chengimport java.util.List; 34e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 35e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Chengpublic class GoogleAccountType extends BaseAccountType { 36e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng private static final String TAG = "GoogleAccountType"; 37e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 380c2d07324cff8ee507aea072acf63f416470bdd1Yorke Lee /** 390c2d07324cff8ee507aea072acf63f416470bdd1Yorke Lee * The package name that we should load contacts.xml from and rely on to handle 40e5ac8b14a6549e18d811b7241911d1231cf5f5fcBrian Attwell * G+ account actions. Even though this points to gms, in some cases gms will still hand 41e5ac8b14a6549e18d811b7241911d1231cf5f5fcBrian Attwell * off responsibility to the G+ app. 420c2d07324cff8ee507aea072acf63f416470bdd1Yorke Lee */ 43e5ac8b14a6549e18d811b7241911d1231cf5f5fcBrian Attwell public static final String PLUS_EXTENSION_PACKAGE_NAME = "com.google.android.gms"; 440c2d07324cff8ee507aea072acf63f416470bdd1Yorke Lee 45e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng public static final String ACCOUNT_TYPE = "com.google"; 46e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 47e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng private static final List<String> mExtensionPackages = 480c2d07324cff8ee507aea072acf63f416470bdd1Yorke Lee Lists.newArrayList(PLUS_EXTENSION_PACKAGE_NAME); 49e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 50e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng public GoogleAccountType(Context context, String authenticatorPackageName) { 51e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng this.accountType = ACCOUNT_TYPE; 52e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng this.resourcePackageName = null; 53e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng this.syncAdapterPackageName = authenticatorPackageName; 54e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 55e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng try { 56e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng addDataKindStructuredName(context); 577a6daea69ea47c31a1b838a423e7cdaceafae753Gary Mai addDataKindName(context); 58e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng addDataKindPhoneticName(context); 59e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng addDataKindNickname(context); 60e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng addDataKindPhone(context); 61e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng addDataKindEmail(context); 62e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng addDataKindStructuredPostal(context); 63e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng addDataKindIm(context); 64e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng addDataKindOrganization(context); 65e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng addDataKindPhoto(context); 66e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng addDataKindNote(context); 67e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng addDataKindWebsite(context); 68e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng addDataKindSipAddress(context); 69e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng addDataKindGroupMembership(context); 70e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng addDataKindRelation(context); 71e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng addDataKindEvent(context); 721bd8826c81eff79551c79c3042aca22a1d905524yaolu addDataKindCustomField(context); 73e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 74e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng mIsInitialized = true; 75e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng } catch (DefinitionException e) { 763a0b483ff715959b88d7ef20877a7c89d211fde2Walter Jang FeedbackHelper.sendFeedback(context, TAG, "Failed to build google account type", e); 77e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng } 78e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng } 79e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 80e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng @Override 81e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng public List<String> getExtensionPackageNames() { 82e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng return mExtensionPackages; 83e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng } 84e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 85e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng @Override 86e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng protected DataKind addDataKindPhone(Context context) throws DefinitionException { 87e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng final DataKind kind = super.addDataKindPhone(context); 88e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 89e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeColumn = Phone.TYPE; 90e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList = Lists.newArrayList(); 91e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList.add(buildPhoneType(Phone.TYPE_MOBILE)); 92e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList.add(buildPhoneType(Phone.TYPE_WORK)); 93e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList.add(buildPhoneType(Phone.TYPE_HOME)); 94e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList.add(buildPhoneType(Phone.TYPE_MAIN)); 95e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList.add(buildPhoneType(Phone.TYPE_FAX_WORK).setSecondary(true)); 96e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList.add(buildPhoneType(Phone.TYPE_FAX_HOME).setSecondary(true)); 97e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList.add(buildPhoneType(Phone.TYPE_PAGER).setSecondary(true)); 98e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList.add(buildPhoneType(Phone.TYPE_OTHER)); 99e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList.add(buildPhoneType(Phone.TYPE_CUSTOM).setSecondary(true) 100e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng .setCustomColumn(Phone.LABEL)); 101e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 102e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList = Lists.newArrayList(); 103e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList.add(new EditField(Phone.NUMBER, R.string.phoneLabelsGroup, FLAGS_PHONE)); 104e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 105e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng return kind; 106e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng } 107e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 108e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng @Override 109e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng protected DataKind addDataKindEmail(Context context) throws DefinitionException { 110e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng final DataKind kind = super.addDataKindEmail(context); 111e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 112e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeColumn = Email.TYPE; 113e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList = Lists.newArrayList(); 114e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList.add(buildEmailType(Email.TYPE_HOME)); 115e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList.add(buildEmailType(Email.TYPE_WORK)); 116e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList.add(buildEmailType(Email.TYPE_OTHER)); 117e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList.add(buildEmailType(Email.TYPE_CUSTOM).setSecondary(true).setCustomColumn( 118e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng Email.LABEL)); 119e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 120e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList = Lists.newArrayList(); 121e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList.add(new EditField(Email.DATA, R.string.emailLabelsGroup, FLAGS_EMAIL)); 122e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 123e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng return kind; 124e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng } 125e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 126e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng private DataKind addDataKindRelation(Context context) throws DefinitionException { 127e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng DataKind kind = addKind(new DataKind(Relation.CONTENT_ITEM_TYPE, 128913e18a7d53132fefb59229574cd329c9935b85fBrian Attwell R.string.relationLabelsGroup, Weight.RELATIONSHIP, true)); 129e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.actionHeader = new RelationActionInflater(); 130e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.actionBody = new SimpleInflater(Relation.NAME); 131e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 132e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeColumn = Relation.TYPE; 133e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList = Lists.newArrayList(); 134e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList.add(buildRelationType(Relation.TYPE_ASSISTANT)); 135e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList.add(buildRelationType(Relation.TYPE_BROTHER)); 136e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList.add(buildRelationType(Relation.TYPE_CHILD)); 137e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList.add(buildRelationType(Relation.TYPE_DOMESTIC_PARTNER)); 138e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList.add(buildRelationType(Relation.TYPE_FATHER)); 139e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList.add(buildRelationType(Relation.TYPE_FRIEND)); 140e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList.add(buildRelationType(Relation.TYPE_MANAGER)); 141e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList.add(buildRelationType(Relation.TYPE_MOTHER)); 142e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList.add(buildRelationType(Relation.TYPE_PARENT)); 143e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList.add(buildRelationType(Relation.TYPE_PARTNER)); 144e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList.add(buildRelationType(Relation.TYPE_REFERRED_BY)); 145e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList.add(buildRelationType(Relation.TYPE_RELATIVE)); 146e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList.add(buildRelationType(Relation.TYPE_SISTER)); 147e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList.add(buildRelationType(Relation.TYPE_SPOUSE)); 148e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList.add(buildRelationType(Relation.TYPE_CUSTOM).setSecondary(true) 149e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng .setCustomColumn(Relation.LABEL)); 150e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 151e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.defaultValues = new ContentValues(); 152e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.defaultValues.put(Relation.TYPE, Relation.TYPE_SPOUSE); 153e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 154e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList = Lists.newArrayList(); 155e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList.add(new EditField(Relation.DATA, R.string.relationLabelsGroup, 156e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng FLAGS_RELATION)); 157e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 158e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng return kind; 159e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng } 160e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 161e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng private DataKind addDataKindEvent(Context context) throws DefinitionException { 162e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng DataKind kind = addKind(new DataKind(Event.CONTENT_ITEM_TYPE, 163913e18a7d53132fefb59229574cd329c9935b85fBrian Attwell R.string.eventLabelsGroup, Weight.EVENT, true)); 164e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.actionHeader = new EventActionInflater(); 165e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.actionBody = new SimpleInflater(Event.START_DATE); 166e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 167e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeColumn = Event.TYPE; 168e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList = Lists.newArrayList(); 169e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.dateFormatWithoutYear = CommonDateUtils.NO_YEAR_DATE_FORMAT; 170e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.dateFormatWithYear = CommonDateUtils.FULL_DATE_FORMAT; 171e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList.add(buildEventType(Event.TYPE_BIRTHDAY, true).setSpecificMax(1)); 172e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList.add(buildEventType(Event.TYPE_ANNIVERSARY, false)); 173e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList.add(buildEventType(Event.TYPE_OTHER, false)); 174e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.typeList.add(buildEventType(Event.TYPE_CUSTOM, false).setSecondary(true) 175e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng .setCustomColumn(Event.LABEL)); 176e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 177e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.defaultValues = new ContentValues(); 178e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.defaultValues.put(Event.TYPE, Event.TYPE_BIRTHDAY); 179e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 180e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList = Lists.newArrayList(); 181e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng kind.fieldList.add(new EditField(Event.DATA, R.string.eventLabelsGroup, FLAGS_EVENT)); 182e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 183e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng return kind; 184e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng } 185e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 186e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng @Override 187e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng public boolean isGroupMembershipEditable() { 188e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng return true; 189e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng } 190e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 191e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng @Override 192e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng public boolean areContactsWritable() { 193e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng return true; 194e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng } 195e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 196e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng @Override 197e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng public String getViewContactNotifyServiceClassName() { 198e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng return "com.google.android.syncadapters.contacts." + 199e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng "SyncHighResPhotoIntentService"; 200e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng } 201e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng 202e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng @Override 203e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng public String getViewContactNotifyServicePackageName() { 204e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng return "com.google.android.syncadapters.contacts"; 205e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng } 206e88fcd3e82377aa3579ddf98389b6e20bae34c07Chiao Cheng} 207