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