Nella mia applicazione Android, sto cercando di creare la seguente cartella sul sdcard:mkdirs Android() crea un file di byte allo zero, invece di una cartella
/mnt/sdcard/OSGiComponents/admin/felix-cache/
Ecco il codice:
File cacheDir =
new File(Environment.getExternalStorageDirectory().getAbsolutePath() +
"/OSGiComponents/admin/felix-cache/");
// Create the folder
cacheDir.mkdirs();
// Check if it exists
if (! cacheDir.exists()) {
Log.e ("Debug" , "Cache directory cannot be created");
}
Ho WRITE_STORAGE_PERMISSION sotto il tag manifest del file manifest di Android. Sono in grado di creare altre cartelle e file senza problemi sulla sdcard. L'applicazione funziona bene sui seguenti telefoni:
- Nexus S (radicata) in esecuzione Gingerbread (2.3)
- Nexus S (senza radici) in esecuzione Jelly Bean (4.1.2)
- HTC Desire (radicata) in esecuzione Froyo (2.2)
- HTC Desire (senza radici) in esecuzione Froyo (2,2)
Tuttavia sul Samsung Galaxy Nexus telefono (senza radici) in esecuzione Ice Cream Sandwich (4.0.4), la directory viene creata come uno zero file di dimensioni, che può essere visto in Astro. La chiamata exists() restituisce false.
- Come si può vedere dal nome della cartella, sto usando Apache Felix. Felix crea automaticamente la directory della cache se non esiste. Su Galaxy Nexus, si è sempre lamentato che non è in grado di creare la directory della cache. Astro mostra un file da 0 byte invece di una cartella. Questo è il motivo per cui ho deciso di provare a creare la cartella cache prima di inizializzare Felix.
- Quindi, creo me stesso la cartella cache. L'app funziona bene la prima volta e posso vedere bene la cartella in Astro. Se chiudo l'app, quindi elimino la cartella in Astro e quindi rilancio l'app, anche il mio codice non può creare misteriosamente la directory cache e Astro mostra un file da 0 byte.
- Il file da 0 byte non può essere cancellato in Astro. Tuttavia, quando riavvio il telefono, la cartella è magicamente lì e ok.
- Uso FileInstall per guardare la cartella OSGiComponents/install. Quando faccio cadere i pacchetti bundle in quella cartella, viene rilevato e installato correttamente su tutti i telefoni ad eccezione di Galaxy Nexus (quando l'app funziona per la prima volta). Non ci sono registri/errori da FileInstall su non essere in grado di guardare la directory.
- Ho provato questo su 2 telefoni Galaxy Nexus, lo stesso problema.
Sospetto che si tratti di un problema di autorizzazioni, ma non sono sicuro di cosa sia e perché venga creato un file di 0 byte mentre esiste() restituisce false. In nessun altro punto del codice sto creando questo file.
Qualche suggerimento su quale potrebbe essere il problema?
Grazie :)
UPDATE: Penso che ho identificato il problema, si prega di vedere la risposta che ho postato.
public static String FOLDER = Environment.getExternalStorageDirectory(). GetPath() + "/ folder /"; Screen filesPath = new File (FOLDER); screensPath.mkdirs(); questo potrebbe funzionare. – itsrajesh4uguys
Grazie, ma purtroppo continua a dare lo stesso problema :(Penso di aver identificato il problema, ho postato una risposta qui sotto –