Difference between revisions of "HTC Sense issue"

From dmfswiki
Jump to: navigation, search
Line 7: Line 7:
 
Please note, both issues are present on HTC devices only! Those things work well on all other devices.
 
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 [https://play.google.com/store/apps/details?id=org.dmfs.android.contacts Contact Editor free] or [https://play.google.com/store/apps/details?id=org.dmfs.android.contacteditorpp Contact Editor Pro]. Both Apps have a launcher icon called "create contact" which starts an empty editor. SmoothSync for Cloud Contacts users should either install "Contact Editor free" or wait for the next update which will add a "create contact" launcher icon.  
+
At present there is only one known workaround for the "create contact" issue. CardDAV-Sync users should install [https://play.google.com/store/apps/details?id=org.dmfs.android.contacts Contact Editor free] or [https://play.google.com/store/apps/details?id=org.dmfs.android.contacteditorpp 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/
 
Please contact HTC and let them know about this issue: http://www.htc.com/us/contact/email/

Revision as of 11:32, 17 June 2013

This information is meant for users of an HTC One device.

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.

Removing the <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.