This is a pretty broad topic area that's more related to the actual design of the RESTful service than Android. Generally speaking, RESTful services should be designed with the idea that anyone can access them, and you create security to ensure that your users data is kept private and only accessible by people who have the authority to access it as the reality of the internet is that once the endpoint is out there, people can and will try to access it.
Personally, I usually end up using JSON Web Tokens (JWT). You can include in a header a token that is validated by the server using credentials the user provides. This allows you to validate credentials and reject unauthorised access, as it is based on OAuth, as well as contain some additional ways to secure the service, including token expiry, so that the application has to renew the token every X minutes/hours/days etc., in case someone malicious does get a hold of the token. This also provides you a simple mechanism to identify the current user straight off the token. Here's a good introduction to JWTs and what they are composed of.
In summary, the nature of web services is that once they are exposed, any web connected device can theoretically connect through spoofing, packet inspection etc., and the only way to counteract it to block it to only your app connecting is to authenticate at a device level, which would require knowing every single device that is going to connect to the service. What I believe you need instead is strong authentication at the service level. A good REST API is platform agnostic, and used between apps and websites alike, with priority being on the security at a request level, rather than at a device level.