安卓WebView(H5)调用原生相机及相册
在Android中,你可以通过WebView的addJavascriptInterface
方法将一个Java对象绑定到WebView的JavaScript环境中。然后在H5页面中调用这个对象的方法,从而触发相机或相册的Intent。
以下是实现这一功能的示例代码:
Java对象绑定到WebView的代码:
public class WebAppInterface {
Context mContext;
WebAppInterface(Context c) {
mContext = c;
}
@JavascriptInterface
public void openCamera() {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(mContext.getPackageManager()) != null) {
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
}
}
@JavascriptInterface
public void openGallery() {
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType("image/*");
startActivityForResult(intent, REQUEST_IMAGE_PICK);
}
}
webView.addJavascriptInterface(new WebAppInterface(this), "Android");
在H5页面中调用:
function openCamera() {
Android.openCamera();
}
function openGallery() {
Android.openGallery();
}
确保在AndroidManifest.xml中添加了相应的权限:
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
以上代码中REQUEST_IMAGE_CAPTURE
和REQUEST_IMAGE_PICK
是你用于识别Activity结果的回调代码,需要在Activity中重写onActivityResult
方法来处理拍照或者从相册中选择图片后的回传。
评论已关闭