Ans: I would recommend using Cognito Identity Pools here to generate temporary AWS credentials, Those credentials can be further used to invoke relevant AWS S3 API calls and satisfy your application requirements.
Cognito Identity Pool supports both Unauthenticated Access and Authenticated Access, so with relevant roles, you just need to select appropriate IAM JSON for both cases, to ensure that your software remains robust and secure.
Since you are developing your application on Android(with Java), I would highly recommend this official AWS documentation as your starting point.
Do you want to master AWS? Then do check out the AWS Certified Solutions Architect Professional training by Intellipaat.
Want to learn about Android? Check out the Android App Development course from Intellipaat.