On Unix (and by extension Android) the default thing SQLite does with temporary files is unlink them as soon as they are created so that even if the process crashes they are cleaned up. However, Android doesn't seem capable of consistently handling this mode and returns errors for filesystem operations on such files. This can be reproduced by creating a reasonably large database file (> 100 MB) and then creating and index on it. Smaller databases won't show the behavior since SQLite only uses temporary files when it doesn't have enough memory to perform its operations.
On Unix (and by extension Android) the default thing SQLite does with temporary files is unlink them as soon as they are created so that even if the process crashes they are cleaned up. However, Android doesn't seem capable of consistently handling this mode and returns errors for filesystem operations on such files. This can be reproduced by creating a reasonably large database file (> 100 MB) and then creating and index on it. Smaller databases won't show the behavior since SQLite only uses temporary files when it doesn't have enough memory to perform its operations.