700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > android webview不支持input type=file 标签解决办法

android webview不支持input type=file 标签解决办法

时间:2023-02-25 03:21:38

相关推荐

android webview不支持input type=file 标签解决办法

项目中遇到 H5的input type="file"标签在android的webview中失效,查了一下是安卓禁用掉了

重写webview 的WebChromeClient可以解决

webView.setWebChromeClient(new WebChromeClient(){// For 3.0+ Devices (Start)// onActivityResult attached before constructorprotected void openFileChooser(ValueCallback uploadMsg, String acceptType){mUploadMessage = uploadMsg;Intent i = new Intent(Intent.ACTION_GET_CONTENT);i.addCategory(Intent.CATEGORY_OPENABLE);i.setType("image/*");startActivityForResult(Intent.createChooser(i, "File Browser"), FILECHOOSER_RESULTCODE);}// For Lollipop 5.0+ Devices@TargetApi(Build.VERSION_CODES.LOLLIPOP)@Overridepublic boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, FileChooserParams fileChooserParams) {if (uploadMessage != null) {uploadMessage.onReceiveValue(null);uploadMessage = null;}uploadMessage = filePathCallback;Intent intent = fileChooserParams.createIntent();try{startActivityForResult(intent, REQUEST_SELECT_FILE);} catch (ActivityNotFoundException e){uploadMessage = null;Toast.makeText(getBaseContext(), "Cannot Open File Chooser", Toast.LENGTH_LONG).show();return false;}return true;}//For Android 4.1 onlyprotected void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture){mUploadMessage = uploadMsg;Intent intent = new Intent(Intent.ACTION_GET_CONTENT);intent.addCategory(Intent.CATEGORY_OPENABLE);intent.setType("image/*");startActivityForResult(Intent.createChooser(intent, "File Browser"), FILECHOOSER_RESULTCODE);}protected void openFileChooser(ValueCallback<Uri> uploadMsg) {mUploadMessage = uploadMsg;Intent i = new Intent(Intent.ACTION_GET_CONTENT);i.addCategory(Intent.CATEGORY_OPENABLE);i.setType("image/*");startActivityForResult(Intent.createChooser(i, "File Chooser"), FILECHOOSER_RESULTCODE);}});

@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {if (requestCode == REQUEST_SELECT_FILE){if (uploadMessage == null)return;uploadMessage.onReceiveValue(WebChromeClient.FileChooserParams.parseResult(resultCode, data));uploadMessage = null;}}else if (requestCode == FILECHOOSER_RESULTCODE) {if (null == mUploadMessage)return;// Use MainActivity.RESULT_OK if you're implementing WebView inside Fragment// Use RESULT_OK only if you're implementing WebView inside an ActivityUri result = data == null || resultCode != NewQuanZi.RESULT_OK ? null : data.getData();mUploadMessage.onReceiveValue(result);mUploadMessage = null;}elseToast.makeText(getBaseContext(), "选择图片失败", Toast.LENGTH_LONG).show();}

可以解决3.1 4.1 5.0以上的版本的问题

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。