Autore Topic: Salvare un file nella directory privata dell'app  (Letto 589 volte)

Offline Giacomo79

  • Utente junior
  • **
  • Post: 123
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus One
  • Play Store ID:
    Big and Fish
  • Sistema operativo:
    Android 2.3
Salvare un file nella directory privata dell'app
« il: 21 Dicembre 2015, 14:50:08 CET »
0
Salve a tutti,
come da topic non riesco a salvare un file all'interno della directory privata dell'app. Riesco a salvare il file nella memoria esterna con questo codice:
Codice (Java): [Seleziona]
File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "nome file");
FileOutputStream fileOutput = new FileOutputStream(file);
fileOutput.write(... ....);
fileOutput.close();

Qual'è il corrispettivo codice per salvare il file nella directory interna dell'app?

Grazie

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Salvare un file nella directory privata dell'app
« Risposta #1 il: 21 Dicembre 2015, 15:03:18 CET »
0
Questo è per la memoria interna:

Context#getFilesDir()

Questo invece per la memoria esterna:

Context#getExternalFilesDir(java.lang.String)
« Ultima modifica: 21 Dicembre 2015, 15:05:18 CET da Ricky` »

Offline Giacomo79

  • Utente junior
  • **
  • Post: 123
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus One
  • Play Store ID:
    Big and Fish
  • Sistema operativo:
    Android 2.3
Re:Salvare un file nella directory privata dell'app
« Risposta #2 il: 21 Dicembre 2015, 15:10:00 CET »
0
Ho provato con getFilesDir() ma non ho risolto. Sembra come se la directory interna dell'app non venga creta (infatti se la cerco in esplora risorse del cellulare non la trovo).

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Salvare un file nella directory privata dell'app
« Risposta #3 il: 21 Dicembre 2015, 15:47:53 CET »
0
La cartella viene creata dentro /data/data/<packagename>/. Se non hai i permessi di root non puoi accederci tramite un qualsiasi file manager.

Offline Giacomo79

  • Utente junior
  • **
  • Post: 123
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus One
  • Play Store ID:
    Big and Fish
  • Sistema operativo:
    Android 2.3
Re:Salvare un file nella directory privata dell'app
« Risposta #4 il: 21 Dicembre 2015, 17:19:10 CET »
0
La cartella viene creata dentro /data/data/<packagename>/. Se non hai i permessi di root non puoi accederci tramite un qualsiasi file manager.
Ok, però il codice successivo per aprire il file:

Codice: [Seleziona]
String mime = Util.getMimeType(Uri.fromFile(file).toString());

Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file), mime);
startActivity(intent);

Funziona quando uso la external storage, mentre non funziona se uso l'internal.

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Salvare un file nella directory privata dell'app
« Risposta #5 il: 21 Dicembre 2015, 17:30:13 CET »
0
E' ovvio che non funziona.
Come hai giustamente chiesto tu stesso, si tratta della cartella privata dell'applicazione e questo vuol dire che solo l'applicazione stessa può accederci

Se vuoi salvare un file nella cartella privata dell'app e renderlo accessibile ad altre app devi utilizzare un FileProvider:
Setting Up File Sharing | Android Developers

Ma la vera domanda è: ti serve davvero?

Offline Giacomo79

  • Utente junior
  • **
  • Post: 123
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus One
  • Play Store ID:
    Big and Fish
  • Sistema operativo:
    Android 2.3
Re:Salvare un file nella directory privata dell'app
« Risposta #6 il: 21 Dicembre 2015, 17:44:25 CET »
0
E' ovvio che non funziona.
Come hai giustamente chiesto tu stesso, si tratta della cartella privata dell'applicazione e questo vuol dire che solo l'applicazione stessa può accederci

Se vuoi salvare un file nella cartella privata dell'app e renderlo accessibile ad altre app devi utilizzare un FileProvider:
Setting Up File Sharing | Android Developers

Ma la vera domanda è: ti serve davvero?
Il codice lo lancio dall'applicazione stessa.

Offline Giacomo79

  • Utente junior
  • **
  • Post: 123
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus One
  • Play Store ID:
    Big and Fish
  • Sistema operativo:
    Android 2.3
Re:Salvare un file nella directory privata dell'app
« Risposta #7 il: 22 Dicembre 2015, 17:54:46 CET »
0
Qualcuno sa perchè non riesco ad aprire i file all'interno dell'app stessa?