I've never used window.open() in Gaia before and I have no idea how it is supposed to work.  Is there precedent for this?  In order to make this work, you've had to do the keepAppOpen hack and also implement  this custom child.result, child.onsuccess protocol for communicating between the windows.  (Why not postMessage/onmessage, by the way?) And you have the two instances of the db issue you describe below.

Would it be simpler and less risky to just have a single entry point for both management and sharing but have different code run in the activity case?  In Music and Gallery, for example, the pick activity is just a special case of the main entry point, not a new entry point.