J'ai trouvé un moyen de le faire fonctionner, dont je ne suis pas particulièrement fier, mais ça marche. Si vous ne pouvez pas participer à une transaction lorsque vous attachez une base de données, terminez d'abord la transaction.
db.setTransactionSuccessful();
db.endTransaction();
db.execSQL("ATTACH DATABASE ? AS names",new String[]{namesDb});
db.beginTransaction();