2012-10-27 6 views
5

sono molto nuovo per Android Dev ... voglio sapere qual è il modo migliore per nascondere un'immagine in Android. Ho un'app in cui scattare una foto e voglio che quella foto possa essere visualizzata solo all'interno della mia app.Il modo migliore per nascondere un'immagine in Android?

+0

Si potrebbe provare encripting le immagini in qualche modo. Ci sono rapporti che .nomedia non funziona su 4.0 in poi. http://stackoverflow.com/questions/10697276/android-nomedia-not-working-for-images – Doomsknight

+0

Ci sono alcuni bug con lo scanner media su alcune versioni API, ma il .nomedia funziona ancora. Uno dei bug è che la creazione di un file .nomedia dopo che alcune immagini erano presenti nella cartella nasconde le immagini future ma non quelle più vecchie, ma può essere riparata forzando una scansione di tutti i media (semplicemente cancellando i suoi dati e anche la cache funziona) . La soluzione è ancora più semplice, aggiungi il file .nomedia prima di iniziare a memorizzare le immagini in una cartella per evitare che vengano prese dal mediascanner. Quel post affronta come risolvere tutto questo. – ZhDev

risposta

3

Il modo migliore sarebbe utilizzare la memoria interna del dispositivo. Secondo il sito dello sviluppatore:

È possibile salvare i file direttamente nella memoria interna del dispositivo. Con il valore predefinito di , i file salvati nella memoria interna sono privati ​​dell'applicazione e altre applicazioni non possono accedervi (né l'utente ).

Potete trovare tutti i dettagli qui: Using the Internal Storage

Tenete a mente che ci sono alcune cose che si dovrebbero prendere in considerazione; ad esempio, se quella foto che hai menzionato viene scattata da una telecamera, l'immagine dovrà essere prima salvata in una cartella pubblica (ad esempio nella memoria esterna) affinché la fotocamera funzioni correttamente e quindi dovresti spostarla nella memoria interna (o copiarlo e quindi eliminare l'originale).

Non ci sono altri metodi:

  • Si potrebbe anche provare a salvare le immagini nella memoria esterna (accessibile da altri), ma il nome del file con un punto che precede, in nome file per renderli invisibili, ma qualsiasi app può accedere al file se conosce il nome file e la maggior parte dei file manager può mostrare file nascosti
  • Aggiungere un file ".nomedia" all'interno della cartella per impedire alla galleria di mostrare le immagini.
  • Assegna un nome ai file con stringhe casuali senza estensioni.

Dipende molto se si vuole renderli totalmente inaccessibile ad altre applicazioni o se nasconderlo un po 'è abbastanza

+0

+1 per la risposta. Ma ho un piccolo dubbio. Il dubbio è fuori dal campo ma spero che verrà preso in considerazione. Supponiamo di avere un file che sto memorizzando in una memoria esterna con il nome del file che precede il punto. Questo aiuta il file a essere invisibile e quale è il file .nomedia? Dovrebbe essere creato durante la creazione di questo file (preceduto da un punto) nel codice java? –

+0

Dallo stesso link utilizzato nella risposta: "Includere un file vuoto denominato .nomedia nella directory dei file esterni (notare il prefisso del punto nel nome file). Ciò impedirà al lettore multimediale di Android di leggere i file multimediali e includerli in app come Galleria o Musica. " In pratica include un singolo file vuoto chiamato .nomedia nella cartella in alto che si sta utilizzando per memorizzare le immagini (la prima volta che si accede alla cartella o quando lo si crea), che impedirà alla galleria di mostrare tutte le immagini memorizzate. – ZhDev

+1

Come commento aggiuntivo, la galleria (predefinita) non mostra nemmeno i file nascosti, quindi se tutti i file sono denominati ".image1.jpg", ".image2.jpg", ".reallyCoolPic.jpg", sono tutti nascosti e non avresti bisogno del file .nomedia. – ZhDev