HTC Sense issue
This information is meant for users of an HTC One device.
Update (2013-11-05): HTC released an update bringing Android 4.3 and HTC Sense 5.5 which fixes one of these issues. Now it's possible to create CardDAV or SmoothSync contacts using the native editor. Also the edit option in the detail view is available again. Thanks HTC! However, there is still one issue left: It's still not possible to use a 3rd party editor when adding contacts. When editing contacts you can choose from the list of installed contact editor apps, but that doesn't work when adding a contact. The contacts app always calls the native editor.
Unfortunately, the contacts app of HTC's Sense is broken. Since HTC updated to Android version 4.1, it's impossible to create contacts for some 3rd party sync adapters like CardDAV-Sync or SmoothSync for Cloud Contacts. HTC's contact editor doesn't provide an option to select accounts managed by those apps for new contacts. A related issue is that you can't edit those contacts from within the contact details view. To edit a contact you have to press and hold a contact in the contacts list and select "edit" from the context menu. Both things used to work properly on HTC devices with Android 4.0.x.
To make it even worse there is a second bug that is around since HTC introduced the HTC One devices. On all non-HTC devices you have a choice to use 3rd party contact editors when creating a contact, not so with HTC Sense. That means you can't even switch to a 3rd party contact editor like "Contact Editor free" or "Contact Editor Pro" to create contacts for CardDAV or SmoothSync. Interestingly you still have that choice when you edit a contact.
Please note, both issues are present on HTC devices only! Those things work well on all other devices.
At present there is only one known workaround for the "create contact" issue. CardDAV-Sync users should install Contact Editor free or Contact Editor Pro. Both Apps have a launcher icon called "create contact" which starts an empty editor. SmoothSync for Cloud Contacts users should the "create contact" launcher icon provided by SmoothSync.
Please contact HTC and let them know about this issue: http://www.htc.com/us/contact/email/
Update: Here is what I received from HTC's customer support on Feb. 20th 2013:
Hello Marten, My name is [name removed], and I am a Customer Service Agent at HTC. Thank you for your email, we appreciate all feed back from our customers. I will escalate this case to the care team, so that they can investigate this problem. Once they provide me with a solution, I will return to you with an answer. I look forward to hearing that this has resolved your enquiry, to close your email or alternatively to reply to me please follow the links below.
So there is hope they'll fix it.
Update 2: I've send a anther enquiry to HTC here is what they replied:
Hallo Marten Gajda, Thank you for your email, Unfortunately we do not support 3rd party applications and therefore cannot assist with this problem. Is there anything else I can help you with?
Update 3: Meanwhile I've found out what causes HTC to ignore my app. Unfortunately that won't help to find a workaround.
Since Android 4.0.3 a sync adapter can supply some kind of schema that defines the fields supported. That's used by Android's contacts app to prepare the editor view for a specific account type. It'll show only fields supported by this account.
This file looks like :
<ContactsSource xmlns:android="http://schemas.android.com/apk/res/android"> <EditSchema> <DataKind kind="name" ...> <DataKind kind="phone" > <Type type="mobile" /> <Type type="home" /> ... </DataKind> <DataKind kind="email" > <Type type="home" /> <Type type="work" /> ... </DataKind> ... </EditSchema> </ContactsSource>
However, that doesn't work in HTC Sense. As soon as I add the
<EditSchema> tag Sense ignores the account. Many other sync apps don't need to define an
<EditSchema>, because they don't support two-way-sync at all (like Facebook, Whatsapp or Yahoo!), that's why HTC Sense doesn't ignore them.
<EditSchema> is not an option. HTC would see the account type, but you still wouldn't be able to create or edit contacts (because there is no
<EditSchema> that the editor can use).
Update 4: I've just found the following log entry on my HTC device:
D/AccountTypeManager(723): Registering external account type=org.dmfs.carddav.account, packageName=org.dmfs.carddav.Sync E/ExternalAccountType( 723): Problem reading XML for external package org.dmfs.carddav.Sync E/ExternalAccountType( 723): com.android.htccontacts.model.AccountType$DefinitionException: #phoneticName must be supported E/ExternalAccountType( 723): at com.android.htccontacts.model.ExternalAccountType.checkKindExists(ExternalAccountType.java:215) E/ExternalAccountType( 723): at com.android.htccontacts.model.ExternalAccountType.<init>(ExternalAccountType.java:138) E/ExternalAccountType( 723): at com.android.htccontacts.model.ExternalAccountType.<init>(ExternalAccountType.java:100) E/ExternalAccountType( 723): at com.android.htccontacts.model.AccountTypeManagerImpl.loadAccountsInBackground(AccountTypeManager.java:557) E/ExternalAccountType( 723): at com.android.htccontacts.model.AccountTypeManagerImpl.processSIMBroadCastIntent(AccountTypeManager.java:1275) E/ExternalAccountType( 723): at com.android.htccontacts.model.AccountTypeManagerImpl.access$100(AccountTypeManager.java:201) E/ExternalAccountType( 723): at com.android.htccontacts.model.AccountTypeManagerImpl$4.handleMessage(AccountTypeManager.java:366) E/ExternalAccountType( 723): at android.os.Handler.dispatchMessage(Handler.java:99) E/ExternalAccountType( 723): at android.os.Looper.loop(Looper.java:155) E/ExternalAccountType( 723): at android.os.HandlerThread.run(HandlerThread.java:60)
That indicates there is indeed something wrong with the XML processor on HTC devices. All other devices can read the same XML file.
Update 5: It's worth to mention that SmoothSync and CardDAV-Sync specify phonetic names in the definition file just like stock Android expects it.
<DataKind kind="name" maxOccurs="1" supportsDisplayName="true" supportsMiddleName="true" supportsPhoneticFamilyName="true" supportsPhoneticGivenName="true" supportsPhoneticMiddleName="true" supportsPrefix="true" supportsSuffix="true" > </DataKind>
Update 6: Here is HTC's latest response (from May 24th 2013):
Thank you for providing me with the additional details to enable me to resolve your enquiry. The 'bug' you have been referring to is in fact a predetermined design feature of HTC Sense. It may be changed either way in future versions of the software but there is no official word on this now. I'm sorry this has created an inconvenience for you. If you are developing an app for thwe HTC ONE in particular, I would suggest using a different design route to meet your design brief.
Yes, they say this bug is a feature.
HTC and HTC Sense are trademarks of HTC Corporation.