我可以在 webview 中打开相机吗?

Posted

技术标签:

【中文标题】我可以在 webview 中打开相机吗?【英文标题】:Can I open camera in webview? 【发布时间】:2011-08-13 19:39:29 【问题描述】:

我可以在 webview 中打开安卓相机吗?

【问题讨论】:

Calling camera from an activity, capturing an image and uploading to a server的可能重复 【参考方案1】:

使用 Webview 时拥有相机功能的最简单方法是使用 Intent。

如果您使用 API,您必须自己构建大量 UI。这取决于您在应用程序中需要做什么以及您需要对“拍照过程”进行多少控制。如果您只需要一种快速拍摄照片并在应用程序中使用的方法,Intent 就是您的最佳选择。

意图示例:

private Uri picUri;
private void picture()

     Intent cameraIntent = new Intent("android.media.action.IMAGE_CAPTURE");
     File photo = new File(Environment.getExternalStorageDirectory(), "pic.jpg");
     cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photo));
     picUri = Uri.fromFile(photo);
     startActivityForResult(cameraIntent, TAKE_PICTURE);


public void onActivityResult(int requestCode, int resultCode, Intent data)

    super.onActivityResult(requestCode, resultCode, data);
    switch(requestCode)
        case TAKE_PICTURE:
            if(resultCode == Activity.RESULT_OK)
                Uri mypic = picUri;
                //Do something with the image.
            

我从另一个答案中借用了这个例子的一部分来最初构建这个。但是我没有网址了。

在我现在正在编写的应用程序中,我将此图像转换为 Base64,然后将其传递给 javascript,然后将其发布到我的服务器。但是,这可能比您需要知道的要多。 :)

here 是让它在 webView 上工作的链接

【讨论】:

乔纳森,你如何从网络视图中调用它? @David Souther 我不确定您是指来自 Android 端的 Webview 还是浏览器端。在 Android 端,您可以像调用任何其他 Java 方法一样调用它。如果您想从 Javascript 中调用它,例如让用户单击 标记并打开相机,那么您可以编写一个充当接口的 Java 类。像这样添加类: webview.addJavascriptInterface(new JavaScriptInterface(this), "Android");在 JS 中,你可以这样称呼它:Android._method_(); @David Souther 下划线很抱歉。想要斜体,直到编辑时间结束才弄明白。我是新的。 :S BTW,这个链接更好地解释了 JS 接口:developer.android.com/guide/webapps/… @piyush 不太确定phonegap。一个快速的谷歌搜索将我带到这里:docs.phonegap.com/phonegap_camera_camera.md.html 编辑:看起来甜甜圈已经有一个链接。【参考方案2】:

据我所知,这并没有直接内置到 Android API 中。但是,您可以使用 PhoneGap,它提供了 Javascript 挂钩到本机设备功能(即相机)。

您可以查看支持的功能列表here,并阅读他们的相机 API 文档here。

【讨论】:

以上是关于我可以在 webview 中打开相机吗?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的全屏 webview 在打开后会立即关闭?

如何在android webview中打开相机?

相机文件选择器未在 WebView android 中打开

Xamarin。 WebView Progres

有没有办法让颤动的 webview 使用 android 相机进行文件上传?如何在 webview_flutter 中打开文件选择器?

WebView中打开相机,文件选择器的问题和解决方法