|
|
@@ -10,6 +10,7 @@ import android.graphics.Bitmap;
|
|
|
import android.net.Uri;
|
|
|
import android.os.Build;
|
|
|
import android.os.Bundle;
|
|
|
+import android.provider.MediaStore;
|
|
|
import android.text.TextUtils;
|
|
|
import android.view.LayoutInflater;
|
|
|
import android.view.View;
|
|
|
@@ -58,8 +59,11 @@ public class CaseFragment extends BaseMvpFragment {
|
|
|
|
|
|
private ValueCallback<Uri> uploadMessage;
|
|
|
private ValueCallback<Uri[]> uploadMessageAboveL;
|
|
|
+
|
|
|
+ private int mResultCode = Activity.RESULT_CANCELED;
|
|
|
private final static int FILE_CHOOSER_RESULT_CODE = 10000;
|
|
|
private final static int REQUEST_CAMERA = 10001;
|
|
|
+ private final static int REQUEST_VIDEO = 10002;
|
|
|
private boolean needClearHistory = false;
|
|
|
private LoadingDialog mLoadingDialog;
|
|
|
@Override
|
|
|
@@ -124,13 +128,13 @@ public class CaseFragment extends BaseMvpFragment {
|
|
|
//设置WebView属性,能够执行Javascript脚本
|
|
|
WebSettings webSettings=mWebView.getSettings();
|
|
|
webSettings.setJavaScriptEnabled(true);
|
|
|
- // webSettings.setAllowFileAccess(true);// 设置允许访问文件数据
|
|
|
- //webSettings.setSupportZoom(true);
|
|
|
- // webSettings.setBuiltInZoomControls(true);
|
|
|
- // webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
|
|
|
- // webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
|
|
|
- // webSettings.setDomStorageEnabled(true);
|
|
|
- // webSettings.setDatabaseEnabled(true);
|
|
|
+ webSettings.setAllowFileAccess(true);// 设置允许访问文件数据
|
|
|
+ webSettings.setSupportZoom(true); // 允许缩放
|
|
|
+ webSettings.setBuiltInZoomControls(true);
|
|
|
+ // webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
|
|
|
+ webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE); // 不加载缓存内容
|
|
|
+ webSettings.setDomStorageEnabled(true);
|
|
|
+ // webSettings.setDatabaseEnabled(true);
|
|
|
webSettings.setUseWideViewPort(true);
|
|
|
|
|
|
|
|
|
@@ -211,7 +215,8 @@ public class CaseFragment extends BaseMvpFragment {
|
|
|
}
|
|
|
|
|
|
private void openImageChooserActivity() {
|
|
|
- final String[] items = new String[] { "相机", "文件" };
|
|
|
+ final String[] items = new String[] { "相机", "录像" , "照片/视频"};
|
|
|
+ // final String[] items = new String[] { "相机", "照片/视频"};
|
|
|
// 创建对话框构建器
|
|
|
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
|
|
|
// 设置参数
|
|
|
@@ -221,8 +226,10 @@ public class CaseFragment extends BaseMvpFragment {
|
|
|
public void onClick(DialogInterface dialog, int which) {
|
|
|
if (items[which].equals("相机")) {
|
|
|
chooseFromCamera();
|
|
|
- } else {
|
|
|
+ } else if(items[which].equals("照片/视频")) {
|
|
|
chooseFromFile();
|
|
|
+ }else {
|
|
|
+ chooseFromVideo();
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
@@ -240,14 +247,25 @@ public class CaseFragment extends BaseMvpFragment {
|
|
|
private void chooseFromFile() {
|
|
|
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
|
|
|
i.addCategory(Intent.CATEGORY_OPENABLE);
|
|
|
- i.setType("image/*");
|
|
|
+ i.setType("video/;image/");
|
|
|
startActivityForResult(Intent.createChooser(i, "Image Chooser"), FILE_CHOOSER_RESULT_CODE);
|
|
|
}
|
|
|
|
|
|
+ private void chooseFromVideo() {
|
|
|
+ Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
|
|
|
+ //设置视频质量
|
|
|
+ intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);
|
|
|
+ //设置视频时长
|
|
|
+ intent.putExtra(MediaStore.EXTRA_DURATION_LIMIT, 10);
|
|
|
+ //开启摄像机
|
|
|
+ startActivityForResult(intent, REQUEST_VIDEO);
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
@Override
|
|
|
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
|
|
super.onActivityResult(requestCode, resultCode, data);
|
|
|
+ mResultCode = resultCode;
|
|
|
if (requestCode == FILE_CHOOSER_RESULT_CODE) {
|
|
|
if (null == uploadMessage && null == uploadMessageAboveL) return;
|
|
|
Uri result = data == null || resultCode != RESULT_OK ? null : data.getData();
|
|
|
@@ -257,8 +275,9 @@ public class CaseFragment extends BaseMvpFragment {
|
|
|
uploadMessage.onReceiveValue(result);
|
|
|
uploadMessage = null;
|
|
|
}
|
|
|
- } else if (requestCode == REQUEST_CAMERA) {
|
|
|
-
|
|
|
+ }
|
|
|
+ else if (requestCode == REQUEST_CAMERA) {
|
|
|
+ // 照相
|
|
|
if (null == uploadMessage && null == uploadMessageAboveL) return;
|
|
|
Uri result = data == null || resultCode != RESULT_OK ? null : data.getData();
|
|
|
if (uploadMessageAboveL != null) {
|
|
|
@@ -268,6 +287,29 @@ public class CaseFragment extends BaseMvpFragment {
|
|
|
uploadMessage = null;
|
|
|
}
|
|
|
}
|
|
|
+ else if (requestCode == REQUEST_VIDEO) {
|
|
|
+ // 视频
|
|
|
+ if (null == uploadMessage && null == uploadMessageAboveL) return;
|
|
|
+ Uri result = data == null || resultCode != RESULT_OK ? null : data.getData();
|
|
|
+ if (uploadMessageAboveL != null) {
|
|
|
+ if (resultCode == RESULT_OK) {
|
|
|
+ uploadMessageAboveL.onReceiveValue(new Uri[]{result});
|
|
|
+ uploadMessageAboveL = null;
|
|
|
+ } else {
|
|
|
+ uploadMessageAboveL.onReceiveValue(new Uri[]{});
|
|
|
+ uploadMessageAboveL = null;
|
|
|
+ }
|
|
|
+ } else if (uploadMessage != null) {
|
|
|
+ if (resultCode == RESULT_OK) {
|
|
|
+ uploadMessage.onReceiveValue(result);
|
|
|
+ uploadMessage = null;
|
|
|
+ } else {
|
|
|
+ uploadMessage.onReceiveValue(Uri.EMPTY);
|
|
|
+ uploadMessage = null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -351,4 +393,26 @@ public class CaseFragment extends BaseMvpFragment {
|
|
|
public void onViewClicked() {
|
|
|
onBackPressed();
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onResume() {
|
|
|
+ super.onResume();
|
|
|
+ // 取消选择时需要回调onReceiveValue,否则网页会挂住,不会再响应点击事件
|
|
|
+ if (mResultCode == Activity.RESULT_CANCELED) {
|
|
|
+ try {
|
|
|
+ if (uploadMessageAboveL != null) {
|
|
|
+ uploadMessageAboveL.onReceiveValue(null);
|
|
|
+ }
|
|
|
+ if (uploadMessage != null) {
|
|
|
+ uploadMessage.onReceiveValue(null);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
}
|