效果图

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;
}
}
}