当前位置: 首页 > 知识库问答 >
问题:

webview,文件输入字段filechooser未显示

杨腾
2023-03-14

我一直在努力从网络视图上传文件。我尝试了许多解决方案,但都没有奏效。

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

Android WebView文件上载

当我单击按钮时,filechooser在chrome等桌面浏览器中工作正常,浏览器会打开一个对话框,我可以在其中选择要上载的文件。

当我用手机测试程序并单击选择文件时,对话框没有反应

有人能帮我吗?谢谢

共有1个答案

董畅
2023-03-14

请参阅本文档:

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);
}
 类似资料:
  • 我已经处理了文件选择器,它完美地上传了文件, <罢工> 问题出在相机上。一旦我试图上传相机照片,它崩溃了。据我所知,这是因为URI。 a)文件选择器:内容://media/external/images/1234 b)摄像:文件:///mnt/sdcard/pic.jpg <罢工> 它现在崩溃了,因为在尝试上传“content://media/external/images/1234”时出现了nu

  • 问题内容: 我正在尝试从webview使用android构建Web项目。我有一个类型为file的输入字段,`<input type=”file” `可让用户将文件上传到服务器,但是在android webview上似乎不起作用,当我点击浏览按钮时,什么也没发生。 编译器 activity_comp.xml comp.html (在资产文件夹中) 任何帮助,将不胜感激。 问题答案: Riad的答案指

  • 问题内容: 我正在做一个phonegap应用。当我尝试如下所示的输入字段时,它按预期显示了iPhone中的日期选择器,但没有显示我给定的占位符。我在SO中发现了相同的问题,但没有解决方案。 问题答案: 可能不合适……但这对我有所帮助。

  • 我已经尝试打开一个FileChooser-Dialog和工作,但我需要一个没有FileChooser的解决方案。应该使用“path”-变量的路径。我知道这将是一个巨大的安全漏洞,但可能有解决办法吗?也许可以通过JavaScript更改die输入值?也许有图书馆? PS:不是为了做任何非法的事情-该公司的应用程序正在生成个人资料图像,他们需要通过一个现有的不可更改的输入类型文件上传。 提前谢了。

  • 问题内容: 假设我们有这个网站https://www.coinichiwa.com/,其中有一个BET AMOUNT输入框。它的html是: 我需要在其中添加一些价值。这是我的代码: 但是,既没有将其值设置为“ 0.00000005”,也没有打印输入的。 我不知道怎么了。你能建议吗?为什么不起作用? 问题答案: 您需要先输入文字: 至于第二个问题- 这是一个,您输入的值将保留在属性内,而不是文本内

  • 问题内容: 我有一个查询和一个表。该表的名称为OrderT,而查询的名称为SearchQ。查询在那里,所以我可以有一个子表单来显示表单上的搜索结果。尽管我的查询如果缺少任何字段中的任何数据,也不会在表上显示一行。例如,如果我有CustomerName,OrderNumber和OrderDueDate字段,而我填写了CustomerName,OrderNumber,但将OrderDueDate留为空