getExternalFilesDir devuelve directorys inconsistentes
Tengo una acción que permite a los usuarios download imágenes y las guardo en el directory de datos de mi aplicación.
Creo el file temporal así:
- Cómo crear un map a partir de una list con una list interna usando Kotlin
- ¿Hay alguna forma de mostrar todas las funciones de extensión de una determinada class de Kotlin en Intellij IDE?
- Kotlin: método @JvmStatic NoClassDefFoundError / ClassNotFoundException durante la testing unitaria
- Errores de extensión de Kotlin
- Crear una instancia de una class abstracta en Kotlin
@Throws(IOException::class) fun Context.createPrivateMediaFile(prefix: String, extension: String): File { val timeStamp = SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()).format(Date()) val imageFileName = "${prefix}_${timeStamp}_" val storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES) return File.createTempFile(imageFileName, extension, storageDir) }
y lo uso así:
try { photoFile = createPrivateMediaFile(".png") } catch (e: IOException) { errorRef = e } finally { if (photoFile == null) { callback(null) } else { tempFilePath = photoFile.absolutePath Ld("Temp image path $tempFilePath") // File created; proceed with request val photoURI = FileProvider.getUriForFile(this, BuildConfig.APPLICATION_ID + ".provider", photoFile) photoFile.outputStream().use { resource.compress(Bitmap.CompressFormat.PNG, 100, it) } callback(photoURI) } }
El propósito es crear un nuevo file en mi directory de datos, save el file y luego emitir el uri a través de una callback.
Este método funciona la mayor parte del time, pero recibí informes donde el uri no se puede resolver. En esos casos, el error impreso es:
Failed to find configunetworking root that contains /storage/emulated/0/Android/data/com.pitchedapps.frost/files/Fotos/Frost_20170819_111929_1351301627.png
Mi proveedor de files contiene la siguiente ruta:
<external-path name="Frost_images" path="Android/data/com.pitchedapps.frost/files/Pictures" />
así que es extraño para mí de dónde viene la carpeta de Fotos
. Este error también se me ocurrió una vez, por lo que no debería ser un problema de configuration regional.
Entonces, ¿por qué getExternalFilesDir
parece devolver diferentes routes? ¿Hay alguna manera de mantener un directory de datos base que se mantenga constante?
Otro ejemplo más es el siguiente error de ruta:
Failed to find configunetworking root that contains /data/data/com.pitchedapps.frost/cache/Frost_20170819_115054_2013474631.png
.
Adjunto a continuación están mis
código fuente de actividad completa
y mi
medios utils
- Lectura de carácter nulo en carácter Kotlin por carácter de respuesta socket
- Cómo crear el controller de respuesta genérica para el error y validar la respuesta utilizando retrofit, rxjava y dagger
- ¿Puedes concatenar declaraciones en time de ejecución en Kotlin?
- Probando a AnkoComponentes y burlándose de AnkoContext
- ¿Cómo corutinas puede ser más rápido que los hilos?
- Kotlin - Mockito no puede burlarse / espiar (Spring REST API)
- Agregue kotlinx-html-js al proyecto kotlin / js en intellij
- cómo agregar gradle (idealmente usando kotlin-dsl) al proyecto intellij python existente
- La mejor forma de iterar un JSON en Kotlin
- Java 2 minutos de retraso a veces cuando se conecta el zócalo?