|
@@ -1,8 +1,9 @@
|
|
|
package com.cooleshow.teacher.ui.web;
|
|
|
|
|
|
+import android.Manifest;
|
|
|
+import android.content.Intent;
|
|
|
import android.content.pm.ActivityInfo;
|
|
|
import android.content.res.Configuration;
|
|
|
-import android.graphics.Color;
|
|
|
import android.net.Uri;
|
|
|
import android.os.Build;
|
|
|
import android.os.Bundle;
|
|
@@ -17,20 +18,33 @@ import android.widget.FrameLayout;
|
|
|
|
|
|
import com.alibaba.android.arouter.facade.annotation.Route;
|
|
|
import com.cooleshow.base.BuildConfig;
|
|
|
-import com.cooleshow.base.databinding.ActivityHtmlBinding;
|
|
|
+import com.cooleshow.base.common.WebConstants;
|
|
|
import com.cooleshow.base.router.RouterPath;
|
|
|
import com.cooleshow.base.ui.activity.BaseActivity;
|
|
|
import com.cooleshow.base.utils.LogUtils;
|
|
|
+import com.cooleshow.base.utils.PermissionUtils;
|
|
|
import com.cooleshow.base.utils.Utils;
|
|
|
import com.cooleshow.base.utils.helper.QMUIStatusBarHelper;
|
|
|
+import com.cooleshow.teacher.widgets.helper.JsInterfaceHelper;
|
|
|
import com.cooleshow.base.widgets.WebClient;
|
|
|
+import com.cooleshow.base.widgets.dialog.CommonDialog;
|
|
|
import com.cooleshow.teacher.R;
|
|
|
-import com.cooleshow.teacher.widgets.helper.JsInterfaceHelper;
|
|
|
+import com.cooleshow.teacher.databinding.ActivityHtmlBinding;
|
|
|
import com.cooleshow.base.widgets.LollipopFixedWebView;
|
|
|
import com.cooleshow.usercenter.helper.UserHelper;
|
|
|
+import com.daya.live_teaching.utils.GlideEngine;
|
|
|
+import com.luck.picture.lib.PictureSelector;
|
|
|
+import com.luck.picture.lib.config.PictureConfig;
|
|
|
+import com.luck.picture.lib.config.PictureMimeType;
|
|
|
+import com.luck.picture.lib.entity.LocalMedia;
|
|
|
+import com.luck.picture.lib.tools.PictureFileUtils;
|
|
|
+import com.tbruyelle.rxpermissions3.RxPermissions;
|
|
|
|
|
|
import org.json.JSONObject;
|
|
|
|
|
|
+import java.io.File;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
import androidx.annotation.NonNull;
|
|
|
import androidx.annotation.Nullable;
|
|
|
|
|
@@ -41,11 +55,12 @@ import static com.cooleshow.base.common.WebConstants.WEB_URL;
|
|
|
*/
|
|
|
@Route(path = RouterPath.WebCenter.ACTIVITY_HTML)
|
|
|
public class WebActivity extends BaseActivity<ActivityHtmlBinding> implements JsInterfaceHelper.OnJsMethodCallListener, View.OnClickListener {
|
|
|
-
|
|
|
private WebView webView;
|
|
|
private String url;
|
|
|
private JsInterfaceHelper mInterfaceUtils;
|
|
|
private WebClient mWebClient;
|
|
|
+ private ValueCallback mUploadCallbackAboveL;
|
|
|
+
|
|
|
|
|
|
@Override
|
|
|
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
|
@@ -88,7 +103,7 @@ public class WebActivity extends BaseActivity<ActivityHtmlBinding> implements Js
|
|
|
initWebView();
|
|
|
mInterfaceUtils = new JsInterfaceHelper(WebActivity.this);
|
|
|
mInterfaceUtils.setOnJsCallListener(this);
|
|
|
- webView.addJavascriptInterface(mInterfaceUtils, "COLEXIUAPPA");
|
|
|
+ webView.addJavascriptInterface(mInterfaceUtils, WebConstants.WEB_JS_INTERFACE);
|
|
|
mWebClient = new WebClient();
|
|
|
webView.setWebViewClient(mWebClient);
|
|
|
webView.setWebChromeClient(new MyWebChromeClient());
|
|
@@ -115,7 +130,7 @@ public class WebActivity extends BaseActivity<ActivityHtmlBinding> implements Js
|
|
|
private void initWebView() {
|
|
|
//声明WebSettings子类
|
|
|
WebSettings webSettings = webView.getSettings();
|
|
|
- webSettings.setUserAgentString(webSettings.getUserAgentString() + ";DAYAAPPA");
|
|
|
+ webSettings.setUserAgentString(webSettings.getUserAgentString() + WebConstants.WEB_UA_PARAMS);
|
|
|
webSettings.setGeolocationDatabasePath(getApplicationContext().getFilesDir().getPath());
|
|
|
webSettings.setGeolocationEnabled(true);
|
|
|
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
|
|
@@ -248,8 +263,8 @@ public class WebActivity extends BaseActivity<ActivityHtmlBinding> implements Js
|
|
|
public boolean onShowFileChooser(
|
|
|
WebView webView, ValueCallback<Uri[]> filePathCallback,
|
|
|
FileChooserParams fileChooserParams) {
|
|
|
-// setUploadMsg(filePathCallback);
|
|
|
-// addPermissions(PORTRAIT_REQUEST_CODE);
|
|
|
+ mUploadCallbackAboveL = filePathCallback;
|
|
|
+ startPictureSelect();
|
|
|
return true;
|
|
|
}
|
|
|
|
|
@@ -304,4 +319,54 @@ public class WebActivity extends BaseActivity<ActivityHtmlBinding> implements Js
|
|
|
public void onConfigurationChanged(@NonNull Configuration newConfig) {
|
|
|
super.onConfigurationChanged(newConfig);
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ private void startPictureSelect() {
|
|
|
+ new RxPermissions(this)
|
|
|
+ .request(Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE)
|
|
|
+ .subscribe(permission -> {
|
|
|
+ if (permission) {
|
|
|
+ PictureSelector.create(this)
|
|
|
+ .openGallery(PictureMimeType.ofImage())//全部.PictureMimeType.ofAll()、图片.ofImage()、视频.ofVideo()、音频.ofAudio()
|
|
|
+ .loadImageEngine(GlideEngine.createGlideEngine())
|
|
|
+ .theme(com.cooleshow.base.R.style.picture_daya_style)// 主题样式设置 具体参考 values/styles 用法:R .style.picture.white.style
|
|
|
+ .selectionMode(PictureConfig.SINGLE)// 多选 or 单选 PictureConfig.MULTIPLE or PictureConfig.SINGLE
|
|
|
+ .enableCrop(false)// 是否裁剪 true or false
|
|
|
+ .showCropGrid(false)// 是否显示裁剪矩形网格 圆形裁剪时建议设为false true or false
|
|
|
+ .compress(true)// 是否压缩 true or false
|
|
|
+ .circleDimmedLayer(false)// 是否圆形裁剪 true or false
|
|
|
+ .forResult(PictureConfig.CHOOSE_REQUEST);
|
|
|
+ } else {
|
|
|
+ CommonDialog dialog = new CommonDialog(this);
|
|
|
+ dialog.show();
|
|
|
+ dialog.setTitle("提示");
|
|
|
+ dialog.setContent("上传照片需要相机权限,是否去设置?");
|
|
|
+ dialog.setOnCancelClickListener(view1 -> {
|
|
|
+ dialog.dismiss();
|
|
|
+ });
|
|
|
+
|
|
|
+ dialog.setOnConfirmClickListener(view1 -> {
|
|
|
+ PermissionUtils.toSelfSetting(this);
|
|
|
+ dialog.dismiss();
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
|
|
|
+ super.onActivityResult(requestCode, resultCode, data);
|
|
|
+ if (requestCode == PictureConfig.CHOOSE_REQUEST && mUploadCallbackAboveL != null) {
|
|
|
+ // 图片、视频、音频选择结果回调
|
|
|
+ List<LocalMedia> selectList = PictureSelector.obtainMultipleResult(data);
|
|
|
+ String avatar = selectList.get(0).getCompressPath();
|
|
|
+
|
|
|
+ if (avatar != null) {
|
|
|
+ mUploadCallbackAboveL.onReceiveValue(new Uri[]{PictureFileUtils.parUri(getApplicationContext(), new File(avatar))});
|
|
|
+ } else {
|
|
|
+ mUploadCallbackAboveL.onReceiveValue(new Uri[]{});
|
|
|
+ }
|
|
|
+ mUploadCallbackAboveL = null;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|