Commit 864652a7 authored by jianglx's avatar jianglx

1.5.7 添加图形校验码

parent ba77285d
...@@ -8,8 +8,8 @@ android { ...@@ -8,8 +8,8 @@ android {
minSdkVersion rootProject.ext.minSdkVersion minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion
flavorDimensions "default" flavorDimensions "default"
versionCode 156 versionCode 157
versionName "1.5.6" versionName "1.5.7"
multiDexEnabled true multiDexEnabled true
......
...@@ -9,7 +9,6 @@ import android.content.Context; ...@@ -9,7 +9,6 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.content.ServiceConnection; import android.content.ServiceConnection;
import android.graphics.Bitmap;
import android.location.LocationManager; import android.location.LocationManager;
import android.net.ConnectivityManager; import android.net.ConnectivityManager;
import android.net.Uri; import android.net.Uri;
...@@ -25,7 +24,6 @@ import android.text.TextUtils; ...@@ -25,7 +24,6 @@ import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.view.View; import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
...@@ -33,8 +31,6 @@ import android.widget.Toast; ...@@ -33,8 +31,6 @@ import android.widget.Toast;
import com.alibaba.android.arouter.launcher.ARouter; import com.alibaba.android.arouter.launcher.ARouter;
import com.base.utils.ui.image.round.RoundImageView; import com.base.utils.ui.image.round.RoundImageView;
import com.bumptech.glide.Glide; import com.bumptech.glide.Glide;
import com.bumptech.glide.request.target.SimpleTarget;
import com.bumptech.glide.request.transition.Transition;
import com.frame.base.url.Constance; import com.frame.base.url.Constance;
import com.frame.base.url.ImageUrl; import com.frame.base.url.ImageUrl;
import com.frame.rv.config.RvFrameConfig; import com.frame.rv.config.RvFrameConfig;
...@@ -85,7 +81,6 @@ import com.rv.plugin.calendar.bean.PreRentDaysBean; ...@@ -85,7 +81,6 @@ import com.rv.plugin.calendar.bean.PreRentDaysBean;
import com.rv.rvmine.MineFragment; import com.rv.rvmine.MineFragment;
import com.rv.share.WebViewActivity; import com.rv.share.WebViewActivity;
import com.rv.share.utils.TransformationUtils; import com.rv.share.utils.TransformationUtils;
import com.rv.share.utils.TransformationUtils10;
import com.rv.share.view.PromotionDialog; import com.rv.share.view.PromotionDialog;
import com.rv.tourism.R2; import com.rv.tourism.R2;
import com.rv.tourism.TourismFragment; import com.rv.tourism.TourismFragment;
...@@ -199,6 +194,7 @@ public class MainActivity extends BaseActivity<CommonPresenter> implements DownL ...@@ -199,6 +194,7 @@ public class MainActivity extends BaseActivity<CommonPresenter> implements DownL
ListenerManager.getInstance().addChatMessageListener(this); ListenerManager.getInstance().addChatMessageListener(this);
// AppUtils.setBadger(ImSetting.getContext(), ChatMessageServiceImp.getInstance(ImSetting.getContext()).getUnReadMsg()); // AppUtils.setBadger(ImSetting.getContext(), ChatMessageServiceImp.getInstance(ImSetting.getContext()).getUnReadMsg());
GpsManager.getInstance(this).rigister(); GpsManager.getInstance(this).rigister();
} }
@Override @Override
......
...@@ -194,4 +194,14 @@ public class ApiConfig { ...@@ -194,4 +194,14 @@ public class ApiConfig {
* vr展示 * vr展示
*/ */
public static String HTTP_URL_VIEW_VRSHOW = RvFrameConfig.HOST_H5_DETAIL + "/h5/appHtml/view/vrShow.html"; public static String HTTP_URL_VIEW_VRSHOW = RvFrameConfig.HOST_H5_DETAIL + "/h5/appHtml/view/vrShow.html";
/*****
* 获取图形验证码
*/
public static String HTTP_URL_PIC_VERIFY = RvFrameConfig.HOST + "/api/universal/captcha/app/unauth/clickWord?phone=%s" ;
/******
* 校验图形验证码
*/
public static String HTTP_URL_CLICK_VERIFY = RvFrameConfig.HOST + "/api/universal/captcha/app/unauth/verify?phone=%s&pointList=%s" ;
} }
...@@ -16,6 +16,7 @@ import android.widget.CheckBox; ...@@ -16,6 +16,7 @@ import android.widget.CheckBox;
import android.widget.EditText; import android.widget.EditText;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast;
import com.alibaba.android.arouter.launcher.ARouter; import com.alibaba.android.arouter.launcher.ARouter;
import com.frame.base.url.Constance; import com.frame.base.url.Constance;
...@@ -34,8 +35,11 @@ import com.rv.home.rv.module.ApiConfig; ...@@ -34,8 +35,11 @@ import com.rv.home.rv.module.ApiConfig;
import com.rv.home.rv.module.basic.BaseLoginActivity; import com.rv.home.rv.module.basic.BaseLoginActivity;
import com.rv.home.rv.module.ui.login.bean.RegisteredBean; import com.rv.home.rv.module.ui.login.bean.RegisteredBean;
import com.rv.home.rv.module.ui.login.bean.SendCodeBean; import com.rv.home.rv.module.ui.login.bean.SendCodeBean;
import com.rv.home.rv.module.ui.login.bean.VerifyDataBean;
import com.rv.home.rv.module.ui.login.bean.VerifyResultBean;
import com.umeng.socialize.bean.SHARE_MEDIA; import com.umeng.socialize.bean.SHARE_MEDIA;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.Map; import java.util.Map;
...@@ -122,7 +126,8 @@ public class RegisteredActivity extends BaseLoginActivity<CommonPresenter> { ...@@ -122,7 +126,8 @@ public class RegisteredActivity extends BaseLoginActivity<CommonPresenter> {
editListener(etPwd); editListener(etPwd);
editListener(etInviteCode); editListener(etInviteCode);
initData(); initData();
privacyAgree(); if (mType == 0)
privacyAgree();
} }
...@@ -204,6 +209,8 @@ public class RegisteredActivity extends BaseLoginActivity<CommonPresenter> { ...@@ -204,6 +209,8 @@ public class RegisteredActivity extends BaseLoginActivity<CommonPresenter> {
((TextView) view).setHighlightColor(getResources().getColor(android.R.color.transparent)); ((TextView) view).setHighlightColor(getResources().getColor(android.R.color.transparent));
} }
private VerifyDialog.Builder builder;
@Override @Override
public void onShowResult(int requestType, BaseBean result) { public void onShowResult(int requestType, BaseBean result) {
switch (requestType) { switch (requestType) {
...@@ -220,9 +227,43 @@ public class RegisteredActivity extends BaseLoginActivity<CommonPresenter> { ...@@ -220,9 +227,43 @@ public class RegisteredActivity extends BaseLoginActivity<CommonPresenter> {
case 10: case 10:
setDataUser((BeanUserInfo) result); setDataUser((BeanUserInfo) result);
break; break;
case 11:
VerifyDataBean bean = (VerifyDataBean) result;
if (bean != null && bean.isRel() && bean.getData() != null) {
if (builder == null && !isVerifyCancel) {
builder = new VerifyDialog.Builder(this, bean.getData());
builder.setListener(verifyListener);
builder.create().show();
} else {
builder.change(bean.getData());
}
}
break;
case 12:
VerifyResultBean resultBean = (VerifyResultBean) result;
if (resultBean != null && resultBean.isData()) {
if (builder != null) {
builder.dismiss();
builder = null;
}
showToast("验证成功");
sendCode();
} else {
showToast("点击错误,将为您重新生成图片");
sendVerifyCode();
}
break;
default:
break;
} }
} }
@Override
public void onShowError(String errorMsg, int errorType) {
super.onShowError(errorMsg, errorType);
Toast.makeText(this, errorMsg, Toast.LENGTH_LONG).show();
}
@OnClick({R2.id.iv_clear_phone, R2.id.iv_clear_code, R2.id.tv_get_code, R2.id.iv_clear_pwd, R2.id.tv_agreement, R2.id.tv_registered}) @OnClick({R2.id.iv_clear_phone, R2.id.iv_clear_code, R2.id.tv_get_code, R2.id.iv_clear_pwd, R2.id.tv_agreement, R2.id.tv_registered})
public void onViewClicked(View view) { public void onViewClicked(View view) {
if (view.getId() == R.id.iv_clear_phone) { if (view.getId() == R.id.iv_clear_phone) {
...@@ -239,8 +280,12 @@ public class RegisteredActivity extends BaseLoginActivity<CommonPresenter> { ...@@ -239,8 +280,12 @@ public class RegisteredActivity extends BaseLoginActivity<CommonPresenter> {
showToast("请输入正确手机号"); showToast("请输入正确手机号");
return; return;
} }
isVerifyCancel = false;
sendCode(); if (mType == 0) {
sendVerifyCode();
} else {
sendCode();
}
} else if (view.getId() == R.id.iv_clear_code) { } else if (view.getId() == R.id.iv_clear_code) {
pwdShow = !pwdShow; pwdShow = !pwdShow;
ivClearPwd.setSelected(pwdShow); ivClearPwd.setSelected(pwdShow);
...@@ -285,6 +330,38 @@ public class RegisteredActivity extends BaseLoginActivity<CommonPresenter> { ...@@ -285,6 +330,38 @@ public class RegisteredActivity extends BaseLoginActivity<CommonPresenter> {
} }
} }
private void sendVerifyCode() {
mPresenter.getData(11, String.format(ApiConfig.HTTP_URL_PIC_VERIFY, new String[]{getPhone()}), VerifyDataBean.class, true);
}
private void verifyCode(int x, int y) {
//
// Point point = new Point(x, y);
// List<Point> pointList = new ArrayList<>();
// pointList.add(point);
//// String pointListString = null;
//// try {
//// pointListString = URLEncoder.encode(new Gson().toJson(pointList),"UTF-8") ;
//// } catch (UnsupportedEncodingException e) {
//// e.printStackTrace();
//// }
//
//// JsonArray array = new JsonArray();
//// array.addAll(pointList);
// String pointListString = JSONArray.toJSONString(pointList);
// Map<String, String> params = new HashMap<>();
// params.put("phone", getPhone());
// params.put("pointList", dealString(x,y));
dealString(x, y);
mPresenter.getData(12, String.format(ApiConfig.HTTP_URL_CLICK_VERIFY, new String[]{getPhone(), pointList}), VerifyResultBean.class, true);
}
private String pointList;
private void dealString(int x, int y) {
pointList = "%5B%7B%22x%22:" + x + ",%22y%22:" + y + "%7D%5D";
}
@Override @Override
public void onDestroy() { public void onDestroy() {
...@@ -300,6 +377,7 @@ public class RegisteredActivity extends BaseLoginActivity<CommonPresenter> { ...@@ -300,6 +377,7 @@ public class RegisteredActivity extends BaseLoginActivity<CommonPresenter> {
map.put("username", getPhone()); map.put("username", getPhone());
if (mType == 0) { if (mType == 0) {
map.put("type", 0); map.put("type", 0);
map.put("pointList", pointList);
} else { } else {
map.put("type", 4); map.put("type", 4);
} }
...@@ -480,4 +558,25 @@ public class RegisteredActivity extends BaseLoginActivity<CommonPresenter> { ...@@ -480,4 +558,25 @@ public class RegisteredActivity extends BaseLoginActivity<CommonPresenter> {
// TODO: add setContentView(...) invocation // TODO: add setContentView(...) invocation
ButterKnife.bind(this); ButterKnife.bind(this);
} }
private boolean isVerifyCancel = false;
private boolean isVerifySucess = false;
private VerifyDialog.VerifyListener verifyListener = new VerifyDialog.VerifyListener() {
@Override
public void cancel() {
isVerifyCancel = true;
builder = null;
}
@Override
public void verify(int x, int y) {
verifyCode(x, y);
}
@Override
public void freshen() {
if (!isVerifyCancel)
sendVerifyCode();
}
};
} }
package com.rv.home.rv.module.ui.login;
import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.Typeface;
import android.support.annotation.NonNull;
import android.text.SpannableString;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.TextUtils;
import android.text.style.ForegroundColorSpan;
import android.text.style.TextAppearanceSpan;
import android.util.Base64;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.ruiwenliu.wrapper.dialog.BaseDialog;
import com.ruiwenliu.wrapper.util.glide.GlideOptions;
import com.rv.home.R;
import com.rv.home.rv.module.ui.login.bean.VerifyDataBean;
import com.rv.home.rv.module.ui.login.view.VerifyImageView;
import com.rv.home.rv.until.TransformationUtils;
public class VerifyDialog extends BaseDialog {
public VerifyDialog(@NonNull Context context) {
super(context);
}
public VerifyDialog(@NonNull Context context, int themeResId) {
super(context, themeResId);
setDialogParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.CENTER);
}
@Override
public int getViewLayout() {
return R.layout.dialog_verfy;
}
public static class Builder {
private Context mContext;
VerifyImageView verifyView;
LinearLayout llControl;
VerifyListener listener;
TextView tvHint;
VerifyDataBean.VerifyData verifyData;
VerifyDialog dialog;
public Builder(Context context, VerifyDataBean.VerifyData verifyData) {
this.mContext = context;
this.verifyData = verifyData;
}
public void setListener(VerifyListener listener) {
this.listener = listener;
}
public void change(VerifyDataBean.VerifyData verifyData) {
this.verifyData = verifyData;
showPic();
}
public void dismiss() {
if (dialog != null) {
dialog.dismiss();
}
}
/**
* 创建定制的对话框
*/
@SuppressLint("ClickableViewAccessibility")
public VerifyDialog create() {
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
dialog = new VerifyDialog(mContext, R.style.DialogActivityTheme);
// 获取对话框的布局
View layout = inflater.inflate(R.layout.dialog_verfy, null);
// 为对话框添加布局和设置大小
dialog.addContentView(layout, new WindowManager.LayoutParams(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT));
this.verifyView = layout.findViewById(R.id.verfyview);
this.verifyView.setVerifyListenter(verifyListenter);
this.llControl = layout.findViewById(R.id.ll_control);
this.tvHint = layout.findViewById(R.id.tv_hint);
showPic();
layout.findViewById(R.id.ll_change_pic).setOnClickListener(v -> {
if (listener != null) {
listener.freshen();
}
});
layout.findViewById(R.id.tv_cancel).setOnClickListener(v -> {
if (listener != null) {
listener.cancel();
}
dialog.dismiss();
});
//默认不能点击对话框其他区域退出 和按返回键退出
dialog.setCancelable(true);
dialog.setContentView(layout);
return dialog;
}
public void showPic() {
if (this.tvHint != null && this.verifyData != null && this.verifyData.getWordList() != null && this.verifyData.getWordList().size() > 0) {
SpannableString spannableString = new SpannableString("请点击图片中的 “" + this.verifyData.getWordList().get(0) + "” 字");
spannableString.setSpan(new ForegroundColorSpan(Color.parseColor("#f64747")), 9,10, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
this.tvHint.setText(spannableString);
}
Bitmap bitmap = stringToBitmap(this.verifyData.getOriginalImageBase64());
GlideOptions options = GlideOptions.placeholderOf(com.ruiwenliu.wrapper.R.drawable.glide_icon_placeholder).
error(com.ruiwenliu.wrapper.R.drawable.glide_icon_error);
Glide.with(mContext)
.asBitmap()
.load(bitmap)
.apply(options)
.into(new TransformationUtils(this.verifyView, transforationListener));
}
private float sy = 1.0f;
public VerifyImageView.TouchVerifyListenter verifyListenter = (x, y) -> {
if (listener != null) {
float relX = x / sy;
float relY = y / sy;
listener.verify((int) relX, (int) relY);
}
};
public Bitmap stringToBitmap(String base64Data) {
if (TextUtils.isEmpty(base64Data)) return null;
byte[] bytes = Base64.decode(base64Data, Base64.DEFAULT);
return BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
}
private TransformationUtils.TransforationListener transforationListener = s -> sy = s;
}
public interface VerifyListener {
void cancel();
void verify(int x, int y);
void freshen();
}
}
package com.rv.home.rv.module.ui.login.bean;
import com.ruiwenliu.wrapper.base.BaseBean;
import java.util.List;
public class VerifyDataBean extends BaseBean{
private VerifyData data;
private boolean rel ;
public VerifyData getData() {
return data;
}
public void setData(VerifyData data) {
this.data = data;
}
public boolean isRel() {
return rel;
}
public void setRel(boolean rel) {
this.rel = rel;
}
public class VerifyData{
private String originalImageBase64;
private List<String> wordList;
private double width;
private double height ;
public String getOriginalImageBase64() {
return originalImageBase64;
}
public void setOriginalImageBase64(String originalImageBase64) {
this.originalImageBase64 = originalImageBase64;
}
public List<String> getWordList() {
return wordList;
}
public void setWordList(List<String> wordList) {
this.wordList = wordList;
}
public double getWidth() {
return width;
}
public void setWidth(double width) {
this.width = width;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
}
}
package com.rv.home.rv.module.ui.login.bean;
import com.ruiwenliu.wrapper.base.BaseBean;
public class VerifyResultBean extends BaseBean {
private boolean data;
private boolean rel ;
public boolean isData() {
return data;
}
public void setData(boolean data) {
this.data = data;
}
public boolean isRel() {
return rel;
}
public void setRel(boolean rel) {
this.rel = rel;
}
}
package com.rv.home.rv.module.ui.login.view;
import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
public class VerifyImageView extends android.support.v7.widget.AppCompatImageView {
private TouchVerifyListenter verifyListenter;
public VerifyImageView(Context context) {
super(context);
}
public VerifyImageView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public void setVerifyListenter(TouchVerifyListenter listenter) {
this.verifyListenter = listenter;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
super.onTouchEvent(event);
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
int x = (int) event.getX();
int y = (int) event.getY();
if (verifyListenter != null) {
verifyListenter.verify(x, y);
}
break;
}
return true;
}
public interface TouchVerifyListenter {
void verify(int x, int y);
}
}
package com.rv.home.rv.until;
import android.graphics.Bitmap;
import android.view.ViewGroup;
import android.widget.ImageView;
import com.bumptech.glide.request.target.ImageViewTarget;
public class TransformationUtils extends ImageViewTarget<Bitmap> {
private ImageView target;
private TransforationListener listener;
public TransformationUtils(ImageView target, TransforationListener listener) {
super(target);
this.target = target;
this.listener = listener;
}
@Override
protected void setResource(Bitmap resource) {
target.setImageBitmap(resource);
if (resource == null) return;
//获取原图的宽高
int width = resource.getWidth();
int height = resource.getHeight();
//获取imageView的宽
int imageViewWidth = target.getWidth();
//计算缩放比例
float sy = (float) (imageViewWidth * 0.1) / (float) (width * 0.1);
if (listener != null) listener.getSy(sy);
//计算图片等比例放大后的高
int imageViewHeight = (int) (height * sy);
ViewGroup.LayoutParams params = target.getLayoutParams();
params.height = imageViewHeight;
target.setLayoutParams(params);
}
public interface TransforationListener {
void getSy(float sy);
}
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="8dp" />
<solid android:color="@color/white" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
android:paddingLeft="@dimen/size_20"
android:paddingRight="@dimen/size_20">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardCornerRadius="@dimen/size_5">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<!--<com.rv.home.rv.module.ui.login.view.TouchVerifyView-->
<!--android:id="@+id/verfyview"-->
<!--android:layout_width="match_parent"-->
<!--android:layout_height="wrap_content" />-->
<com.rv.home.rv.module.ui.login.view.VerifyImageView
android:id="@+id/verfyview"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/tv_hint"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_40"
android:background="@color/white"
android:gravity="center"
android:textColor="@color/textGray"
android:textSize="@dimen/sp_14" />
</LinearLayout>
</android.support.v7.widget.CardView>
<LinearLayout
android:id="@+id/ll_control"
android:layout_width="match_parent"
android:layout_height="43dp"
android:layout_marginTop="@dimen/dp_10"
android:background="@drawable/shape_rv_button_white"
android:gravity="center_vertical"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/ll_change_pic"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:orientation="horizontal">
<ImageView
android:layout_width="@dimen/size_25"
android:layout_height="@dimen/size_25"
android:src="@drawable/icon_change_verify_code" />
<TextView
android:id="@+id/tv_change"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/size_3"
android:gravity="center"
android:text="换张图片"
android:textColor="@color/colorMain"
android:textSize="@dimen/sp_16" />
</LinearLayout>
<View
android:layout_width="1px"
android:layout_height="match_parent"
android:layout_marginTop="@dimen/size_5"
android:layout_marginBottom="@dimen/size_5"
android:background="@color/colorLine" />
<TextView
android:id="@+id/tv_cancel"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:drawablePadding="@dimen/dp_10"
android:gravity="center"
android:text="取消"
android:textColor="@color/colorMain"
android:textSize="@dimen/sp_16" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
...@@ -179,6 +179,7 @@ public class BindPhoneThirdFragment extends BaseFragment<CommonPresenter> { ...@@ -179,6 +179,7 @@ public class BindPhoneThirdFragment extends BaseFragment<CommonPresenter> {
private void sendCode() { private void sendCode() {
Map<String, Object> map = new LinkedHashMap<>(); Map<String, Object> map = new LinkedHashMap<>();
map.put("username", getPhone()); map.put("username", getPhone());
map.put("type", 5);
mPresenter.postData(0, ApiConfig.HTTP_URL_SEND_CODE, SendCodeBean.class, map, true); mPresenter.postData(0, ApiConfig.HTTP_URL_SEND_CODE, SendCodeBean.class, map, true);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment