2017-02-22 81 views
1

我一直在努力尝试从web视图上传文件。 我尝试了很多解决方案,但都没有工作。webview,文件输入字段filechoos不显示

http://m0s-programming.blogspot.tw/2011/02/file-upload-in-through-webview-on.html

Android WebView File Upload

文件选择当我点击按钮,浏览器打开一个对话框,在这里我可以选择要上传的文件在桌面浏览器Chrome等工作正常。

当我使用我的手机测试程序,我点击选择文件对话框没有反应

有人能帮助我吗?由于

回答

0

参见本文档:

https://infeeds.com/d/CODEmgks/20475/upload-image-file-gallery-or-camera-webv

public boolean onShowFileChooser(
    WebView webView, ValueCallback<Uri[]> filePathCallback, 
    WebChromeClient.FileChooserParams fileChooserParams){ 
    if(mUMA != null){ 
      mUMA.onReceiveValue(null); 
    } 
    mUMA = filePathCallback; 
    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    if(takePictureIntent.resolveActivity(MainActivity.this.getPackageManager()) != null){ 
      File photoFile = null; 
      try{ 
       photoFile = createImageFile(); 
       takePictureIntent.putExtra("PhotoPath", mCM); 
      }catch(IOException ex){ 
       Log.e(TAG, "Image file creation failed", ex); 
      } 
      if(photoFile != null){ 
       mCM = "file:" + photoFile.getAbsolutePath(); 
       takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile)); 
      }else{ 
       takePictureIntent = null; 
      } 
    } 
    Intent contentSelectionIntent = new Intent(Intent.ACTION_GET_CONTENT); 
    contentSelectionIntent.addCategory(Intent.CATEGORY_OPENABLE); 
    contentSelectionIntent.setType("image/*"); 
    Intent[] intentArray; 
    if(takePictureIntent != null){ 
      intentArray = new Intent[]{takePictureIntent}; 
    }else{ 
      intentArray = new Intent[0]; 
    } 

    Intent chooserIntent = new Intent(Intent.ACTION_CHOOSER); 
    chooserIntent.putExtra(Intent.EXTRA_INTENT, contentSelectionIntent); 
    chooserIntent.putExtra(Intent.EXTRA_TITLE, "Image Chooser"); 
    chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, intentArray); 
    startActivityForResult(chooserIntent, FCR); 
    return true; 
} 

创建镜像文件功能,在我们需要它来创建新的临时文件上传上面的代码中提到。

private File createImageFile() throws IOException{ 
    @SuppressLint("SimpleDateFormat") String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 
    String imageFileName = "img_"+timeStamp+"_"; 
    File storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES); 
    return File.createTempFile(imageFileName,".jpg",storageDir); 
} 
+0

有git项目在链接 – Athul

+0

它适用于我。谢谢 !! – Anymore

+0

@Anymore:Upvote答案让其他人轻松参考它 – Athul