"Can I allow only my app to access my server?"
Sì, è possibile limitare l'accesso al client. All'epoca non lo sapevo, ma è possibile controllare chi può accedere ai file archiviati su un server utilizzando l'autenticazione dell'intestazione HTTP / HTTPS, che richiede una combinazione "username: password" codificata in base 64 nell'intestazione della richiesta per ottenere il file (HTML , IMMAGINE, ecc.)
E per prevenire l'intestazione dello sniffing, il suggerimento di Milen di utilizzare un certificato HTTPS è la strada da percorrere perché HTTPS crittografa tutto usando la chiave pubblica del sito (incluse le intestazioni).
Quindi come dovrei implementarlo?
Sul lato Android, crea un'app che invii un nome utente e una password univoci ogni volta che è necessario recuperare il documento / immagine / file.
Sul lato server, configura uno script server in PHP, o Python, o qualsiasi cosa tu stia utilizzando (più comodo dell'utilizzo di .htaccess per limitare l'accesso ai file su apache) che base64 decodifica il nome utente e la password dalla richiesta, controlla la corrispondenza corretta, invia l'intestazione content-type corretta insieme al file.
Speriamo che questa informazione sia sufficiente per chiunque ne abbia bisogno. Anche se non ho finito di testare questo, si spera dovrebbe funzionare.
Nessuna delle altre risposte qui è sostanzialmente corretta, ma penso che ognuna di esse abbia contribuito in qualche modo a trovare una soluzione a questa domanda.