Cómo pasar un objeto Blob de javascript a Android?
Tengo un objeto Blob dentro de mi WebView, ¿cómo puedo pasarlo a Android?
Quiero guardarlo en un archivo local en el dispositivo.
He estado tratando de usar:
- Habilitación de la compatibilidad con WebGL para Android WebView
- LinearLayout de un WebView y un botón
- ¿Hay alguna forma de tener URL de enlace automático de WebView y números de teléfono en Android?
- Prestación de HTML en un WebView con CSS personalizado
- Personalizar elementos de diálogo desplegables en WebView
var url = webkitURL.createObjectURL(myBlob);
Pero no he podido descargarlo al dispositivo.
- No se puede eliminar la imagen en div contenteditable en Android
- Responder sitio web mostrar en la vista Web fuera de ancho móvil (no sensible) de otra manera en Chrome se ve bien
- La página de vista web de Android no carga correctamente la página
- Espacios en blanco usando la vista web de android dentro de scrollview con una red móvil de jQuery
- Android webview - solo línea javascript comentarios causando Uncaught SyntaxError errores?
- WebView textarea no aparece el teclado
- No se puede mostrar la cadena html en la vista web
- Cómo ocultar unhide webview en android
No he probado esto, pero pude encontrar alguna información que apunta al uso de Javascript Interfaces con WebViews. Básicamente, puede asignar clases Java para trabajar como clases Javascript en su WebView (e intercambiar información entre ambos lados). No soy un profesional en tipos de objetos de JavaScript, así que voy a dejar que a usted.
Primero, cree una clase JavaScriptHandler
con una referencia a su actividad que controla la WebView
:
public class JavaScriptHandler { MyActivity parentActivity; public JavaScriptHandler(MyActivity activity) { parentActivity = activity; } public void doSomething(<Your blob format> data){ // ............. // ..Some code.. // ............. } }
Después de eso, agregará su JavaScriptHandler
a su WebView
en su Activity
principal. ¡No olvide activar JavaScript en su WebView
!
myWebView = (WebView)this.findViewById(R.id.myWebView); myWebView.getSettings().setJavaScriptEnabled(true); myWebView.addJavascriptInterface(new JavaScriptHandler(this), "MyHandler");
El primer parámetro pasado a addJavaScriptInterface () es el propio objeto de interfaz JavaScript. El segundo parámetro es el nombre de la variable JavaScript global a la que está vinculado el objeto de interfaz JavaScript.
Ahora todo lo que tienes que hacer es llamar a su método Java
con JavaScript
.
<html> <head> <script type="text/javascript"> function displaymessage() { MyHandler.doSomething(<Your Blob>); } </script> </head> <body> <form> <input type="button" value="Click me!" onclick="sendBlob()" /> </form> </body> </html>
Encontré una solución convirtiendo el blob a Base64 String
var reader = new window.FileReader(); reader.readAsDataURL(blob); reader.onloadend = function() { var base64data = reader.result; // send base64data string to android as a method param }
Puede utilizar descargador de archivos simple utilizando JavaScript.
Aquí hay un ejemplo para descargar blob como archivo.
var saveData = (function() { var a = document.createElement("a"); document.body.appendChild(a); a.style = "display: none"; return function(data, fileName) { var json = JSON.stringify(data), blob = new Blob([json], { type: "octet/stream" }), url = window.URL.createObjectURL(blob); a.href = url; a.download = fileName; a.click(); window.URL.revokeObjectURL(url); }; }()); var data = { x: 42, s: "hello, world", d: new Date() }, fileName = "my-download.json"; saveData(data, fileName);
- Adb de Android empuja a la ubicación en el dispositivo sin tarjeta sd y sin acceso root
- Android Parse SDK i / o fallo formato desconocido (número mágico 227b)