效果图

public class WebViewActivity extends Activity { @BindView(R.id.constraintLayout_Title_Top) ConstraintLayout_Title_Top constraintLayoutTitleTop; @BindView(R.id.webview) com.tencent.smtt.sdk.WebView webview; public ValueCallback<Uri[]> mUploadMessageForAndroid5; public ValueCallback<Uri> mUploadMessage; public final static int FILE_CHOOSER_RESULT_CODE_FOR_ANDROID_5 = 2; private final static int FILE_CHOOSER_RESULT_CODE = 1;// 表单的结果回调 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_webview); ButterKnife.bind(this); initWebView(); initTitle(); } //webview设置 private void initWebView(){ webview.getSettings().setTextZoom(100);//当前字体百分比 webview.getSettings().setDefaultTextEncodingName("utf-8");//指定编码方式 webview.getSettings().setJavaScriptEnabled(true);//支持js webview.getSettings().setDomStorageEnabled(true); //设置支持DomStorage webview.getSettings().setAllowFileAccess(true);//设置在WebView内部是否允许访问文件 webview.getSettings().setBlockNetworkLoads(false);//设置WebView是否从网络加载资源,Application需要设置访问网络权限,否则报异常 webview.getSettings().setBlockNetworkImage(false);//设置WebView是否以http、https方式访问从网络加载图片资源,默认false webview.loadUrl("http://ldj.oapi.xunmall.com:3038/service/bussiness?uid=1440&f=1&token=3e2f600c5437f083ab93cf19b871dc51&v=58"); // 给WebView设置监听 webview.setWebViewClient(new WebViewClient() { //跳转连接 @Override public boolean shouldOverrideUrlLoading(com.tencent.smtt.sdk.WebView view, String url) { // 所有连接强制在当前WeiView加载,不跳服务器 webview.loadUrl(url); return true; } //加载结束 @Override public void onPageFinished(com.tencent.smtt.sdk.WebView view, String url) { super.onPageFinished(view, url); webview.loadUrl("javascript:openMusic()");//加载结束,加载音乐 } }); webview.setWebChromeClient(new WebChromeClient() { //Android < 5.0 public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) { openFileChooserImpl(uploadMsg); } //Android => 5.0 public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> uploadMsg, WebChromeClient.FileChooserParams fileChooserParams) { onenFileChooseImpleForAndroid(uploadMsg); return true; } }); } //标题栏设置 private void initTitle(){ //back键 constraintLayoutTitleTop.setBackOnlickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); constraintLayoutTitleTop.setTitleName("webview页面"); } /** * android 5.0 以下开启图片选择(原生) * 可以自己改图片选择框架。 */ private void openFileChooserImpl(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"), FILE_CHOOSER_RESULT_CODE); } /** * android 5.0(含) 以上开启图片选择(原生) * 可以自己改图片选择框架。 */ private void onenFileChooseImpleForAndroid(ValueCallback<Uri[]> filePathCallback) { mUploadMessageForAndroid5 = filePathCallback; Intent contentSelectionIntent = new Intent(Intent.ACTION_GET_CONTENT); contentSelectionIntent.addCategory(Intent.CATEGORY_OPENABLE); contentSelectionIntent.setType("image/*"); Intent chooserIntent = new Intent(Intent.ACTION_CHOOSER); chooserIntent.putExtra(Intent.EXTRA_INTENT, contentSelectionIntent); chooserIntent.putExtra(Intent.EXTRA_TITLE, "Image Chooser"); startActivityForResult(chooserIntent, FILE_CHOOSER_RESULT_CODE_FOR_ANDROID_5); } @Override public void onActivityResult(int requestCode, int resultCode,Intent intent) { Uri result = (intent == null || resultCode != Activity.RESULT_OK) ? null: intent.getData(); switch (requestCode){ case FILE_CHOOSER_RESULT_CODE: //android 5.0以下 选择图片回调 if (null == mUploadMessage) return; mUploadMessage.onReceiveValue(result); mUploadMessage = null; break; case FILE_CHOOSER_RESULT_CODE_FOR_ANDROID_5: //android 5.0(含) 以上 选择图片回调 if (null == mUploadMessageForAndroid5) return; if (result != null) { mUploadMessageForAndroid5.onReceiveValue(new Uri[]{result}); } else { mUploadMessageForAndroid5.onReceiveValue(new Uri[]{}); } mUploadMessageForAndroid5 = null; break; } } }