|
|
@@ -1,10 +1,18 @@
|
|
|
package com.wiipu.peopleheart.cases;
|
|
|
|
|
|
+import android.annotation.TargetApi;
|
|
|
+import android.app.Activity;
|
|
|
+import android.content.ClipData;
|
|
|
+import android.content.Intent;
|
|
|
+import android.net.Uri;
|
|
|
+import android.os.Build;
|
|
|
import android.os.Bundle;
|
|
|
import android.text.TextUtils;
|
|
|
import android.view.LayoutInflater;
|
|
|
import android.view.View;
|
|
|
import android.view.ViewGroup;
|
|
|
+import android.webkit.ValueCallback;
|
|
|
+import android.webkit.WebChromeClient;
|
|
|
import android.webkit.WebView;
|
|
|
import android.webkit.WebViewClient;
|
|
|
import android.widget.ImageView;
|
|
|
@@ -20,6 +28,8 @@ import butterknife.ButterKnife;
|
|
|
import butterknife.OnClick;
|
|
|
import butterknife.Unbinder;
|
|
|
|
|
|
+import static android.app.Activity.RESULT_OK;
|
|
|
+
|
|
|
|
|
|
public class CaseFragment extends BaseMvpFragment {
|
|
|
|
|
|
@@ -34,6 +44,10 @@ public class CaseFragment extends BaseMvpFragment {
|
|
|
@BindView(R.id.ll_case)
|
|
|
RelativeLayout llCase;
|
|
|
|
|
|
+ private ValueCallback<Uri> uploadMessage;
|
|
|
+ private ValueCallback<Uri[]> uploadMessageAboveL;
|
|
|
+ private final static int FILE_CHOOSER_RESULT_CODE = 10000;
|
|
|
+ private boolean needClearHistory = false;
|
|
|
@Override
|
|
|
protected void attach() {
|
|
|
|
|
|
@@ -50,6 +64,17 @@ public class CaseFragment extends BaseMvpFragment {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
+ public void onHiddenChanged(boolean hidden) {
|
|
|
+ super.onHiddenChanged(hidden);
|
|
|
+ if (hidden) {
|
|
|
+ //不能在此直接clearhistory,因为新的页面还没有加载完,无法清除history
|
|
|
+ mWebView.loadUrl(HttpClient.BASE_NET_URL + "weixinMinxin/allHanding_manage.php");
|
|
|
+ needClearHistory = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
protected void initViews() {
|
|
|
//设置WebView属性,能够执行Javascript脚本
|
|
|
mWebView.getSettings().setJavaScriptEnabled(true);
|
|
|
@@ -59,6 +84,7 @@ public class CaseFragment extends BaseMvpFragment {
|
|
|
//当用户点击了你的WebView中的一个链接,默认的行为是Android启动一个处理URL的应用,通常,默认的浏览器打开并下载目标URL。
|
|
|
// 可以在WebView中覆盖这一行为,使得连接仍在WebView中打开。
|
|
|
mWebView.setWebViewClient(new WebViewClient() {
|
|
|
+
|
|
|
@Override
|
|
|
public void onPageFinished(WebView view, String url) {
|
|
|
super.onPageFinished(view, url);
|
|
|
@@ -66,9 +92,43 @@ public class CaseFragment extends BaseMvpFragment {
|
|
|
if (!TextUtils.isEmpty(title)) {
|
|
|
tvTitleCase.setText(title);
|
|
|
}
|
|
|
+ if (needClearHistory) {
|
|
|
+ mWebView.clearHistory();
|
|
|
+ }
|
|
|
}
|
|
|
});
|
|
|
|
|
|
+ mWebView.setWebChromeClient(new WebChromeClient(){
|
|
|
+
|
|
|
+ // For Android < 3.0
|
|
|
+ public void openFileChooser(ValueCallback<Uri> valueCallback) {
|
|
|
+ uploadMessage = valueCallback;
|
|
|
+ openImageChooserActivity();
|
|
|
+ }
|
|
|
+
|
|
|
+ // For Android >= 3.0
|
|
|
+ public void openFileChooser(ValueCallback valueCallback, String acceptType) {
|
|
|
+ uploadMessage = valueCallback;
|
|
|
+ openImageChooserActivity();
|
|
|
+ }
|
|
|
+
|
|
|
+ //For Android >= 4.1
|
|
|
+ public void openFileChooser(ValueCallback<Uri> valueCallback, String acceptType, String capture) {
|
|
|
+ uploadMessage = valueCallback;
|
|
|
+ openImageChooserActivity();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ //For Android >=5.0
|
|
|
+ @Override
|
|
|
+ public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, FileChooserParams fileChooserParams) {
|
|
|
+ // return super.onShowFileChooser(webView, filePathCallback, fileChooserParams);
|
|
|
+ uploadMessageAboveL = filePathCallback;
|
|
|
+ openImageChooserActivity();
|
|
|
+ return true;
|
|
|
+
|
|
|
+ }
|
|
|
+ });
|
|
|
|
|
|
/*
|
|
|
mainWebView.canGoBack()
|
|
|
@@ -102,6 +162,56 @@ public class CaseFragment extends BaseMvpFragment {
|
|
|
*/
|
|
|
}
|
|
|
|
|
|
+ private void openImageChooserActivity() {
|
|
|
+ Intent i = new Intent(Intent.ACTION_GET_CONTENT);
|
|
|
+ i.addCategory(Intent.CATEGORY_OPENABLE);
|
|
|
+ i.setType("image/*");
|
|
|
+ startActivityForResult(Intent.createChooser(i, "Image Chooser"), FILE_CHOOSER_RESULT_CODE);
|
|
|
+
|
|
|
+ }
|
|
|
+ @Override
|
|
|
+ public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
|
|
+ super.onActivityResult(requestCode, resultCode, data);
|
|
|
+ if (requestCode == FILE_CHOOSER_RESULT_CODE) {
|
|
|
+ if (null == uploadMessage && null == uploadMessageAboveL) return;
|
|
|
+ Uri result = data == null || resultCode != RESULT_OK ? null : data.getData();
|
|
|
+ if (uploadMessageAboveL != null) {
|
|
|
+ onActivityResultAboveL(requestCode, resultCode, data);
|
|
|
+ } else if (uploadMessage != null) {
|
|
|
+ uploadMessage.onReceiveValue(result);
|
|
|
+ uploadMessage = null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
|
|
+ private void onActivityResultAboveL(int requestCode, int resultCode, Intent intent) {
|
|
|
+ if (requestCode != FILE_CHOOSER_RESULT_CODE || uploadMessageAboveL == null)
|
|
|
+ return;
|
|
|
+ Uri[] results = null;
|
|
|
+ if (resultCode == RESULT_OK) {
|
|
|
+ if (intent != null) {
|
|
|
+ String dataString = intent.getDataString();
|
|
|
+ ClipData clipData = intent.getClipData();
|
|
|
+ if (clipData != null) {
|
|
|
+ results = new Uri[clipData.getItemCount()];
|
|
|
+ for (int i = 0; i < clipData.getItemCount(); i++) {
|
|
|
+ ClipData.Item item = clipData.getItemAt(i);
|
|
|
+ results[i] = item.getUri();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (dataString != null)
|
|
|
+ results = new Uri[]{Uri.parse(dataString)};
|
|
|
+ }
|
|
|
+ }
|
|
|
+ uploadMessageAboveL.onReceiveValue(results);
|
|
|
+ uploadMessageAboveL = null;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
@Override
|
|
|
protected void initListeners() {
|
|
|
|