Ily*_*man 10 javascript html5 android blob webview
我的WebView中有一个Blob对象,如何将其传递给Android?
我想将它保存到设备上的本地文件中.
我一直在尝试使用:
var url = webkitURL.createObjectURL(myBlob);
Run Code Online (Sandbox Code Playgroud)
但是我无法将其下载到设备上.
我没有试过这个,但我能够找到一些信息指向Javascript接口与WebViews的使用.基本上,您可以将Java类分配为WebView中的Javascript类(并在双方之间交换信息).我不是JavaScript对象类型的专家,所以我会留给你.
首先,创建一个JavaScriptHandler类,其中包含对您的活动的引用,该活动控制WebView:
public class JavaScriptHandler {
MyActivity parentActivity;
public JavaScriptHandler(MyActivity activity) {
parentActivity = activity;
}
public void doSomething(<Your blob format> data){
// .............
// ..Some code..
// .............
}
}
Run Code Online (Sandbox Code Playgroud)
之后,你会增加你的JavaScriptHandler你WebView在你的主Activity.别忘了在你的身上启用JavaScript WebView!
myWebView = (WebView)this.findViewById(R.id.myWebView);
myWebView.getSettings().setJavaScriptEnabled(true);
myWebView.addJavascriptInterface(new JavaScriptHandler(this), "MyHandler");
Run Code Online (Sandbox Code Playgroud)
传递给addJavaScriptInterface()的第一个参数是JavaScript接口对象本身.第二个参数是JavaScript接口对象绑定的全局JavaScript变量的名称.
现在你所要做的就是用你的Java方法来调用你的方法JavaScript.
<html>
<head>
<script type="text/javascript">
function sendBlob() {
MyHandler.doSomething(<Your Blob>);
}
</script>
</head>
<body>
<form>
<input type="button" value="Click me!" onclick="sendBlob()" />
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我通过将blob转换为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
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3602 次 |
| 最近记录: |