У меня была такая же проблема, и я решил так:
когда внешняя память недоступна (это мой первый выбор), я использую внутреннюю память, используя getCacheDir в качестве начального пути, таким образом, только ваше приложение может получить доступ к этим файлам.
затем, когда мне нужно увидеть эти файлы в галерее, я использую контент-провайдер для получения доступа к файлу, посмотрите на ответ, который я написал, что решило мою проблему:
https://stackoverflow.com/a/13935210/1716620