您的位置:首页 > 移动开发

webView显示html到Js调用手机功能到Base64的方式将数据返回到Html中

2014-02-23 17:12 656 查看
搞啦一天终于弄出来啦,还是细节地方出来问题,自己没注意到,所以写代码也一定不能粗心啊!
我所实现的主要是:html中通过Js调用手机相机,然后用Base64将手机相机拍到的照片显示到webView的html中。





WebView中显示html我就不多说啦!
js调用手机功能也很简单
function getCamera(){
javascript:myjavascript.getCamera();
}这只是js代码,具体的myjavascript类需要自己写,调用的就是其中的方法getCamera(),然后启动相机

然后在Activity中的onActivityResult方法中获取照相所产生的图片

然后将图片转成bitmap 类型,代码:Bitmap bitmap = (Bitmap) bundle.get("data");

然后将bitmap用Base64弄成String

转换代码如下:

public String bitmaptoString(Bitmap bitmap) {
// 将Bitmap转换成Base64字符串
StringBuffer string = new StringBuffer();
ByteArrayOutputStream bStream = new ByteArrayOutputStream();

try {
bitmap.compress(CompressFormat.PNG, 100, bStream);
bStream.flush();
bStream.close();
byte[] bytes = bStream.toByteArray();
string.append(Base64.encodeToString(bytes, Base64.NO_WRAP));
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("string.."+string.length());
return string.toString();
}

Base64.NO_wrap  这个东西就是我弄啦一下午的,最后用这种方式转换的String可以传送到html中显示出来,其他的不能显示。至于为什么?我就不知道,有大神知道的话跪求讲解。。。。。

实现代码如下:

String str1=bitmaptoString(bitmap);
// 输出设置到html上面
String url ="javascript:printInfo('data:image/png;base64,"+str1+"')";
webView.loadUrl(url);


大概就这样,需要源码的可以留言。或者点击下载
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐