Une recherche rapide sur Google révèle l'existence d'une nouvelle API dans Java 7 qui permet de modifier les permissions pour des fichiers individuels. Cela n'aide pas à changer le umask, mais cela devrait vous permettre de le remplacer après la création du fichier. Voir aussi :
http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#setPosixFilePermissions%28java.nio.file.Path,%20java.util.Set%29
Si vous avez vraiment besoin de changer le umask, il ne semble pas que ce soit une fonction actuellement exposée directement par la BCL. Vous devrez recourir à des appels natifs, ou utiliser une bibliothèque pour le faire à votre place. J'ai entendu dire que de telles bibliothèques existent déjà - vous devriez en chercher une qui donne accès aux fonctionnalités du système d'exploitation POSIX.
Pour ce qui est de la raison pour laquelle les fichiers sur la carte SD ignorent l'umask, les cartes SD sont typiquement formatées en utilisant le système de fichiers vfat, qui est fondamentalement rétrocompatible avec MS-DOS/Windows 95 et ne reconnaît pas le concept d'utilisateur. En tant que tel, il n'a aucun moyen de restreindre l'accès à un fichier ; si vous ne pouvez pas restreindre l'accès à des utilisateurs particuliers, alors vous ne pouvez restreindre l'accès qu'aux personnes suivantes quelqu'un et pourquoi voudriez-vous faire cela ? :-)
Ce que vfat a, ce sont les attributs des fichiers : lecture seule, caché et système. Il n'y a aucun moyen efficace de faire correspondre la majorité des combinaisons de modes de fichiers UNIX à ces attributs. Le pilote signale donc toujours les fichiers comme ayant un mode particulier, défini lorsque le système de fichiers est monté. Android monte les sdcards de manière à ce que ce mode soit renvoyé sous la forme 0755 (-rwxr-xr-x).