Android uses a permission model and sandboxing to isolate apps and their data. Each app runs as a separate Linux user and has its own permissions and filesystem area. SharedPreferences and SQLite databases are also isolated by app in private storage areas. Developers must specify any permissions needed in the app manifest and use the principle of least privilege to only request necessary permissions.