{ "id": "62526", "key": "TIMOB-1894", "fields": { "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false }, "project": { "id": "10153", "key": "TIMOB", "name": "Titanium SDK/CLI", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [ { "id": "13271", "description": "Release 2.1.0", "name": "Release 2.1.0", "archived": false, "released": true, "releaseDate": "2012-06-29" }, { "id": "13408", "description": "Sprint 2012-12 API", "name": "Sprint 2012-12 API", "archived": true, "released": true, "releaseDate": "2012-06-17" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2012-06-15T21:53:18.000+0000", "created": "2011-04-15T03:04:55.000+0000", "priority": { "name": "High", "id": "2" }, "labels": [ "api", "look1", "parity" ], "versions": [ { "id": "13272", "description": "Release 2.0.1", "name": "Release 2.0.1", "archived": true, "released": true, "releaseDate": "2012-04-16" } ], "issuelinks": [ { "id": "16903", "type": { "id": "10002", "name": "Duplicate", "inward": "is duplicated by", "outward": "duplicates" }, "inwardIssue": { "id": "60868", "key": "TIMOB-236", "fields": { "summary": "Android: Contacts: Add support for create, delete, and update", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "Medium", "id": "3" }, "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false } } } }, { "id": "17851", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "inwardIssue": { "id": "93358", "key": "TIMOB-9589", "fields": { "summary": "Android: Support modify contact", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "Medium", "id": "3" }, "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false } } } } ], "assignee": { "name": "hpham", "key": "hpham", "displayName": "Hieu Pham", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2017-03-16T22:52:13.000+0000", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "10202", "name": "Android", "description": "Android Platform" } ], "description": "{html}
Currently the android implementation of our contacts api is\r\nread-only. We don't support modifications of contacts or creation\r\nof new contacts. We should.
assigning to Herr T for milestoning.
for me the priority should be upgraded to high, this situation\nleaves cross-platform apps crippled on one platform
Research for M04
This was put into M04 only for research purposes to try to scope\nthe effort. After review, my assessment is that this is will be a\nfairly major effort.
ABRecordRef
\n(AB
being the prefix for address book stuff). So when\nproperties are changed on Titanium's TiContactsPerson
,\nthe properties are then just changed on that object. Android\ndoesn't do this provider stuff with objects, rather via queries in\nprovider database system. So when changes are made to properties of\na PersonProxy
in Titanium Android, we can't just turn\naround and update an in-memory object.Titanium.Contacts.save()
-- they just need to call\nABAddressBookSave
and all changes to\nABRecordRef
s up to that point are committed. In the\ncase of Android, we'll have to work harder in the sense of somehow\ncaching changes and applying them at save()
time.PersonProxy
. If the Titanium JS code then modifies\nproperties on that PersonProxy
and\nTitanium.Contacts.save()
is called, which of the\naggregated contact entries should be updated? We have to think\nabout that carefully. (Note: If I use my Android 2.2 phone and go\nto People, pick a contact which I know is an aggregate and click\nthe menu and choose \"Edit\", I'm prompted with a list of the\nunderlying (non-aggregate) entries and asked to select which one I\nwant to edit. So you can see this is an issue.)Titanium.Contacts.save()
would be to cache them in an\narray list containing Android ContentProviderOperation
\ninstances and then use ContentResolver.applyBatch
when\nTitanium.Contacts.save()
is called. None of\nthat stuff is available in Android 1.6.Assigning for further milestoning.
This is a natural fit for the next release when we drop support\nfor Api Level 4.