Autore Topic: Creazione file .nomedia e cartella dedicata del programma?  (Letto 1003 volte)

Offline RogoMantiK

  • Utente junior
  • **
  • Post: 61
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Xperia Neo
Creazione file .nomedia e cartella dedicata del programma?
« il: 06 Dicembre 2012, 12:56:11 CET »
0
Sto cercando senza ottenere risultati di create un file .nomedia
Codice (Java): [Seleziona]
File noMedia = new File(proPatch, ".nomedia");
FileOutputStream osNomedia = new FileOutputStream(noMedia);
osNomedia.write(0);
OutputStreamWriter out = new OutputStreamWriter(osNomedia);
out.write(0);
//out.flush();
out.close();                                           
//noMedia.mkdirs();
 //noMedia.createNewFile();
Codice (Java): [Seleziona]
proPatch = new File (Environment.getExternalStorageDirectory() + File.separator + "Pictures" + File.separator + getString(R.string.app_name));il percorso proPatch è funzionante perché lo uso per scrivere delle immagini più avanti nel codice e funziona. da codice scrivo 0 sia usando FileOutputStream sia OutputStreamWriter ho provato anche ad usali uno alla volta ma il file non viene creato. Ho provato anche ad usare i comandi che qui sono commentati senza risultato. Il codice è inserito dopo aver controllato se posso scrivere e leggere ed è inserito in un try/catch. Ho seguito molti tutorial ma con nessun esito. I permessi nel manifest per scrivere li ho messi

Poi volevo chiedere come ottenere la directory
sdcard/Android/data/com.mio.pacchetto/cache
sdcard/Android/data/com.mio.pacchetto/.cache
Va bene questo codice?
Codice (Java): [Seleziona]
String appPath = App.getApp().getApplicationContext().getFilesDir().getAbsolutePath();
//oppure
public String getDataDir() throws Exception {
    return getApplicationContext().getPackageManager().getPackageInfo(getPackageName(), 0).applicationInfo.dataDir;
}
in modo che i file che ci memorizzo vengano automaticamente cancellati alla disinstallazione del programma (corretto?)
E se creo immagini nelle ultime due cartelle che ho elencato verranno lette dal mediascanner oppure sono saltate? (così taglio la testa al toro e non lo creo proprio il .nomedia)
C'è un comando apposito oppure devo creare il percorso io manualmente?

Ultima cosa...
ho questa funzione per verificare se posso scrivere sulla SD
Codice (Java): [Seleziona]
private void veryfyMedia() {
                if (SDstate.equals(Environment.MEDIA_MOUNTED)) {
                        canRead = true;
                        canWrite = true;
                } else if (SDstate.equals(Environment.MEDIA_MOUNTED_READ_ONLY)) {
                        canRead = true;
                        canWrite = false;
                } else {
                        canRead = false;
                        canWrite = false;
                }
        }
Ma se il telefono non ha SD? i file non vengono scritti oppure Environment.getExternalStorageDirectory() restituisce la directory "SDesterna/SDinterna" cioè la parte dedicata ai dati utenti della memoria del telefono (alcuni telefoni hanno memoria per le applicazioni, memoria per i dati e poi la memoria esterna sd).

Domanda un po lunga. Si accettano anche risposte parziali (soprattutto riguardanti il .nomedia)
:)
Grazie

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +507
    • Github
    • Google+
    • rciovati
    • Mostra profilo

Offline RogoMantiK

  • Utente junior
  • **
  • Post: 61
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Xperia Neo
Re:Creazione file .nomedia e cartella dedicata del programma?
« Risposta #2 il: 07 Dicembre 2012, 14:15:56 CET »
0
La prima domanda la rispondo io stesso:
Controllavo la creazione del file tramite emulatore (plugin di esclipse/ADT File Explorer) e mi sono accorto che non visualizza i file e le cartelle nascoste (mah) . Dopo aver provato il programma sul telefono il file viene creato correttamente (e nascosto).

La seconda parte avevo iniziato a gestire la cosa facendo la directory manualmente con questo comando
Codice (Java): [Seleziona]
percorso = new File (Environment.getExternalStorageDirectory() + File.separator + "Android" + File.separator + "data" + File.separator + this.getPackageName() + File.separator + "cache")
file = new File(percorso, f); // f è una stringa nel formato "nomefile.estensione"
                InputStream is = getResources().openRawResource(resId);
                OutputStream os;
                        try {
                                os = new FileOutputStream(file);
                                byte[] dati = new byte[is.available()];
                                is.read(dati);
                                os.write(dati);
                                is.close();
                                os.close();
                        } catch (FileNotFoundException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        };
Ho controllato e i file vengono creati e la directory viene cancellata alla disinstallazione dell'applicazione. Proverò seguendo le istruzioni nel link che mi hai dato e vedo se il risultato è lo stesso.