然后用户点击input type=file用户必须得到upload file + camera对话框.我正在使用这个html属性accept和capture.但在某些现代设备上,这种情况不会发生.下面是代码示例和表,它的工作与否.代码示例在Mobile Safari和中进行测试Chrome.
TL; DR:
我有5个代码示例input type file:
1.(jsfiddle)
<input type="file" accept="image/*" capture>
Run Code Online (Sandbox Code Playgroud)
2.(jsfiddle)
<input type="file" accept="image/*" capture="camera">
Run Code Online (Sandbox Code Playgroud)
3.(jsfiddle)
<input type="file" capture="camera">
Run Code Online (Sandbox Code Playgroud)
4.(jsfiddle)
<input type="file" capture>
Run Code Online (Sandbox Code Playgroud)
5.(jsfiddle)
<input type="file" accept="image/*">
Run Code Online (Sandbox Code Playgroud)
测试设备:
结果表:
是否可以在没有Camera API的情况下通过HTML输入从相机中的相机获取照片?
脚本
我开发了一个应用程序并通过Phonegap封装它(Build)
用户可以使用html文件输入提交照片.但是没有选择从相机拍摄新照片,只有画廊和文件(以及任何其他存储应用程序,如驱动器或Dropbox,如果是这种情况).
我想启用相机选项,但没有PhoneGap的Camera API.
解决方案
我尝试了以下解决方案但没有成功:
1."捕获"属性(来自Raymond Camden的帖子)
使用此方法,您所要做的就是添加"capture"属性,如下所示:
<input type="file" capture="camera" accept="image/*" id="JustChooseAnID">
Run Code Online (Sandbox Code Playgroud)
Raymond解释说,使用这种方法,你不需要使用PhoneGap的Camera API,因为谷歌开发了这个选项,并在Google IO演示文稿中展示了它,据Google开发人员和Raymond说,它可以运行.
但是......不适合我.
2.配置Phonegap以询问相机的许可(来自Jorge Lizaso的问题)
"也许相机选项没有显示,因为你的应用没有适当的权限"
在上面的问题中,提到了4种间接询问和接收使用相机的适当权限的方法.
我已经尝试了方法2和4,虽然我的应用程序现在要求相机权限并且我允许它正确,当我使用文件输入时,所有选项都被呈现(如图库和文件),但没有相机.
3(和1).将最新版本的webkit与Crosswalk一起使用以确保解决方案#1
由于我的android webview可能会过时(并且与解决方案#1不兼容),我决定在我的应用程序中包含可能的最佳webview:最新版本的Google Chromium.
但是......再没有成功.
1,2和3组合在一起
结果:没有...成功.
我的个人app就快完成了,就是在输入框上按一下,用相机拍个照,上传到外部php服务器。最后一部分工作正常。我只是无法让它按照我想要的方式工作。当我按下 web 视图(外部源)中的输入字段时,我会看到名为“图像选择器”的菜单,其中包含以下选项:相机和文档。我想在按下输入字段时直接获取相机。
这是我的外部 html 页面,由 webview 加载:
<form id="uploadimage" action="" method="post" enctype="multipart/form-data">
<input type="file" style="display: none;" id="upload_file" name="upload_file" accept="image/*" capture="camera" />
<input type="submit" name='submit_image' id="clickme" value="Upload Image"/>
</form>
Run Code Online (Sandbox Code Playgroud)
这是我的 MainActivity.java 文件:
public class MainActivity extends AppCompatActivity{
WebView webView;
private static final String TAG = MainActivity.class.getSimpleName();
private String mCM;
private ValueCallback mUM;
private ValueCallback<Uri[]> mUMA;
private final static int FCR=1;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent){
super.onActivityResult(requestCode, resultCode, intent);
if(Build.VERSION.SDK_INT >= 21){
Uri[] results = null;
//Check …Run Code Online (Sandbox Code Playgroud)