У меня были те же проблемы, и я думаю, что мог бы найти проблему и "чистое" решение (Я думаю, что вообще не стоит управлять курсорами)
Я использую Adapter.changeCursor в некоторых действиях, которые прекрасно работали во всех версиях, кроме сотовой. Метод changeCursor закрывает старый курсор, но, очевидно, не прекращает управлять этим курсором. Таким образом, действие продолжает управлять тем старым курсором, который уже закрыт. При перезапуске действия он пытается запросить его, не проверяя, закрыто ли оно.
Итак, мое решение:
Cursor oldCursor = mAdapter.getCursor();
mAdapter.changeCursor(newCursor);
stopManagingCursor(oldCursor);
До сих пор я не могу воспроизвести это исключение снова.