android - example - webview evaluatejavascript
WebView Crash by java.io.IOException: cierre fallido: EIO(error de E/S) libcore.io.IoUtils.close(IoUtils.java:41) (2)
EIO se produce desde bad_file_flush
en bad_inode.c
. Parece que el kernel tiene algún problema para acceder a inode.
Las razones de esto pueden ser el montaje, desmontaje de la tarjeta SD o los medios de almacenamiento, conectando el USB al teléfono.
Intente llamar a force()
antes de close()
Tengo un registro de bloqueo cargado por los usuarios en Android 4.0 / 4.1, pero no puedo reproducirlo. El registro es así :
java.io.IOException: close failed: EIO (I/O error)
libcore.io.IoUtils.close(IoUtils.java:41)
java.io.FileInputStream.close(FileInputStream.java:121)
android.webkit.JWebCoreJavaBridge.nativeServiceFuncPtrQueue(Native Method)
android.webkit.JWebCoreJavaBridge.handleMessage(JWebCoreJavaBridge.java:113)
android.os.Handler.dispatchMessage(Handler.java:99)
android.os.Looper.loop(Looper.java:137)
android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:949)
java.lang.Thread.run(Thread.java:856)
cause by:
libcore.io.ErrnoException: close failed: EIO (I/O error)
libcore.io.Posix.close(Native Method)
libcore.io.BlockGuardOs.close(BlockGuardOs.java:75)
libcore.io.IoUtils.close(IoUtils.java:38)
java.io.FileInputStream.close(FileInputStream.java:121)
android.webkit.JWebCoreJavaBridge.nativeServiceFuncPtrQueue(Native Method)
android.webkit.JWebCoreJavaBridge.handleMessage(JWebCoreJavaBridge.java:113)
android.os.Handler.dispatchMessage(Handler.java:99)
android.os.Looper.loop(Looper.java:137)
android.webkit.WebViewCore$WebCoreThread.run(WebViewCore.java:949)
java.lang.Thread.run(Thread.java:856)
¿Alguien sabe cómo sucedió o cómo resolverlo?
Esto es debido al archivo de solo lectura.
Creo que esto se debe a que el EIO proviene de bad_file_flush
en su archivo. Parece que cuando el kernel tiene algún error al acceder a un archivo , transforma la descripción del archivo abierto en un archivo pseudo-abierto con bad_inode_ops como sus operaciones de archivo. No puedo encontrar el código que hace esto para los sistemas de archivos basados en FAT, pero quizás haya algún código genérico.
Dado que los datos de la caché de FileChannel creo que necesitas llamar a force(
) antes de close() the FileChannel
Para más información ir a través de estos enlaces Link1