- refactored some code to do with how contacts are imported - Vcards (and ContactData) instances now generate a CacheIdentifier when they are finalised so that ContactData instances that do not have enough information to identify them can be discovered then - importContact() now calls the private method checkForDuplicate(), renamed from isImportRequired(), and return if it is not - importContact() and checkForDuplicate() now use the ContactData's generated CacheIdentifier- added ContactReader interface - added ContactsContactReader class to read old-style android.Contacts data - updated FileChooser from import contacts app - updated TODO - added Doit activity - added Exporter - added VcardExporter that writes vCards- refactored some code to do with how contacts are imported - Vcards (and ContactData) instances now generate a CacheIdentifier when they are finalised so that ContactData instances that do not have enough information to identify them can be discovered then - importContact() now calls the private method checkForDuplicate(), renamed from isImportRequired(), and return if it is not - importContact() and checkForDuplicate() now use the ContactData's generated CacheIdentifier