需求:用户点击拍摄,调取相机,拍照后,返回到H5页面,上传成功后,将照片加载到H5页面中。对于用户上传的照片,后台进行压缩,每张图片压缩到200kb左右即可,格式为png。
思路:首先找到WebView控件加载url地址,然后 mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.addJavascriptInterface(new Js(), “jsObj”);
然后
class Js {
@JavascriptInterface
public void goAppCamera() {
openCarcme();//打开相机
}
}
最后在onActivityResult中获取到Bitmap,将Bitmap转换成Base64之后再调用setPlatformType方法加载Url,话不多说直接上代码。
package camerademo.com.camerademo;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.support.annotation.Nullable;
import android.util.Base64;
import android.util.Log;
import android.webkit.JavascriptInterface;
import android.webkit.ValueCallback;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
public class MainActivity extends Activity {
private WebView mWebView;
private ValueCallback<Uri> mUploadMessage; //表单的数据信息
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void