我正在与Sencha Touch合作,但这是一个更普遍的问题。
我已经使用简单的html输入类型文件实现了一个图像文件上传示例。
从我的浏览器(如Chrome)运行示例,当我按下选择文件按钮时,相机会显示为获取文件的选项。但是,如果我通过Phonegap打包应用程序,当我按下按钮时,只能选择文件管理器和类似的应用程序。
此外,我尝试使用输入类型文件,接受图像/ *并捕获相机但没有成功。
呈现页面的Android WebView是否有可能不像Chrome视图那样功能完整?
我是否有其他标准选项来选择使用Phonegap的相机?
谢谢!
答案 0 :(得分:0)
我很惊讶PhoneGap没有公开一个可以解决这个问题的功能 - 他们当然会在阳光下请求每一个许可!
如果您正在创建网页,您当然可以定义一个js接口,该接口将依次执行startActivityForResult,如下所示:
today.setToNow();
PackageManager pm = getPackageManager();
// if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER))
// {
Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
i.putExtra(MediaStore.EXTRA_OUTPUT, FileContentProvider.CONTENT_URI);
if (pm.hasSystemFeature(PackageManager.FEATURE_CAMERA))
i.putExtra("camerasensortype", 1); // call the rear camera
else if (pm.hasSystemFeature(PackageManager.FEATURE_CAMERA_FRONT))
i.putExtra("camerasensortype", 2); // call the front camera
else Toast.makeText(getBaseContext(), "Camera is not available", Toast.LENGTH_LONG).show();
i.putExtra("autofocus", true);
i.putExtra("fullScreen", false);
i.putExtra("showActionIcons", false);
startActivityForResult(i, CAMERA_REQUEST);
// }
else askForGPS(this);
然后
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK && requestCode == CAMERA_REQUEST)
{...}
甚至不需要实现interface =]
那时你已经得到了你的照片;设置ContentProvider并指向您的上传者。 =]