2013-10-30 15 views
8

Devo eseguire il persistere di 2 stringhe per la mia applicazione anche dopo la disinstallazione dell'applicazione. Per quanto riguarda il fatto che gli utenti finali non dispongono di schede SD per i loro dispositivi e non dispongono di connessione Internet, come potrei persistere su quelle 2 stringhe anche dopo aver disinstallato l'app?Dati persistenza Android dopo la disinstallazione

Apprezzerei molto qualsiasi risposta. Grazie

risposta

2

A meno che non si stiano prendendo di mira MOLTO vecchi telefoni, non è necessario preoccuparsi di non disporre di memoria esterna. Finché si utilizza Environment.getExternalStorageDirectory() come riferimento, non si dovrebbe avere un problema, anche se si è assolutamente preoccupati di questo è possibile controllare se l'archiviazione esterna non esiste e quindi optare per andare alla memoria interna. Check out this link from the developer docs for a little more insight.

Se Esterno non è realmente disponibile, è possibile quindi salvare nella memoria interna, ma si dovrà dichiarare un nuovo permesso per quello, che può allontanare alcune persone.

+0

I dispositivi di destinazione con Android 4.0 e superiore a – Laura

+0

Tuttavia, se utilizzo la memoria interna, tutti i dati verranno eliminati quando l'app viene disinstallata in base al sito degli sviluppatori Android. "Per impostazione predefinita, i file salvati nella memoria interna sono privati ​​dell'applicazione e altre applicazioni non possono accedervi (né l'utente) .Quando l'utente disinstalla l'applicazione, questi file vengono rimossi." – Laura

+0

Sì, ** Per impostazione predefinita **. Se gli dai altri contesti, potrebbe persistere. Se si utilizzano altre modalità come "Context.MODE_APPEND", "Context.MODE_WORLD_READABLE" o "Context.MODE_WORLD_WRITABLE", è possibile che il file persista dopo la disinstallazione. –

0

È necessario scriverlo su una scheda SD/memoria interna e sperare che l'utente non lo rimuova. Tuttavia, questo è un approccio molto fragile. Non c'è altra soluzione, per quanto ne so.

+0

Gli utenti non dispongono di schede SD – Blackbelt

+0

Memoria interna quindi. –

+0

quelli vengono rimossi quando l'app viene cancellata/disinstallata – Blackbelt

0

La memoria interna del telefono viene anche considerata una "scheda SD". Se si crea una cartella e la si salva in un file di testo, dovrebbe essere sicuro dato che l'utente non elimina manualmente le cartelle dopo la disinstallazione.

Si prega di controllare una sezione "Salvare i file che devono essere condivisi" nella seguente pagina web. Creare un file che persiste dopo la disinstallazione comporta renderlo disponibile ad altre app/utenti da leggere e modificare. Se quelle opzioni di file non sono intese, dovresti prendere in considerazione una progettazione di app alternativa.

http://developer.android.com/guide/topics/data/data-storage.html#filesInternal

Dopo reinstallare, la vostra applicazione in grado di accedere alla directory pubblica creata utilizzando la seguente funzione:

public static File getExternalStorageDirectory() 

Per quanto riguarda la funzione di cui sopra, per Google:

Nota: non essere confuso dalla parola "esterno" qui. Questa directory può essere meglio pensata come memoria media/condivisa. È un filesystem che può contenere una quantità relativamente grande di dati e che è condivisa tra tutte le applicazioni (non applica le autorizzazioni). Tradizionalmente si tratta di una scheda SD, ma può anche essere implementata come memoria integrata in un dispositivo che si distingue dalla memoria interna protetta e può essere montata come un file system su un computer.

Inoltre, Google consiglia di inserire i file condivisi in una directory pubblica esistente per non inquinare lo spazio dei nomi dell'utente.

0

Le stringhe sono univoche per ciascun utente o sono specifiche per le app? In entrambi i casi, la cosa giusta da fare sarebbe salvarlo in una sorta di server remoto. Firebase è quello che uso per qualcosa di simile. Verificare la sua esistenza nella classe Application e scaricarlo e salvarlo su SQLite se non esiste. Per i dati specifici dell'utente, tuttavia, avrete bisogno di un qualche tipo di autenticazione in modo da sapere quale utente ottiene cosa. Anche Firebase lo fa perfettamente.

Seguendo i requisiti (senza internet, senza scheda SD) dell'OP, tuttavia, non vedo altro modo oltre a quello che non è immorale.