{ "id": "87644", "key": "TIMOB-7948", "fields": { "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "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": "14164", "description": "Release 3.0.2", "name": "Release 3.0.2", "archived": true, "released": true, "releaseDate": "2013-02-19" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2013-07-02T20:43:11.000+0000", "created": "2012-03-09T11:15:52.000+0000", "priority": { "name": "Medium", "id": "3" }, "labels": [ "tbs-2.1.0" ], "versions": [ { "id": "12593", "name": "Release 2.0.0", "archived": false, "released": true, "releaseDate": "2012-03-30" }, { "id": "14613", "description": "Release 2.1.4", "name": "Release 2.1.4", "archived": true, "released": true, "releaseDate": "2012-11-12" } ], "issuelinks": [], "assignee": { "name": "hpham", "key": "hpham", "displayName": "Hieu Pham", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2017-03-24T20:55:36.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": "Here is the sample app from our Calendar TDoc that shows the error. The error seems to happen when {{getEventsInYear}} is called\r\n\r\n{code}\r\nvar calendars = [];\r\nvar selectedCalendarName;\r\nvar selectedCalendarId;\r\nvar pickerData = [];\r\n\r\nvar win = Ti.UI.createWindow({\r\n backgroundColor: 'white',\r\n exitOnClose: true,\r\n fullscreen: false,\r\n layout: 'vertical',\r\n title: 'Calendar Demo'\r\n});\r\n\r\nvar scrollView = Ti.UI.createScrollView({\r\n backgroundColor: '#eee',\r\n height: 500,\r\n top: 20\r\n});\r\n\r\nvar label = Ti.UI.createLabel({\r\n backgroundColor: 'white',\r\n text: 'Click on the button to display the events for the selected calendar',\r\n textAlign: Ti.UI.TEXT_ALIGNMENT_CENTER,\r\n top: 20\r\n});\r\nscrollView.add(label);\r\n\r\nvar selectableCalendars = Ti.Android.Calendar.selectableCalendars;\r\nfor (var i = 0, ilen = selectableCalendars.length; i < ilen; i++) {\r\n calendars.push({ name: selectableCalendars[i].name, id: selectableCalendars[i].id });\r\n pickerData.push( Ti.UI.createPickerRow({ title: calendars[i].name }) );\r\n if(i === 0){\r\n selectedCalendarName = selectableCalendars[i].name;\r\n selectedCalendarId = selectableCalendars[i].id;\r\n }\r\n}\r\nvar selectableCalendars = null;\r\n\r\nif(!calendars.length){\r\n label.text = 'No calendars available. Select at least one in the native calendar before using this app';\r\n} else {\r\n label.text = 'Click button to view calendar events';\r\n \r\n var picker = Ti.UI.createPicker({\r\n top:20\r\n });\r\n \r\n picker.add(pickerData);\r\n win.add(picker);\r\n \r\n picker.addEventListener('change', function(e){\r\n for (var i = 0, ilen = calendars.length; i < ilen; i++) {\r\n if(calendars[i].name === e.row.title){\r\n selectedCalendarName = calendars[i].name;\r\n selectedCalendarId = calendars[i].id;\r\n }\r\n }\r\n });\r\n \r\n var button = Ti.UI.createButton({\r\n title: 'View events',\r\n top: 20\r\n });\r\n win.add(button);\r\n \r\n button.addEventListener('click', function(e){\r\n label.text = 'Generating...';\r\n \r\n var currentYear = new Date().getFullYear();\r\n \r\n var consoleString = '';\r\n \r\n function print(s) {\r\n if (consoleString.length) {\r\n consoleString = consoleString + '\\n';\r\n }\r\n consoleString = consoleString + s;\r\n }\r\n \r\n var calendar = Ti.Android.Calendar.getCalendarById(selectedCalendarId);\r\n \r\n function printReminder(r) {\r\n var typetext = '[method unknown]';\r\n if (r.method == Ti.Android.Calendar.METHOD_EMAIL) {\r\n typetext = 'Email';\r\n } else if (r.method == Ti.Android.Calendar.METHOD_SMS) {\r\n typetext = 'SMS';\r\n } else if (r.method == Ti.Android.Calendar.METHOD_ALERT) {\r\n typetext = 'Alert';\r\n } else if (r.method == Ti.Android.Calendar.METHOD_DEFAULT) {\r\n typetext = '[default reminder method]';\r\n }\r\n print(typetext + ' reminder to be sent ' + r.minutes + ' minutes before the event');\r\n }\r\n \r\n function printAlert(a) {\r\n print('Alert id ' + a.id + ' begin ' + a.begin + '; end ' + a.end + '; alarmTime ' + a.alarmTime + '; minutes ' + a.minutes);\r\n }\r\n \r\n function printEvent(event) {\r\n if (event.allDay) {\r\n print('Event: ' + event.title + '; ' + event.begin.toLocaleDateString() + ' (all day)');\r\n } else {\r\n print('Event: ' + event.title + '; ' + event.begin.toLocaleDateString() + ' ' + event.begin.toLocaleTimeString()+ '-' + event.end.toLocaleTimeString());\r\n }\r\n \r\n var reminders = event.reminders;\r\n if (reminders && reminders.length) {\r\n print('There is/are ' + reminders.length + ' reminder(s)');\r\n for (var i = 0; i < reminders.length; i++) {\r\n printReminder(reminders[i]);\r\n }\r\n }\r\n \r\n print('hasAlarm? ' + event.hasAlarm);\r\n var alerts = event.alerts;\r\n if (alerts && alerts.length) {\r\n for (var i = 0; i < alerts.length; i++) {\r\n printAlert(alerts[i]);\r\n }\r\n }\r\n \r\n var status = event.status;\r\n if (status == Ti.Android.Calendar.STATUS_TENTATIVE) {\r\n print('This event is tentative');\r\n }\r\n if (status == Ti.Android.Calendar.STATUS_CONFIRMED) {\r\n print('This event is confirmed');\r\n }\r\n if (status == Ti.Android.Calendar.STATUS_CANCELED) {\r\n print('This event was canceled');\r\n }\r\n }\r\n \r\n var events = calendar.getEventsInYear(currentYear);\r\n if (events && events.length) {\r\n print(events.length + ' event(s) in ' + currentYear);\r\n print('');\r\n for (var i = 0; i < events.length; i++) {\r\n printEvent(events[i]);\r\n print('');\r\n }\r\n } else {\r\n print('No events');\r\n }\r\n \r\n label.text = consoleString;\r\n });\r\n}\r\n\r\nwin.add(scrollView);\r\n\r\nwin.open();\r\n{code}\r\n\r\nAlso make sure you add READ_CALENDAR and WRITE_CALENDAR permissions to your tiapp.xml:\r\n{code}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n{code}\r\n\r\nAnd finally, here is the trace:\r\n{code}\r\n/CursorWrapperInner(31255): Cursor finalized without prior close()\r\nE/DatabaseUtils(31274): Writing exception to parcel\r\nE/DatabaseUtils(31274): java.lang.IllegalArgumentException: Invalid column visibility\r\nE/DatabaseUtils(31274): \tat android.database.sqlite.SQLiteQueryBuilder.computeProjection(SQLiteQueryBuilder.java:588)\r\nE/DatabaseUtils(31274): \tat android.database.sqlite.SQLiteQueryBuilder.buildQuery(SQLiteQueryBuilder.java:403)\r\nE/DatabaseUtils(31274): \tat android.database.sqlite.SQLiteQueryBuilder.query(SQLiteQueryBuilder.java:347)\r\nE/DatabaseUtils(31274): \tat android.database.sqlite.SQLiteQueryBuilder.query(SQLiteQueryBuilder.java:291)\r\nE/DatabaseUtils(31274): \tat com.android.providers.calendar.CalendarProvider2.handleInstanceQuery(CalendarProvider2.java:1015)\r\nE/DatabaseUtils(31274): \tat com.android.providers.calendar.CalendarProvider2.query(CalendarProvider2.java:840)\r\nE/DatabaseUtils(31274): \tat android.content.ContentProvider$Transport.query(ContentProvider.java:178)\r\nE/DatabaseUtils(31274): \tat android.content.ContentProviderNative.onTransact(ContentProviderNative.java:112)\r\nE/DatabaseUtils(31274): \tat android.os.Binder.execTransact(Binder.java:338)\r\nE/DatabaseUtils(31274): \tat dalvik.system.NativeStart.run(Native Method)\r\nE/TiJSError(31255): (main) [141129,172202] ----- Titanium Javascript Runtime Error -----\r\nE/TiJSError(31255): (main) [0,172202] - In pullRequests/1591.js:135,27\r\nE/TiJSError(31255): (main) [0,172202] - Message: Uncaught Error: Invalid column visibility\r\nE/TiJSError(31255): (main) [0,172202] - Source: var events = calendar.getEventsInYear(currentYear);\r\nE/V8Exception(31255): Exception occurred at pullRequests/1591.js:135: Uncaught Error: Invalid column visibility\r\n{code}", "attachment": [], "flagged": false, "summary": "Android: Invalid column visibility when querying events in Ti.Android.Calendar", "creator": { "name": "mculpepper", "key": "mculpepper", "displayName": "Marshall Culpepper", "active": true, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "mculpepper", "key": "mculpepper", "displayName": "Marshall Culpepper", "active": true, "timeZone": "America/Los_Angeles" }, "environment": "Galaxy Nexus / Android 4.0.2", "comment": { "comments": [ { "id": "231167", "author": { "name": "weevil", "key": "weevil", "displayName": "Kon Lovett", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Samsung Galaxy Tab (GT-P3113) w/ Android 4.0.4 & Ti SDK 2.1.4\r\n\r\nusing Ti.Android.Calendar.Calendar object getEventsBetweenDates(start, end):\r\n\r\n12-12 16:37:57.433: E/DatabaseUtils(4904): java.lang.IllegalArgumentException: Invalid column visibility\r\n12-12 16:37:57.433: E/DatabaseUtils(4904): \tat android.database.sqlite.SQLiteQueryBuilder.computeProjection(SQLiteQueryBuilder.java:588)\r\n12-12 16:37:57.433: E/DatabaseUtils(4904): \tat android.database.sqlite.SQLiteQueryBuilder.buildQuery(SQLiteQueryBuilder.java:403)\r\n12-12 16:37:57.433: E/DatabaseUtils(4904): \tat android.database.sqlite.SQLiteQueryBuilder.query(SQLiteQueryBuilder.java:347)\r\n12-12 16:37:57.433: E/DatabaseUtils(4904): \tat android.database.sqlite.SQLiteQueryBuilder.query(SQLiteQueryBuilder.java:291)\r\n12-12 16:37:57.433: E/DatabaseUtils(4904): \tat com.android.providers.calendar.CalendarProvider2.handleInstanceQuery(CalendarProvider2.java:1424)\r\n12-12 16:37:57.433: E/DatabaseUtils(4904): \tat com.android.providers.calendar.CalendarProvider2.query(CalendarProvider2.java:948)\r\n12-12 16:37:57.433: E/DatabaseUtils(4904): \tat android.content.ContentProvider$Transport.query(ContentProvider.java:181)\r\n12-12 16:37:57.433: E/DatabaseUtils(4904): \tat android.content.ContentProviderNative.onTransact(ContentProviderNative.java:112)\r\n12-12 16:37:57.433: E/DatabaseUtils(4904): \tat android.os.Binder.execTransact(Binder.java:338)\r\n12-12 16:37:57.433: E/DatabaseUtils(4904): \tat dalvik.system.NativeStart.run(Native Method)\r\n", "updateAuthor": { "name": "weevil", "key": "weevil", "displayName": "Kon Lovett", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-12-13T00:55:26.000+0000", "updated": "2012-12-13T00:55:26.000+0000" }, { "id": "243116", "author": { "name": "jithinv@exalture.com", "key": "jithinv@exalture.com", "displayName": "jithinpv", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Issue does not reproduces \r\n\r\nTested with\r\n\r\nTitanium Studio, build: 3.0.1.201212181159\r\nTitanium SDK version: 3.1.0 (03/11/13 15:43 0c88429)\r\nTitanium SDK version: 3.0.2 (02/07/13 16:46 a4def81)\r\nDevice: Samsung galaxy s duos Android version: 4.0.4\r\n\r\njithinpv\r\n", "updateAuthor": { "name": "jithinv@exalture.com", "key": "jithinv@exalture.com", "displayName": "jithinpv", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2013-03-20T05:31:02.000+0000", "updated": "2013-03-20T05:31:02.000+0000" }, { "id": "260656", "author": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Reclosing since the item appears fixed on 3.0.0. If necessary, we could find a backport to the 2.1.X branch.", "updateAuthor": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2013-07-02T20:43:11.000+0000", "updated": "2013-07-02T20:43:11.000+0000" }, { "id": "415763", "author": { "name": "lmorris", "key": "lmorris", "displayName": "Lee Morris", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Closing ticket as fixed with reference to previous comments.", "updateAuthor": { "name": "lmorris", "key": "lmorris", "displayName": "Lee Morris", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2017-03-24T20:55:36.000+0000", "updated": "2017-03-24T20:55:36.000+0000" } ], "maxResults": 10, "total": 10, "startAt": 0 } } }