1ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey/* 2ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey * Copyright (C) 2009 The Android Open Source Project 3ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey * 4ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey * Licensed under the Apache License, Version 2.0 (the "License"); 5ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey * you may not use this file except in compliance with the License. 6ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey * You may obtain a copy of the License at 7ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey * 8ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey * http://www.apache.org/licenses/LICENSE-2.0 9ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey * 10ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey * Unless required by applicable law or agreed to in writing, software 11ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey * distributed under the License is distributed on an "AS IS" BASIS, 12ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey * See the License for the specific language governing permissions and 14ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey * limitations under the License. 15ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey */ 16ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 17851222a96b5d68602fb361ea3527101e893f67e3Maurice Chupackage com.android.contacts.model.account; 18ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 190540f8b74a44f5d1da519cc54e598d75f0e572ddDaniel Lehmannimport android.content.ContentValues; 20ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkeyimport android.content.Context; 21ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkeyimport android.provider.ContactsContract.CommonDataKinds.Email; 22392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmannimport android.provider.ContactsContract.CommonDataKinds.Event; 23ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkeyimport android.provider.ContactsContract.CommonDataKinds.Phone; 240540f8b74a44f5d1da519cc54e598d75f0e572ddDaniel Lehmannimport android.provider.ContactsContract.CommonDataKinds.Relation; 2586ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onukiimport android.util.Log; 26ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 27e0b2f1e2d01d1ac52ba207dc7ce76971d853298eChiao Chengimport com.android.contacts.R; 28851222a96b5d68602fb361ea3527101e893f67e3Maurice Chuimport com.android.contacts.model.dataitem.DataKind; 29e0b2f1e2d01d1ac52ba207dc7ce76971d853298eChiao Chengimport com.android.contacts.util.DateUtils; 30e0b2f1e2d01d1ac52ba207dc7ce76971d853298eChiao Chengimport com.google.common.collect.Lists; 31e0b2f1e2d01d1ac52ba207dc7ce76971d853298eChiao Cheng 322b3f3c54d3beb017b2f59f19e9ce0ecc3e039dbcDave Santoroimport java.util.List; 332b3f3c54d3beb017b2f59f19e9ce0ecc3e039dbcDave Santoro 341dc28bef7d5353310359c3711b6cdac390d8a2e0Dmitri Plotnikovpublic class GoogleAccountType extends BaseAccountType { 3586ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki private static final String TAG = "GoogleAccountType"; 3686ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki 37386dd954869544581f8825148ac41ed15d465ab2Costin Manolache public static final String ACCOUNT_TYPE = "com.google"; 389f26ce5718f08fa96f2bc0cbdc27831c9942b06aFred Quintana 398473de7e6da9a33c5a8c128f88ae9e493a52ece4Dmitri Plotnikov private static final List<String> mExtensionPackages = 408473de7e6da9a33c5a8c128f88ae9e493a52ece4Dmitri Plotnikov Lists.newArrayList("com.google.android.apps.plus"); 418473de7e6da9a33c5a8c128f88ae9e493a52ece4Dmitri Plotnikov 4282a4f4408b74e193b43a12dc8e16c946a93bae4aMakoto Onuki public GoogleAccountType(Context context, String authenticatorPackageName) { 43ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey this.accountType = ACCOUNT_TYPE; 4482a4f4408b74e193b43a12dc8e16c946a93bae4aMakoto Onuki this.resourcePackageName = null; 4582a4f4408b74e193b43a12dc8e16c946a93bae4aMakoto Onuki this.syncAdapterPackageName = authenticatorPackageName; 46ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 4786ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki try { 4886ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki addDataKindStructuredName(context); 4986ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki addDataKindDisplayName(context); 5086ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki addDataKindPhoneticName(context); 5186ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki addDataKindNickname(context); 5286ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki addDataKindPhone(context); 5386ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki addDataKindEmail(context); 5486ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki addDataKindStructuredPostal(context); 5586ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki addDataKindIm(context); 5686ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki addDataKindOrganization(context); 5786ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki addDataKindPhoto(context); 5886ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki addDataKindNote(context); 5986ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki addDataKindWebsite(context); 6086ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki addDataKindSipAddress(context); 6186ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki addDataKindGroupMembership(context); 6286ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki addDataKindRelation(context); 6386ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki addDataKindEvent(context); 6486ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki 6586ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki mIsInitialized = true; 6686ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki } catch (DefinitionException e) { 6786ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki Log.e(TAG, "Problem building account type", e); 6886ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki } 69ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey } 70ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 71ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey @Override 722b3f3c54d3beb017b2f59f19e9ce0ecc3e039dbcDave Santoro public List<String> getExtensionPackageNames() { 738473de7e6da9a33c5a8c128f88ae9e493a52ece4Dmitri Plotnikov return mExtensionPackages; 742b3f3c54d3beb017b2f59f19e9ce0ecc3e039dbcDave Santoro } 752b3f3c54d3beb017b2f59f19e9ce0ecc3e039dbcDave Santoro 762b3f3c54d3beb017b2f59f19e9ce0ecc3e039dbcDave Santoro @Override 7786ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki protected DataKind addDataKindPhone(Context context) throws DefinitionException { 78b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov final DataKind kind = super.addDataKindPhone(context); 79b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov 80b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeColumn = Phone.TYPE; 81b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList = Lists.newArrayList(); 82b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList.add(buildPhoneType(Phone.TYPE_MOBILE)); 83b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList.add(buildPhoneType(Phone.TYPE_WORK)); 84056305838b1381a45f751a6894c0fcb802abd5acDaniel Lehmann kind.typeList.add(buildPhoneType(Phone.TYPE_HOME)); 85056305838b1381a45f751a6894c0fcb802abd5acDaniel Lehmann kind.typeList.add(buildPhoneType(Phone.TYPE_MAIN)); 86b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList.add(buildPhoneType(Phone.TYPE_FAX_WORK).setSecondary(true)); 87b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList.add(buildPhoneType(Phone.TYPE_FAX_HOME).setSecondary(true)); 88b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList.add(buildPhoneType(Phone.TYPE_PAGER).setSecondary(true)); 89b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList.add(buildPhoneType(Phone.TYPE_OTHER)); 90b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList.add(buildPhoneType(Phone.TYPE_CUSTOM).setSecondary(true) 91b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov .setCustomColumn(Phone.LABEL)); 92b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov 93b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.fieldList = Lists.newArrayList(); 94b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.fieldList.add(new EditField(Phone.NUMBER, R.string.phoneLabelsGroup, FLAGS_PHONE)); 95ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 96ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey return kind; 97ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey } 98ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 99ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey @Override 10086ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki protected DataKind addDataKindEmail(Context context) throws DefinitionException { 101b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov final DataKind kind = super.addDataKindEmail(context); 102b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov 103b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeColumn = Email.TYPE; 104b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList = Lists.newArrayList(); 105b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList.add(buildEmailType(Email.TYPE_HOME)); 106b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList.add(buildEmailType(Email.TYPE_WORK)); 107b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList.add(buildEmailType(Email.TYPE_OTHER)); 108b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList.add(buildEmailType(Email.TYPE_CUSTOM).setSecondary(true).setCustomColumn( 109b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov Email.LABEL)); 110b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov 111b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.fieldList = Lists.newArrayList(); 112b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.fieldList.add(new EditField(Email.DATA, R.string.emailLabelsGroup, FLAGS_EMAIL)); 113ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 114ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey return kind; 115ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey } 116ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey 11786ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki private DataKind addDataKindRelation(Context context) throws DefinitionException { 118b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov DataKind kind = addKind(new DataKind(Relation.CONTENT_ITEM_TYPE, 11950a27b70581b0191995969c63edd1f6a3db3d1b7Makoto Onuki R.string.relationLabelsGroup, 160, true, R.layout.text_fields_editor_view)); 120b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.actionHeader = new RelationActionInflater(); 121b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.actionBody = new SimpleInflater(Relation.NAME); 122b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov 123b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeColumn = Relation.TYPE; 124b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList = Lists.newArrayList(); 125b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList.add(buildRelationType(Relation.TYPE_ASSISTANT)); 126b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList.add(buildRelationType(Relation.TYPE_BROTHER)); 127b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList.add(buildRelationType(Relation.TYPE_CHILD)); 128b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList.add(buildRelationType(Relation.TYPE_DOMESTIC_PARTNER)); 129b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList.add(buildRelationType(Relation.TYPE_FATHER)); 130b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList.add(buildRelationType(Relation.TYPE_FRIEND)); 131b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList.add(buildRelationType(Relation.TYPE_MANAGER)); 132b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList.add(buildRelationType(Relation.TYPE_MOTHER)); 133b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList.add(buildRelationType(Relation.TYPE_PARENT)); 134b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList.add(buildRelationType(Relation.TYPE_PARTNER)); 135b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList.add(buildRelationType(Relation.TYPE_REFERRED_BY)); 136b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList.add(buildRelationType(Relation.TYPE_RELATIVE)); 137b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList.add(buildRelationType(Relation.TYPE_SISTER)); 138b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList.add(buildRelationType(Relation.TYPE_SPOUSE)); 139b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList.add(buildRelationType(Relation.TYPE_CUSTOM).setSecondary(true) 140b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov .setCustomColumn(Relation.LABEL)); 141b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov 142b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.defaultValues = new ContentValues(); 143b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.defaultValues.put(Relation.TYPE, Relation.TYPE_SPOUSE); 144b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov 145b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.fieldList = Lists.newArrayList(); 146b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.fieldList.add(new EditField(Relation.DATA, R.string.relationLabelsGroup, 147b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov FLAGS_RELATION)); 1480540f8b74a44f5d1da519cc54e598d75f0e572ddDaniel Lehmann 1490540f8b74a44f5d1da519cc54e598d75f0e572ddDaniel Lehmann return kind; 1500540f8b74a44f5d1da519cc54e598d75f0e572ddDaniel Lehmann } 1510540f8b74a44f5d1da519cc54e598d75f0e572ddDaniel Lehmann 15286ccb6ce2ff6078b06add93aab489951ef83bc72Makoto Onuki private DataKind addDataKindEvent(Context context) throws DefinitionException { 153b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov DataKind kind = addKind(new DataKind(Event.CONTENT_ITEM_TYPE, 15450a27b70581b0191995969c63edd1f6a3db3d1b7Makoto Onuki R.string.eventLabelsGroup, 150, true, R.layout.event_field_editor_view)); 155b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.actionHeader = new EventActionInflater(); 156b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.actionBody = new SimpleInflater(Event.START_DATE); 157b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov 158b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeColumn = Event.TYPE; 159b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList = Lists.newArrayList(); 160b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.dateFormatWithoutYear = DateUtils.NO_YEAR_DATE_FORMAT; 161b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.dateFormatWithYear = DateUtils.FULL_DATE_FORMAT; 162b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList.add(buildEventType(Event.TYPE_BIRTHDAY, true).setSpecificMax(1)); 163b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList.add(buildEventType(Event.TYPE_ANNIVERSARY, false)); 164b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList.add(buildEventType(Event.TYPE_OTHER, false)); 165b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.typeList.add(buildEventType(Event.TYPE_CUSTOM, false).setSecondary(true) 166b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov .setCustomColumn(Event.LABEL)); 167b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov 168b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.defaultValues = new ContentValues(); 169b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.defaultValues.put(Event.TYPE, Event.TYPE_BIRTHDAY); 170b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov 171b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.fieldList = Lists.newArrayList(); 172b77be6d2ad06edfd8751f55043e4aa9fd9f36015Dmitri Plotnikov kind.fieldList.add(new EditField(Event.DATA, R.string.eventLabelsGroup, FLAGS_EVENT)); 173392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 174392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann return kind; 175392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann } 176392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 177ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey @Override 178fd33cc3ab956222dffa6b669a13a614747a5cdffKatherine Kuan public boolean isGroupMembershipEditable() { 179fd33cc3ab956222dffa6b669a13a614747a5cdffKatherine Kuan return true; 180fd33cc3ab956222dffa6b669a13a614747a5cdffKatherine Kuan } 18196e87fd6e808e9d853263ffeb5104f3253a18639Daniel Lehmann 18296e87fd6e808e9d853263ffeb5104f3253a18639Daniel Lehmann @Override 18396e87fd6e808e9d853263ffeb5104f3253a18639Daniel Lehmann public boolean areContactsWritable() { 18496e87fd6e808e9d853263ffeb5104f3253a18639Daniel Lehmann return true; 18596e87fd6e808e9d853263ffeb5104f3253a18639Daniel Lehmann } 18682a4f4408b74e193b43a12dc8e16c946a93bae4aMakoto Onuki 18782a4f4408b74e193b43a12dc8e16c946a93bae4aMakoto Onuki @Override 18882a4f4408b74e193b43a12dc8e16c946a93bae4aMakoto Onuki public String getViewContactNotifyServiceClassName() { 18982a4f4408b74e193b43a12dc8e16c946a93bae4aMakoto Onuki return "com.google.android.syncadapters.contacts." + 19082a4f4408b74e193b43a12dc8e16c946a93bae4aMakoto Onuki "SyncHighResPhotoIntentService"; 19182a4f4408b74e193b43a12dc8e16c946a93bae4aMakoto Onuki } 19282a4f4408b74e193b43a12dc8e16c946a93bae4aMakoto Onuki 19382a4f4408b74e193b43a12dc8e16c946a93bae4aMakoto Onuki @Override 19482a4f4408b74e193b43a12dc8e16c946a93bae4aMakoto Onuki public String getViewContactNotifyServicePackageName() { 19582a4f4408b74e193b43a12dc8e16c946a93bae4aMakoto Onuki return "com.google.android.syncadapters.contacts"; 19682a4f4408b74e193b43a12dc8e16c946a93bae4aMakoto Onuki } 197ab066931efd4b6408b5f57026b421eb4a7934a39Jeff Sharkey} 198