Mobile apps are such a shitty situation; it seems like one either has to submit to the ridiculous walled garden approach or stand constant vigil against every app one installs.
All OSs need fine(r)-grained permissions, they need to supply fake data to apps that refuse to run without permissions, and in general make it deleterious to abuse the user's trust.
My ideal vision is sandboxed applications that can reach out to shared data stores or open external apps via some kind of intents; but only if the user allows them to. Also apps should be signed and the user should have the option of installing third-party CA certificates.