本机打包应用程序中的Android输入类型文件

时间:2014-03-04 11:12:14

标签: android ajax cordova file-io

我正在与Sencha Touch合作,但这是一个更普遍的问题。

我已经使用简单的html输入类型文件实现了一个图像文件上传示例。

从我的浏览器(如Chrome)运行示例,当我按下选择文件按钮时,相机会显示为获取文件的选项。但是,如果我通过Phonegap打包应用程序,当我按下按钮时,只能选择文件管理器和类似的应用程序。

此外,我尝试使用输入类型文件,接受图像/ *并捕获相机但没有成功。

呈现页面的Android WebView是否有可能不像Chrome视图那样功能完整?

我是否有其他标准选项来选择使用Phonegap的相机?

谢谢!

1 个答案:

答案 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并指向您的上传者。 =]