We describe a finite-volume method for solving the Poisson equation on oct-tree adaptive meshes using direct solvers for individual mesh blocks. The method is a modified version of the method presented by Huang and Greengard (2000), which works with finite-difference meshes and does not allow for shared boundaries between refined patches. Our algorithm is implemented within the FLASH code framework and makes use of the PARAMESH library, permitting efficient use of parallel computers. We describe the algorithm and present test results that demonstrate its accuracy.