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