I tried setReadOnly, which requires API 1 (I wrote setWritable just for an alternative method).
Also, I should have the permission, given that I have created the file.
I have tried both DirRootExternal and DirDefaultExternal.
But I found this answer (web) about setWritable:
The sdcard uses a FAT-type filesystem which does not support file ownership.
It is possible at implementation level for FAT to support a read-only bit, but that would be of limited value since anything else with sd card write permission would be free to change the bit. Given the limited value, it's an open question if it's even possible to set that on android.