充电桩app代码

CarOwnerCertificateActivity.java 35KB

    package com.electric.chargingpile.activity; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import androidx.constraintlayout.widget.ConstraintLayout; import android.Manifest; import android.app.ProgressDialog; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Matrix; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.provider.MediaStore; import android.text.Html; import android.text.TextUtils; import android.util.Base64; import android.util.SparseArray; import android.view.View; import android.view.WindowManager; import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; import com.bumptech.glide.Glide; import com.bumptech.glide.load.engine.DiskCacheStrategy; import com.bumptech.glide.request.target.CustomTarget; import com.bumptech.glide.request.transition.Transition; import com.electric.chargingpile.R; import com.electric.chargingpile.application.MainApplication; import com.electric.chargingpile.data.CarOwnerCertificateBean; import com.electric.chargingpile.engine.GlideEngine; import com.electric.chargingpile.entity.CarBrandGroupEntity; import com.electric.chargingpile.entity.CarModelEntity; import com.electric.chargingpile.entity.CarSeriesEntity; import com.electric.chargingpile.event.CarBrandEvent; import com.electric.chargingpile.event.CarModelEvent; import com.electric.chargingpile.event.CarSeriesEvent; import com.electric.chargingpile.util.BarColorUtil; import com.electric.chargingpile.util.Bimp; import com.electric.chargingpile.util.DES3; import com.electric.chargingpile.util.FileUtils; import com.electric.chargingpile.util.ImageFileCompressEngine; import com.electric.chargingpile.util.JsonUtils; import com.electric.chargingpile.util.LoadingDialog; import com.electric.chargingpile.util.MeOnCameraInterceptListener; import com.electric.chargingpile.util.MeSandboxFileEngine; import com.electric.chargingpile.util.PictureUtlis; import com.electric.chargingpile.util.ToastUtil; import com.electric.chargingpile.util.Util; import com.electric.chargingpile.view.TextImageView; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import com.hjq.permissions.OnPermissionCallback; import com.hjq.permissions.XXPermissions; import com.luck.picture.lib.animators.AnimationType; import com.luck.picture.lib.basic.PictureSelector; import com.luck.picture.lib.config.PictureConfig; import com.luck.picture.lib.config.PictureMimeType; import com.luck.picture.lib.config.SelectMimeType; import com.luck.picture.lib.config.SelectModeConfig; import com.luck.picture.lib.entity.LocalMedia; import com.zhy.http.okhttp.OkHttpUtils; import com.zhy.http.okhttp.callback.StringCallback; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import io.reactivex.Observable; import io.reactivex.ObservableEmitter; import io.reactivex.ObservableOnSubscribe; import io.reactivex.Observer; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; import okhttp3.Call; import pub.devrel.easypermissions.AfterPermissionGranted; import pub.devrel.easypermissions.EasyPermissions; import static android.text.Html.FROM_HTML_MODE_LEGACY; import static com.hjq.permissions.Permission.CAMERA; import static com.hjq.permissions.Permission.READ_EXTERNAL_STORAGE; import static com.hjq.permissions.Permission.READ_MEDIA_IMAGES; /** * 车主认证 */ public class CarOwnerCertificateActivity extends AppCompatActivity implements View.OnClickListener { private static final int RC_ALBUM_PERM = 123; private static final int REQUEST_CODE_CHOOSE = 342; private Bitmap insertBitmap; private String drivingLicenseType = "自用"; private ProgressDialog insertDialog; private TextView nav_title; private Button submit_btn; private TextImageView driving_license_type_first; private TextImageView driving_license_type_second; private TextImageView driving_license_type_third; private TextView add_car_model_btn,tvAuthorize; private LoadingDialog loadDialog; private ArrayList<CarBrandGroupEntity> groups; private CarModelEntity carModelEntity; private ConstraintLayout car_model_constraint_layout; private ConstraintLayout car_model_selected_constraint_layout; private ImageView car_icon; private TextView car_series; private TextView car_model; private ConstraintLayout driving_license; private ImageView driving_license_icon; private ImageView driving_license_upload_icon; private TextView driving_license_text_view; private Drawable selected; private Drawable normal; private LinearLayout driving_license_info; private EditText plate_num; private EditText engine_num; private EditText register_date,identification_code; private CheckBox checkBox; private String drivingLicenseBase64Data; private Boolean edit; private CarOwnerCertificateBean carOwnerCertificateBean; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 禁止顶部固定部分滑动 getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); setContentView(R.layout.activity_car_owner_certificate); BarColorUtil.initStatusBarColor(CarOwnerCertificateActivity.this); initViews(); brandListRequest(false); add_car_model_btn.setVisibility(View.GONE); EventBus.getDefault().register(this); } private void initViews() { loadDialog = new LoadingDialog(this); loadDialog.setCanceledOnTouchOutside(false); edit = getIntent().getBooleanExtra("edit", false); if (edit) { String data = getIntent().getStringExtra("data"); Gson gson = new Gson(); carOwnerCertificateBean = gson.fromJson(data, CarOwnerCertificateBean.class); } insertDialog = new ProgressDialog(this); insertDialog.setMessage("正在插入图片..."); insertDialog.setCanceledOnTouchOutside(false); nav_title = findViewById(R.id.nav_title); findViewById(R.id.iv_back).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); add_car_model_btn = findViewById(R.id.add_car_model_btn); checkBox = findViewById(R.id.checkBox); tvAuthorize = findViewById(R.id.tvAuthorize); car_model_constraint_layout = findViewById(R.id.car_model_constraint_layout); car_model_selected_constraint_layout = findViewById(R.id.car_model_selected_constraint_layout); add_car_model_btn.setOnClickListener(this); car_model_selected_constraint_layout.setOnClickListener(this); car_icon = findViewById(R.id.car_icon); car_model = findViewById(R.id.car_model); car_series = findViewById(R.id.car_series); driving_license = findViewById(R.id.driving_license); driving_license.setOnClickListener(this); driving_license_icon = findViewById(R.id.driving_license_icon); driving_license_upload_icon = findViewById(R.id.driving_license_upload_icon); driving_license_text_view = findViewById(R.id.driving_license_text_view); driving_license_type_first = findViewById(R.id.driving_license_type_first); driving_license_type_second = findViewById(R.id.driving_license_type_second); driving_license_type_third = findViewById(R.id.driving_license_type_third); driving_license_type_first.setOnClickListener(this); driving_license_type_second.setOnClickListener(this); driving_license_type_third.setOnClickListener(this); driving_license_info = findViewById(R.id.driving_license_info); plate_num = findViewById(R.id.plate_num); engine_num = findViewById(R.id.engine_num); register_date = findViewById(R.id.register_date); identification_code = findViewById(R.id.identification_code); selected = getResources().getDrawable(R.drawable.icon_radio_selected, null); selected.setBounds(0, 0, selected.getMinimumWidth(), selected.getMinimumHeight()); normal = getResources().getDrawable(R.drawable.icon_radio_normal, null); normal.setBounds(0, 0, normal.getMinimumWidth(), normal.getMinimumHeight()); submit_btn = findViewById(R.id.submit_btn); submit_btn.setOnClickListener(this); if (edit) { nav_title.setText("更新车主认证"); Gson gson = new Gson(); CarModelEvent event = new CarModelEvent(gson.fromJson(carOwnerCertificateBean.getChexing(), CarModelEntity.class)); onCarModelMessage(event); if (!TextUtils.isEmpty(carOwnerCertificateBean.getLicense_img1())) { Glide.with(this).asBitmap().load(MainApplication.pic_url + carOwnerCertificateBean.getLicense_img1()).diskCacheStrategy(DiskCacheStrategy.ALL).into(new CustomTarget<Bitmap>() { @Override public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) { driving_license_icon.setImageBitmap(resource); String base64 = bitmapToBase64(resource); drivingLicenseBase64Data = "data:image/png;base64," + base64; } @Override public void onLoadCleared(@Nullable Drawable placeholder) { } }); driving_license_upload_icon.setVisibility(View.GONE); driving_license_text_view.setVisibility(View.GONE); driving_license_info.setVisibility(View.VISIBLE); plate_num.setText(carOwnerCertificateBean.getPlate_number()); engine_num.setText(carOwnerCertificateBean.getEngine_number()); register_date.setText(carOwnerCertificateBean.getRegdate()); identification_code.setText(carOwnerCertificateBean.getCar_code()); } if ("自用".equals(carOwnerCertificateBean.getCartype())) { drivingLicenseType = "自用"; driving_license_type_first.setCompoundDrawables(selected, null, null, null); driving_license_type_second.setCompoundDrawables(normal, null, null, null); driving_license_type_third.setCompoundDrawables(normal, null, null, null); } else if ("营运".equals(carOwnerCertificateBean.getCartype())) { drivingLicenseType = "营运"; driving_license_type_first.setCompoundDrawables(normal, null, null, null); driving_license_type_second.setCompoundDrawables(selected, null, null, null); driving_license_type_third.setCompoundDrawables(normal, null, null, null); } else if ("公务".equals(carOwnerCertificateBean.getCartype())) { drivingLicenseType = "公务"; driving_license_type_first.setCompoundDrawables(normal, null, null, null); driving_license_type_second.setCompoundDrawables(normal, null, null, null); driving_license_type_third.setCompoundDrawables(selected, null, null, null); } } else { nav_title.setText("车主认证"); } tvAuthorize.setText(Html.fromHtml("勾选后,即您同意<font color='#3EC34C'>《个人信息处理授权书》</font>并确认授权", FROM_HTML_MODE_LEGACY)); tvAuthorize.setOnClickListener(v->{ Intent intent = new Intent(getApplication(), MyWebViewActivity.class); intent.putExtra("url", "https://www.d1ev.com/special/change-map/authorization-agreement.html"); startActivity(intent); }); } private void brandListRequest(Boolean showLoading) { if (showLoading) loadDialog.show(); // https://www.jianshu.com/p/10382cc71127 // String url = "https://api.touchev.com:83/car/api/v1000/brand/list.do"; String url = "http://car.d1ev.com/car/api/v1000/brand/list.do?from=cdz"; OkHttpUtils.get().url(url).build().connTimeOut(30000).readTimeOut(30000).execute(new StringCallback() { @Override public void onError(Call call, Exception e) { Toast.makeText(getApplicationContext(), "网络不给力,请检查网络状态", Toast.LENGTH_SHORT).show(); loadDialog.dismiss(); add_car_model_btn.setVisibility(View.VISIBLE); } @Override public void onResponse(String response) { loadDialog.dismiss(); add_car_model_btn.setVisibility(View.VISIBLE); String code = JsonUtils.getKeyResult(response, "code"); String desc = JsonUtils.getKeyResult(response, "desc"); if ("1000".equals(code)) { String data = JsonUtils.getKeyResult(response, "data"); Gson gson = new Gson(); groups = gson.fromJson(data, new TypeToken<ArrayList<CarBrandGroupEntity>>() { }.getType()); if (groups == null || groups.size() == 0) { if (showLoading) ToastUtil.showToast(getApplicationContext(), desc, Toast.LENGTH_SHORT); } else { if (showLoading) { EventBus.getDefault().postSticky(new CarBrandEvent(groups)); CarBrandActivity.actionStart(CarOwnerCertificateActivity.this); // startActivity(new Intent(CarOwnerCertificateActivity.this, CarBrandActivity.class)); } } } else { if (showLoading) ToastUtil.showToast(getApplicationContext(), desc, Toast.LENGTH_SHORT); } } }); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.add_car_model_btn: case R.id.car_model_selected_constraint_layout: if (groups == null || groups.size() == 0) { brandListRequest(true); } else { EventBus.getDefault().postSticky(new CarBrandEvent(groups)); CarBrandActivity.actionStart(CarOwnerCertificateActivity.this); // startActivity(new Intent(CarOwnerCertificateActivity.this, CarBrandActivity.class)); } break; case R.id.driving_license: permissionTask(); break; case R.id.driving_license_type_first: drivingLicenseType = "自用"; driving_license_type_first.setCompoundDrawables(selected, null, null, null); driving_license_type_second.setCompoundDrawables(normal, null, null, null); driving_license_type_third.setCompoundDrawables(normal, null, null, null); break; case R.id.driving_license_type_second: drivingLicenseType = "营运"; driving_license_type_first.setCompoundDrawables(normal, null, null, null); driving_license_type_second.setCompoundDrawables(selected, null, null, null); driving_license_type_third.setCompoundDrawables(normal, null, null, null); break; case R.id.driving_license_type_third: drivingLicenseType = "公务"; driving_license_type_first.setCompoundDrawables(normal, null, null, null); driving_license_type_second.setCompoundDrawables(normal, null, null, null); driving_license_type_third.setCompoundDrawables(selected, null, null, null); break; case R.id.submit_btn: addCarOwnerCertification(); break; } } @Override protected void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this); } @Subscribe(threadMode = ThreadMode.MAIN) public void onCarModelMessage(CarModelEvent event) { if (event != null && event.getCarModelEntity() != null) { carModelEntity = event.getCarModelEntity(); car_model_constraint_layout.setVisibility(View.GONE); car_model_selected_constraint_layout.setVisibility(View.VISIBLE); car_series.setText(carModelEntity.getSeriesName()); car_model.setText(carModelEntity.getModelName()); try { String[] imgNames = carModelEntity.getMasterPic().split("!w"); imgNames[1] = imgNames[1].replace("480", "240"); Glide.with(CarOwnerCertificateActivity.this).load(imgNames[0] + "!w" + imgNames[1]).placeholder(android.R.color.white).dontAnimate().diskCacheStrategy(DiskCacheStrategy.ALL).fitCenter().into(car_icon); } catch (Exception e) { e.printStackTrace(); } } else { carModelEntity = null; car_model_constraint_layout.setVisibility(View.VISIBLE); car_model_selected_constraint_layout.setVisibility(View.GONE); } } @Override protected void onActivityResult(int requestCode, int resultCode, final Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK) { if (data != null) { if (requestCode == REQUEST_CODE_CHOOSE) { insertImagesSync(data); } } } } private Bitmap imageZoom(Bitmap bm) { // 图片允许最大空间 单位:KB double maxSize = 200.00; // 将bitmap放至数组中,意在bitmap的大小(与实际读取的原文件要大) ByteArrayOutputStream baos = new ByteArrayOutputStream(); bm.compress(Bitmap.CompressFormat.JPEG, 100, baos); byte[] b = baos.toByteArray(); // 将字节换成KB double mid = b.length / 1024; // 判断bitmap占用空间是否大于允许最大空间 如果大于则压缩 小于则不压缩 if (mid > maxSize) { // 获取bitmap大小 是允许最大大小的多少倍 double i = mid / maxSize; // 开始压缩 此处用到平方根 将宽带和高度压缩掉对应的平方根倍 // (1.保持刻度和高度和原bitmap比率一致,压缩后也达到了最大大小占用空间的大小) bm = zoomImage(bm, bm.getWidth() / Math.sqrt(i), bm.getHeight() / Math.sqrt(i)); } return bm; } public Bitmap zoomImage(Bitmap bgimage, double newWidth, double newHeight) { // 获取这个图片的宽和高 float width = bgimage.getWidth(); float height = bgimage.getHeight(); // 创建操作图片用的matrix对象 Matrix matrix = new Matrix(); // 计算宽高缩放率 float scaleWidth = ((float) newWidth) / width; float scaleHeight = ((float) newHeight) / height; // 缩放图片动作 matrix.postScale(scaleWidth, scaleHeight); Bitmap bitmap = Bitmap.createBitmap(bgimage, 0, 0, (int) width, (int) height, matrix, true); return bitmap; } /** * 异步方式插入图片 * * @param data */ private void insertImagesSync(final Intent data) { insertDialog.setMessage("正在插入图片..."); insertDialog.show(); Observable.create(new ObservableOnSubscribe<String>() { @Override public void subscribe(ObservableEmitter<String> subscriber) throws Exception { try { // List<Uri> uriList = Matisse.obtainResult(data); List<LocalMedia> localList = PictureSelector.obtainSelectorList(data); if (localList !=null && localList.size()>0 ){ LocalMedia localMedia = localList.get(0); // Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(uri)); // File file = FileUtils.from(CarOwnerCertificateActivity.this, uri); // bitmap = FileUtils.rotateIfRequired(file, bitmap); String path= Util.getCompressAbsolutePath(localMedia); insertBitmap =imageZoom( BitmapFactory.decodeFile(path)); subscriber.onComplete(); } } catch (Exception e) { e.printStackTrace(); subscriber.onError(e); } } }) .subscribeOn(Schedulers.io())//生产事件在io .observeOn(AndroidSchedulers.mainThread())//消费事件在UI线程 .subscribe(new Observer<String>() { @Override public void onComplete() { insertDialog.dismiss(); driving_license_icon.setImageBitmap(insertBitmap); driving_license_upload_icon.setVisibility(View.GONE); driving_license_text_view.setVisibility(View.GONE); String base64 = bitmapToBase64(insertBitmap); uploadPic(base64); } @Override public void onError(Throwable e) { insertDialog.dismiss(); ToastUtil.showToast(getApplicationContext(), "图片插入失败", Toast.LENGTH_SHORT); } @Override public void onSubscribe(Disposable d) { } @Override public void onNext(String imagePath) { } }); } private String bitmapToBase64(Bitmap bitmap) { String result = null; ByteArrayOutputStream baos = null; try { if (bitmap != null) { baos = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos); baos.flush(); baos.close(); byte[] bitmapBytes = baos.toByteArray(); result = Base64.encodeToString(bitmapBytes, Base64.NO_WRAP); } } catch (IOException e) { e.printStackTrace(); } finally { try { if (baos != null) { baos.flush(); baos.close(); } } catch (IOException e) { e.printStackTrace(); } } return result; } private void uploadPic(final String base64) { driving_license_info.setVisibility(View.VISIBLE); if (base64 == null) { return; } drivingLicenseBase64Data = "data:image/png;base64," + base64; insertDialog.setMessage("正在识别行驶证"); insertDialog.show(); long tokenTime = System.currentTimeMillis() / 1000 - MainMapActivity.cha - 1; String token = null; try { token = DES3.encode(String.valueOf(tokenTime)); } catch (Exception e) { e.printStackTrace(); } String url = MainApplication.url + "/zhannew/basic/web/index.php/car/ocr"; OkHttpUtils.post().url(url).addParams("Base64Data", drivingLicenseBase64Data).addParams("Category", "driving").addParams("token", token) .build().execute(new StringCallback() { @Override public void onError(Call call, Exception e) { insertDialog.dismiss(); e.printStackTrace(); ToastUtil.showToast(getApplicationContext(), e.getLocalizedMessage(), Toast.LENGTH_SHORT); } @Override public void onResponse(String response) { insertDialog.dismiss(); // {"Code":0,"Message":"成功","RequestId":"F84FF659-1D65-48E1-8C12-B253CEFCC4F8","Data":{"plate_num":"京Q52DR5","vehicle_type":"小型轿车","owner":"北京一度用车信息科技有限公司","address":"北京市海淀区中关村东路18号1号楼C日609-1","useCharacter":"葙赁","model":"北京牌BJ7000B3D5-BEV","vin":"LNBSCB3F4HD101254","engine_num":"AD33DH03040031","register_date":"20170525","issueDate":"00170525"}} String code = JsonUtils.getKeyResult(response, "Code"); if ("0".equals(code)) { String data = JsonUtils.getKeyResult(response, "Data"); String platNum = JsonUtils.getKeyResult(data, "plate_num"); String engineNum = JsonUtils.getKeyResult(data, "engine_num"); String registerDate = JsonUtils.getKeyResult(data, "register_date"); String car_code = JsonUtils.getKeyResult(data, "car_code"); plate_num.setText(platNum); engine_num.setText(engineNum); register_date.setText(registerDate); identification_code.setText(car_code); } else { String message = JsonUtils.getKeyResult(response, "Message"); ToastUtil.showToast(getApplicationContext(), message, Toast.LENGTH_SHORT); } } }); } private void addCarOwnerCertification() { if (!checkBox.isChecked()){ ToastUtil.showToast(this, "请阅读授权协议并勾选确认", Toast.LENGTH_SHORT); return; } if (carModelEntity == null) { ToastUtil.showToast(this, "请添加车型", Toast.LENGTH_SHORT); return; } if (drivingLicenseBase64Data == null) { ToastUtil.showToast(this, "请上传行驶证首页" + drivingLicenseType, Toast.LENGTH_SHORT); return; } if (TextUtils.isEmpty(plate_num.getText().toString().trim())) { ToastUtil.showToast(this, "请输入车牌号", Toast.LENGTH_SHORT); return; } if (TextUtils.isEmpty(engine_num.getText().toString().trim())) { ToastUtil.showToast(this, "请输入发动机号", Toast.LENGTH_SHORT); return; } if (TextUtils.isEmpty(register_date.getText().toString().trim())) { ToastUtil.showToast(this, "请输入注册日期", Toast.LENGTH_SHORT); return; } if (TextUtils.isEmpty(identification_code.getText().toString().trim())) { ToastUtil.showToast(this, "请输入车辆识别代号", Toast.LENGTH_SHORT); return; } insertDialog.setMessage("数据提交中"); insertDialog.show(); String url = MainApplication.url + "/zhannew/basic/web/index.php/car/add"; if (edit) { url = url + "?id=" + carOwnerCertificateBean.getId(); } Map<String, String> map = new HashMap<>(); Gson gson = new Gson(); String chexing = gson.toJson(carModelEntity); map.put("chexing", chexing); if (drivingLicenseBase64Data != null) { map.put("license_img1", drivingLicenseBase64Data); map.put("plate_number", plate_num.getText().toString().trim()); map.put("engine_number", engine_num.getText().toString().trim()); map.put("regdate", register_date.getText().toString().trim()); map.put("car_code", identification_code.getText().toString().trim()); } map.put("cartype", drivingLicenseType); map.put("userid", MainApplication.userId); long tokenTime = System.currentTimeMillis() / 1000 - MainMapActivity.cha - 1; String token = null; try { token = DES3.encode(String.valueOf(tokenTime)); } catch (Exception e) { e.printStackTrace(); } map.put("token", token); // OkHttpUtils.postString().url(url).content(new Gson().toJson(map)).mediaType(MediaType.parse("application/json; charset=utf-8")) OkHttpUtils.post().params(map).url(url).build().execute(new StringCallback() { @Override public void onError(Call call, Exception e) { insertDialog.dismiss(); e.printStackTrace(); ToastUtil.showToast(getApplicationContext(), e.getLocalizedMessage(), Toast.LENGTH_SHORT); } @Override public void onResponse(String response) { insertDialog.dismiss(); // {"Code":0,"Message":"成功","RequestId":"F84FF659-1D65-48E1-8C12-B253CEFCC4F8","Data":{"plate_num":"京Q52DR5","vehicle_type":"小型轿车","owner":"北京一度用车信息科技有限公司","address":"北京市海淀区中关村东路18号1号楼C日609-1","useCharacter":"葙赁","model":"北京牌BJ7000B3D5-BEV","vin":"LNBSCB3F4HD101254","engine_num":"AD33DH03040031","register_date":"20170525","issueDate":"00170525"}} String rtnCode = JsonUtils.getKeyResult(response, "rtnCode"); if ("01".equals(rtnCode)) { ToastUtil.showToast(getApplicationContext(), "认证信息提交成功,请等待审核", Toast.LENGTH_SHORT); finish(); startActivity(new Intent(CarOwnerCertificateActivity.this, CarOwnerCertificateListActivity.class)); } else { ToastUtil.showToast(getApplicationContext(), "认证信息提交超时,请重新提交", Toast.LENGTH_SHORT); } } }); } /* @Override public void onPermissionsGranted(int requestCode, List<String> perms) { } @Override public void onPermissionsDenied(int requestCode, List<String> perms) { } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this); } */ public void permissionTask() { String[] callPhone = new String[]{READ_MEDIA_IMAGES, CAMERA}; XXPermissions.with(this) // 申请单个权限 .permission(callPhone) .request(new OnPermissionCallback() { @Override public void onGranted(List<String> permissions, boolean all) { if (all) { opendCamera(); }else{ ToastUtil.showToast(getApplicationContext(), "获取部分权限成功,但部分权限未正常授予", Toast.LENGTH_SHORT); } } @Override public void onDenied(List<String> permissions, boolean never) { if (never) { // 如果是被永久拒绝就跳转到应用权限系统设置页面 XXPermissions.startPermissionActivity(CarOwnerCertificateActivity.this, permissions); } else { ToastUtil.showToast(getApplicationContext(), "获取权限失败", Toast.LENGTH_SHORT); } } }); } private void opendCamera() { PictureSelector.create(CarOwnerCertificateActivity.this) .openGallery(SelectMimeType.ofImage()) .setSelectorUIStyle(PictureUtlis.getStyle()) .setImageEngine(GlideEngine.createGlideEngine()) .setCompressEngine(new ImageFileCompressEngine()) //设置压缩 .setSandboxFileEngine(new MeSandboxFileEngine()) //设置相册沙盒目录拷贝引擎 .setCameraInterceptListener(new MeOnCameraInterceptListener()) .setSelectionMode(SelectModeConfig.SINGLE) .setMaxSelectNum(1) .isEmptyResultReturn(true) //支持未选择返回 .setImageSpanCount(4) .isPageStrategy(true) // 是否开启分页模式 .isDisplayCamera(true) //是否显示相机入口 .isPreviewFullScreenMode(true)//预览点击全屏效果 .isCameraRotateImage(true) //拍照是否纠正旋转图片 .isEmptyResultReturn(true)//支持未选择返回 .isWithSelectVideoImage(false)//是否支持视频图片同选 .isSelectZoomAnim(true)// 选择缩略图缩放效果 .isCameraAroundState(false)// 是否开启前置摄像头;系统相机 只支持部分机型 .isCameraRotateImage(true) //拍照是否纠正旋转图片 .isGif(false)// 是否显示gif文件 .isWebp(true)// 是否显示webp文件 .isBmp(true)//是否显示bmp文件 .isMaxSelectEnabledMask(true)// 达到最大选择数是否开启禁选蒙层 .isAutomaticTitleRecyclerTop(true) //点击相册标题是否快速回到第一项 .isFastSlidingSelect(true) //快速滑动选择 .isDirectReturnSingle(true)//PictureConfig.SINGLE模式下是否直接返回 .setQuerySortOrder(MediaStore.MediaColumns.DATE_MODIFIED + " DESC")//由远-近 MediaStore.MediaColumns.DATE_MODIFIED + " ASC" .isPreviewImage(true)//是否预览图片 .setFilterMinFileSize(1) //过滤最小文件 .forResult(REQUEST_CODE_CHOOSE); } private boolean isPermissionOK() { return EasyPermissions.hasPermissions(this, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.CAMERA ); } public static void actionStart(Context context){ context.startActivity(new Intent(context,CarOwnerCertificateActivity.class)); } public static void actionStart(Context context,boolean edit,String data){ Intent intent = new Intent(context, CarOwnerCertificateActivity.class); intent.putExtra("edit",edit); intent.putExtra("data",data); context.startActivity(intent); } public static void actionStart(Context context,boolean edit){ Intent intent = new Intent(context, CarOwnerCertificateActivity.class); intent.putExtra("edit",edit); context.startActivity(intent); } }