扫码登录,消息列表完成部分

dev
李桢 1 year ago
parent 4fed3a9ff5
commit fa940d8587
  1. 2
      app/build.gradle
  2. 56
      app/src/main/java/com/unionmed/unionmedtv/activity/MsgActivity.java
  3. 64
      app/src/main/java/com/unionmed/unionmedtv/adapter/MsgListAdapter.java
  4. 32
      app/src/main/java/com/unionmed/unionmedtv/api/GetCodeCallBackLsn.java
  5. 34
      app/src/main/java/com/unionmed/unionmedtv/api/QRCodeApi.java
  6. 3
      app/src/main/java/com/unionmed/unionmedtv/application/MyApplication.java
  7. 48
      app/src/main/java/com/unionmed/unionmedtv/bean/MyConversation.java
  8. 95
      app/src/main/java/com/unionmed/unionmedtv/bean/QRCodeBean.java
  9. 138
      app/src/main/java/com/unionmed/unionmedtv/bean/ScanBean.java
  10. 1
      app/src/main/java/com/unionmed/unionmedtv/login/activity/fragment/LoginAccountFragment.java
  11. 187
      app/src/main/java/com/unionmed/unionmedtv/login/activity/fragment/LoginPhoneFragment.java
  12. 3
      app/src/main/res/layout/activity_msg.xml
  13. 35
      app/src/main/res/layout/fragment_phone_login.xml
  14. 5
      app/src/main/res/layout/item_msg_list_layout.xml

@ -105,5 +105,7 @@ dependencies {
//IM 5.2.1.55
api project(path: ':imlib')
api project(path: ':calllib')
//https://github.com/yipianfengye/android-zxingLibrary
compile 'cn.yipianfengye.android:zxing-library:2.2'
compile 'com.github.lmiot:LoadDialog:V2.1'
}

@ -20,12 +20,22 @@ import androidx.viewpager.widget.ViewPager;
import androidx.viewpager2.adapter.FragmentStateAdapter;
import androidx.viewpager2.widget.ViewPager2;
import com.blankj.utilcode.util.LogUtils;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import com.hjq.http.EasyHttp;
import com.hjq.http.listener.OnHttpListener;
import com.unionmed.unionmedtv.R;
import com.unionmed.unionmedtv.adapter.MsgListAdapter;
import com.unionmed.unionmedtv.adapter.SmartFragmentStatePagerAdapter;
import com.unionmed.unionmedtv.api.GetImUserInfoApi;
import com.unionmed.unionmedtv.base.BaseActivity;
import com.unionmed.unionmedtv.bean.ImUserInfoBean;
import com.unionmed.unionmedtv.bean.MyConversation;
import com.unionmed.unionmedtv.fragment.MsgFragment;
import com.unionmed.unionmedtv.livedatas.LiveDataBus;
import com.unionmed.unionmedtv.network.ApiResponse;
import com.unionmed.unionmedtv.utils.CacheUtil;
import com.unionmed.unionmedtv.utils.Constants;
import com.unionmed.unionmedtv.utils.MsgItemLinearLayoutManager;
import com.unionmed.unionmedtv.utils.MyLinearLayoutManager;
@ -35,6 +45,7 @@ import com.unionmed.unionmedtv.widgets.TabViewPager;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import io.rong.imlib.RongIMClient;
@ -43,7 +54,7 @@ import io.rong.imlib.model.Conversation;
public class MsgActivity extends BaseActivity {
private RecyclerView recyclerView;
private MsgListAdapter msgListAdapter;
private List<String> list = new ArrayList<>();
private List<MyConversation> list = new ArrayList<>();
private FrameLayout frameLayout;
private TextView tv_title;
private int lastSelectedPosition = 0;
@ -65,28 +76,26 @@ public class MsgActivity extends BaseActivity {
tv_title = findViewById(R.id.tv_title);
MyLinearLayoutManager myLinearLayoutManager = new MyLinearLayoutManager(MsgActivity.this);
recyclerView.setLayoutManager(myLinearLayoutManager);
// Conversation.ConversationType[] conversationTypes = {Conversation.ConversationType.PRIVATE, Conversation.ConversationType.GROUP};
// RongIMClient.getInstance().getConversationListByPage(new RongIMClient.
// ResultCallback<List<Conversation>>() {
//
// @Override
// public void onSuccess(List<Conversation> conversations) {
// for (int i=0;i<conversations.size();i++){
// Log.i( "TAG", "onSuccess: ============="+conversations.get(i).getSenderUserId());
// }
// }
//
// @Override
// public void onError(RongIMClient.ErrorCode ErrorCode) {
//
// }
// },0, 20, conversationTypes);
list.add("通知");
list.add("赵医生");
list.add("陈医生");
list.add("福建医科大学附属医院1");
list.add("福建医科大学附属医院2");
list.add("福建医科大学附属医院3");
Conversation.ConversationType[] conversationTypes = {Conversation.ConversationType.PRIVATE, Conversation.ConversationType.GROUP};
RongIMClient.getInstance().getConversationListByPage(new RongIMClient.
ResultCallback<List<Conversation>>() {
@Override
public void onSuccess(List<Conversation> conversations) {
for (int i=0;i<conversations.size();i++){
MyConversation myConversation=new MyConversation();
myConversation.setConversation(conversations.get(i));
list.add(myConversation);
}
msgListAdapter.notifyDataSetChanged();
}
@Override
public void onError(RongIMClient.ErrorCode ErrorCode) {
}
}, 0, 20, conversationTypes);
msgListAdapter = new MsgListAdapter(R.layout.item_msg_list_layout, list, new OnChildClickListener() {
@Override
public <T> void onChildClick(View view, int position, T data) {
@ -104,7 +113,6 @@ public class MsgActivity extends BaseActivity {
lastSelectedPosition = integer;
msgListAdapter.setPostion(lastSelectedPosition);
msgListAdapter.notifyDataSetChanged();
tv_title.setText(list.get(integer));
LiveDataBus.get().with(Constants.MSG_REFRESH_ITEM).postValue("");
}
});

@ -8,16 +8,27 @@ import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.lifecycle.LifecycleOwner;
import com.blankj.utilcode.util.LogUtils;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import com.chad.library.adapter.base.BaseDelegateMultiAdapter;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.delegate.BaseMultiTypeDelegate;
import com.chad.library.adapter.base.viewholder.BaseViewHolder;
import com.hjq.http.EasyHttp;
import com.hjq.http.listener.OnHttpListener;
import com.unionmed.unionmedtv.R;
import com.unionmed.unionmedtv.activity.MsgActivity;
import com.unionmed.unionmedtv.activity.VideoCallActivity;
import com.unionmed.unionmedtv.api.GetImUserInfoApi;
import com.unionmed.unionmedtv.api.GetNearDoctorApi;
import com.unionmed.unionmedtv.bean.ImUserInfoBean;
import com.unionmed.unionmedtv.bean.MyConversation;
import com.unionmed.unionmedtv.livedatas.LiveDataBus;
import com.unionmed.unionmedtv.network.ApiResponse;
import com.unionmed.unionmedtv.utils.CacheUtil;
import com.unionmed.unionmedtv.utils.Constants;
import com.unionmed.unionmedtv.utils.OnChildClickListener;
@ -25,9 +36,11 @@ import org.jetbrains.annotations.NotNull;
import java.util.List;
public class MsgListAdapter extends BaseQuickAdapter<String, BaseViewHolder> {
import io.rong.imlib.model.Conversation;
public class MsgListAdapter extends BaseQuickAdapter<MyConversation, BaseViewHolder> {
private OnChildClickListener onChildClickListener;
private int postion=0;
private int postion = 0;
public int getPostion() {
return postion;
@ -37,29 +50,62 @@ public class MsgListAdapter extends BaseQuickAdapter<String, BaseViewHolder> {
this.postion = postion;
}
public MsgListAdapter(int layoutResId, @Nullable List<String> data, OnChildClickListener onChildClickListener) {
public MsgListAdapter(int layoutResId, @Nullable List<MyConversation> data, OnChildClickListener onChildClickListener) {
super(layoutResId, data);
this.onChildClickListener = onChildClickListener;
}
//获取用户信息
private void getUserInfoByServer(MyConversation conversation, TextView tv_title,ImageView iv_avatar) {
EasyHttp.post((LifecycleOwner) getContext())
.api(new GetImUserInfoApi(CacheUtil.getToken().getToken(), conversation.getConversation().getTargetId()))
.request(new OnHttpListener<ApiResponse<ApiResponse<ImUserInfoBean>>>() {
@Override
public void onSucceed(ApiResponse<ApiResponse<ImUserInfoBean>> result) {
conversation.setFirstLoad(false);
if (null != result.getData() && result.getData().isInnerRequestSucceed()
&& null != result.getData().getData()) {
conversation.setName(result.getData().getData().getName());
conversation.setImgPath(result.getData().getData().getHeadImg());
tv_title.setText(conversation.getName());
Glide.with(getContext())
.load(conversation.getImgPath())
.apply(new RequestOptions()
.placeholder(R.mipmap.rc_default_portrait)
.circleCrop()
)
.into(iv_avatar);
}
}
@Override
protected void convert(@NotNull BaseViewHolder vh, String s) {
public void onFail(Exception e) {
LogUtils.e("用户信息失败", "失败:" + e);
}
});
}
@Override
protected void convert(@NotNull BaseViewHolder vh, MyConversation conversation) {
TextView tv_title = vh.findView(R.id.tv_title);
tv_title.setText(s);
ConstraintLayout constraintlayout=vh.findView(R.id.constraintlayout);
if(vh.getLayoutPosition()==postion){
ImageView iv_avatar = vh.findView(R.id.iv_avatar);
ConstraintLayout constraintlayout = vh.findView(R.id.constraintlayout);
if (vh.getLayoutPosition() == postion) {
constraintlayout.setSelected(true);
constraintlayout.requestFocus();
}else {
} else {
constraintlayout.setSelected(false);
constraintlayout.clearFocus();
}
Log.i("TAG", "convert: ==================="+conversation.getConversation().getTargetId());
if(conversation.isFirstLoad()){
getUserInfoByServer(conversation, tv_title,iv_avatar);
}
vh.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
onChildClickListener.onChildClick(view, vh.getLayoutPosition(), s);
onChildClickListener.onChildClick(view, vh.getLayoutPosition(), conversation);
}
});

@ -0,0 +1,32 @@
package com.unionmed.unionmedtv.api;
import androidx.annotation.NonNull;
import com.hjq.http.config.IRequestApi;
import com.hjq.http.config.IRequestType;
import com.hjq.http.model.BodyType;
/**
* desc : 监听二维码生成方调用
*/
public final class GetCodeCallBackLsn implements IRequestApi, IRequestType {
@NonNull
@Override
public BodyType getBodyType() {
return BodyType.JSON;
}
@NonNull
@Override
public String getApi() {
return "/qrcode/callbackLsn";
}
private String code;
public GetCodeCallBackLsn(String code) {
this.code = code;
}
}

@ -0,0 +1,34 @@
package com.unionmed.unionmedtv.api;
import androidx.annotation.NonNull;
import com.google.gson.annotations.SerializedName;
import com.hjq.http.config.IRequestApi;
import com.hjq.http.config.IRequestType;
import com.hjq.http.model.BodyType;
/**
* 生成二维码
*/
public final class QRCodeApi implements IRequestApi, IRequestType {
@NonNull
@Override
public BodyType getBodyType() {
return BodyType.JSON;
}
@NonNull
@Override
public String getApi() {
return "/qrcode/gen";
}
private String businessType;
private String content;
public QRCodeApi(String businessType, String content) {
this.businessType = businessType;
this.content = content;
}
}

@ -24,6 +24,7 @@ import com.unionmed.unionmedtv.network.RequestServer;
import com.hjq.http.EasyConfig;
import com.tencent.bugly.crashreport.CrashReport;
import com.unionmed.unionmedtv.utils.Constants;
import com.uuzuche.lib_zxing.activity.ZXingLibrary;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
@ -66,6 +67,8 @@ public class MyApplication extends Application {
// 添加全局请求头
.addHeader("Content-Type", "application/json;charset=UTF-8")
.into();
//zxing初始化
ZXingLibrary.initDisplayOpinion(this);
setSSL_Rong();
//初始化im
initRong();

@ -0,0 +1,48 @@
package com.unionmed.unionmedtv.bean;
import android.graphics.drawable.Drawable;
import com.unionmed.unionmedtv.utils.Constants;
import io.rong.imlib.NativeObject;
import io.rong.imlib.model.Conversation;
public class MyConversation {
private boolean isFirstLoad = true;
private Conversation conversation;
private String name;
private String imgPath;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getImgPath() {
return imgPath;
}
public void setImgPath(String imgPath) {
this.imgPath = imgPath;
}
public Conversation getConversation() {
return conversation;
}
public void setConversation(Conversation conversation) {
this.conversation = conversation;
}
public boolean isFirstLoad() {
return isFirstLoad;
}
public void setFirstLoad(boolean firstLoad) {
isFirstLoad = firstLoad;
}
}

@ -0,0 +1,95 @@
package com.unionmed.unionmedtv.bean;
import android.os.Parcel;
import android.os.Parcelable;
public class QRCodeBean implements Parcelable {
/**
* code : umdqr://74d730a1a15a46dd986b2c6cf5a00ba6
* businessType : Login
* content : null
* client : null
* expireTime : 1688722719700
*/
private String code;
private String businessType;
private String content;
private String client;
private long expireTime;
protected QRCodeBean(Parcel in) {
code = in.readString();
businessType = in.readString();
expireTime = in.readLong();
}
public static final Creator<QRCodeBean> CREATOR = new Creator<QRCodeBean>() {
@Override
public QRCodeBean createFromParcel(Parcel in) {
return new QRCodeBean(in);
}
@Override
public QRCodeBean[] newArray(int size) {
return new QRCodeBean[size];
}
};
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getBusinessType() {
return businessType;
}
public void setBusinessType(String businessType) {
this.businessType = businessType;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getClient() {
return client;
}
public void setClient(String client) {
this.client = client;
}
public long getExpireTime() {
return expireTime;
}
public void setExpireTime(long expireTime) {
this.expireTime = expireTime;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel parcel, int i) {
parcel.writeString(code);
parcel.writeString(client);
parcel.writeString(content);
parcel.writeString(businessType);
parcel.writeLong(expireTime);
}
}

@ -0,0 +1,138 @@
package com.unionmed.unionmedtv.bean;
public class ScanBean {
/**
* id : 799099be2c674e1488f91c27f487910f
* code : 48a07e6e5cd94185979c2642a5bfcbad
* client : IPTV
* businessType : Login
* content : null
* expireTime : 1688975695454
* callbackStatus : 1
* callbackData : {"code":200,"data":{"code":200,"data":{"currentAddress":{"address":"福州市鼓楼区通湖路224号","addressKey":"53","createTime":"1665557084","detailAddress":"22","isCurrent":"1","isDefault":"0","isDelete":"0","mobile":"15905996666","name":"家里","pkey":"11","xzqh":"3501"},"faceAuthFlag":1,"headImg":"https://mobile.union-med.net/filesvr/appheadimg/appheadimg_1661845333829.jpg","identity_id":"360403199607140012","im_password":"123456","im_token":"aMoc5KmhZ1+8S3VyiUqBLhBwnob+UTom+DOpxf1Sa1fSlEGJBo5MrcAsY8U=","im_useraccount":"11","isAtuh":"1","isSetPsw":"0","mobile":"18860054210","name":"唐家钦","preRegion":{"filesvr":"http://47.118.51.167:8999/eleand/","fmsvr":"rtmp://10.120.224.5/livepkgr/","ip":"47.118.51.167","ipsvr":"https://mobile.union-med.net/app/appintegrate/v1.8","memo":"福州","msgip":"120.195.56.245","msgsvr":"http://120.195.56.245:3190/msg_server","oder_num":4,"pkey":"15","port":"8065","svalue":"rtmp://10.120.224.5/livepkgr/","type":"01"},"upkey":"11"},"errCode":200,"message":"成功"},"errCode":200,"message":"成功"}
* valid : 0
* createTime : null
* createBy : null
* updateTime : null
* updateBy : null
*/
private String id;
private String code;
private String client;
private String businessType;
private Object content;
private long expireTime;
private int callbackStatus;
private String callbackData;
private int valid;
private Object createTime;
private Object createBy;
private Object updateTime;
private Object updateBy;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getClient() {
return client;
}
public void setClient(String client) {
this.client = client;
}
public String getBusinessType() {
return businessType;
}
public void setBusinessType(String businessType) {
this.businessType = businessType;
}
public Object getContent() {
return content;
}
public void setContent(Object content) {
this.content = content;
}
public long getExpireTime() {
return expireTime;
}
public void setExpireTime(long expireTime) {
this.expireTime = expireTime;
}
public int getCallbackStatus() {
return callbackStatus;
}
public void setCallbackStatus(int callbackStatus) {
this.callbackStatus = callbackStatus;
}
public String getCallbackData() {
return callbackData;
}
public void setCallbackData(String callbackData) {
this.callbackData = callbackData;
}
public int getValid() {
return valid;
}
public void setValid(int valid) {
this.valid = valid;
}
public Object getCreateTime() {
return createTime;
}
public void setCreateTime(Object createTime) {
this.createTime = createTime;
}
public Object getCreateBy() {
return createBy;
}
public void setCreateBy(Object createBy) {
this.createBy = createBy;
}
public Object getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Object updateTime) {
this.updateTime = updateTime;
}
public Object getUpdateBy() {
return updateBy;
}
public void setUpdateBy(Object updateBy) {
this.updateBy = updateBy;
}
}

@ -190,6 +190,7 @@ public class LoginAccountFragment extends Fragment implements View.OnClickListen
}
public void getAreaLogn(String identity_id, String mobile, String name, String pkey) {
EasyConfig.getInstance().addHeader("token",CacheUtil.getToken().getToken());
EasyHttp.post(this)
.api(new AreaLoginApi(identity_id, mobile, name, pkey))
.request(new OnHttpListener<HttpData<ApiResponse<AreaLoginApi>>>() {

@ -1,38 +1,47 @@
package com.unionmed.unionmedtv.login.activity.fragment;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import androidx.fragment.app.Fragment;
import com.blankj.utilcode.util.ToastUtils;
import com.example.yideng.loaddialoglibrary.LmiotDialog;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.hjq.http.EasyConfig;
import com.hjq.http.EasyHttp;
import com.hjq.http.listener.OnHttpListener;
import com.lxj.xpopup.XPopup;
import com.unionmed.unionmedtv.R;
import com.unionmed.unionmedtv.activity.HomeActivity;
import com.unionmed.unionmedtv.activity.MainActivity;
import com.unionmed.unionmedtv.api.AreaLoginApi;
import com.unionmed.unionmedtv.api.GetCodeApi;
import com.unionmed.unionmedtv.api.GetNearDoctorApi;
import com.unionmed.unionmedtv.api.GetCodeCallBackLsn;
import com.unionmed.unionmedtv.api.MobileLoginApi;
import com.unionmed.unionmedtv.api.QRCodeApi;
import com.unionmed.unionmedtv.bean.QRCodeBean;
import com.unionmed.unionmedtv.bean.ScanBean;
import com.unionmed.unionmedtv.bean.TokenBean;
import com.unionmed.unionmedtv.dialog.TipDialog;
import com.unionmed.unionmedtv.login.activity.LoginActivity;
import com.unionmed.unionmedtv.network.ApiResponse;
import com.unionmed.unionmedtv.network.HttpData;
import com.unionmed.unionmedtv.utils.CacheUtil;
import com.uuzuche.lib_zxing.activity.CodeUtils;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
import me.jessyan.autosize.utils.LogUtils;
@ -51,6 +60,10 @@ public class LoginPhoneFragment extends Fragment implements View.OnClickListener
private EditText edit_code;
private TextView tv_getVerification;
private TextView tv_login;
private ImageView iv_qrCode;
private LinearLayout lin_code;
private ProgressBar progress;
private TextView tv_code_msg;
public LoginPhoneFragment() {
// Required empty public constructor
@ -80,6 +93,7 @@ public class LoginPhoneFragment extends Fragment implements View.OnClickListener
if (mRootView == null) {
mRootView = inflater.inflate(R.layout.fragment_phone_login, container, false);
initView(mRootView);
GenerateQRcode();
}
return mRootView;
}
@ -94,6 +108,12 @@ public class LoginPhoneFragment extends Fragment implements View.OnClickListener
tv_getVerification.setOnClickListener(this);
tv_login = view.findViewById(R.id.tv_login);
tv_login.setOnClickListener(this);
iv_qrCode = view.findViewById(R.id.iv_qrCode);
iv_qrCode.setOnClickListener(this);
lin_code = view.findViewById(R.id.lin_code);
lin_code.setOnClickListener(this);
progress = view.findViewById(R.id.progress);
tv_code_msg = view.findViewById(R.id.tv_code_msg);
}
@Override
@ -119,6 +139,145 @@ public class LoginPhoneFragment extends Fragment implements View.OnClickListener
}
MobileLogin(edit_phone.getText().toString(), edit_code.getText().toString());
} else if (view.getId() == R.id.lin_code || view.getId() == R.id.iv_qrCode) {
if(timer!=null){
timer.cancel();
}
GenerateQRcode();
}
}
/**
* 生成二维码
*/
public void GenerateQRcode() {
lin_code.setVisibility(View.VISIBLE);
progress.setVisibility(View.VISIBLE);
tv_code_msg.setText("二维码生成中");
EasyHttp.post(getActivity())
.api(new QRCodeApi("Login", ""))
.request(new OnHttpListener<HttpData<ApiResponse<QRCodeBean>>>() {
@Override
public void onSucceed(HttpData<ApiResponse<QRCodeBean>> apiResponseHttpData) {
if (apiResponseHttpData.isRequestSucceed()) {
if (apiResponseHttpData.getData().isInnerRequestSucceed()) {
lin_code.setVisibility(View.GONE);
iv_qrCode.setVisibility(View.VISIBLE);
Bitmap mBitmap = CodeUtils.createImage(apiResponseHttpData.getData().getData().getCode(), 400, 400, null);
iv_qrCode.setImageBitmap(mBitmap);
callbackLsn(apiResponseHttpData.getData().getData().getCode());
} else {
lin_code.setVisibility(View.VISIBLE);
progress.setVisibility(View.GONE);
tv_code_msg.setText("生成二维码失败,点击刷新");
iv_qrCode.setVisibility(View.INVISIBLE);
}
} else {
lin_code.setVisibility(View.VISIBLE);
progress.setVisibility(View.GONE);
tv_code_msg.setText("生成二维码失败,点击刷新");
iv_qrCode.setVisibility(View.INVISIBLE);
}
}
@Override
public void onFail(Exception e) {
lin_code.setVisibility(View.VISIBLE);
progress.setVisibility(View.GONE);
tv_code_msg.setText("生成二维码失败,点击刷新");
iv_qrCode.setVisibility(View.INVISIBLE);
ToastUtils.showLong("获取二维码失败");
LogUtils.e("失败:" + e);
}
});
}
private Timer timer;
//监听二维码 定时请求,监听二维码是否已回调(是否已绑定数据)
public void callbackLsn(String code) {
timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
EasyHttp.post(getActivity())
.api(new GetCodeCallBackLsn(code))
.request(new OnHttpListener<HttpData<ApiResponse<ScanBean>>>() {
@Override
public void onSucceed(HttpData<ApiResponse<ScanBean>> apiResponseHttpData) {
if (apiResponseHttpData.isRequestSucceed()) {
if (apiResponseHttpData.getData().isInnerRequestSucceed()) {
TokenBean tokenBean = new Gson()
.fromJson(apiResponseHttpData.getData().getData().getCallbackData().replace("\\", ""), TokenBean.class);
CacheUtil.setToken(tokenBean);
CacheUtil.setAccountNumber(tokenBean.getMobile());
CacheUtil.saveImUserAccount(tokenBean.getIm_useraccount());
CacheUtil.saveImUserPwd(tokenBean.getIm_password());
CacheUtil.saveImTokenRong(tokenBean.getIm_token());
CacheUtil.savePkey(tokenBean.getPreRegion().getPkey());
CacheUtil.saveipsvr(tokenBean.getPreRegion().getIpsvr());
CacheUtil.setIpAddress(tokenBean.getPreRegion());
if (tokenBean.getIsAtuh().equals("1")
&& tokenBean.getFaceAuthFlag() == 1) {
getAreaLogn(tokenBean.getIdentity_id(),
tokenBean.getMobile(),
tokenBean.getName(),
tokenBean.getPreRegion().getPkey());
} else {
LmiotDialog.hidden();
CacheUtil.setToken(null);
new XPopup.Builder(getActivity()).isRequestFocus(true)
.asCustom(new TipDialog(getActivity(), "请先前往手机app进行实名认证,认证成功后才可登录", new TipDialog.DialogClick() {
@Override
public void cancel() {
}
@Override
public void confirm() {
}
})).show();
}
if (timer != null) {
timer.cancel();
}
} else if (apiResponseHttpData.getData().getCode() == 500) {
if (timer != null) {
timer.cancel();
}
lin_code.setVisibility(View.VISIBLE);
progress.setVisibility(View.GONE);
iv_qrCode.setVisibility(View.INVISIBLE);
tv_code_msg.setText("二维码失效,点击刷新");
ToastUtils.showLong("二维码失效");
}
} else {
if (timer != null) {
timer.cancel();
}
lin_code.setVisibility(View.VISIBLE);
progress.setVisibility(View.INVISIBLE);
tv_code_msg.setText("二维码失效,点击刷新");
ToastUtils.showLong("二维码失效");
}
}
@Override
public void onFail(Exception e) {
}
});
}
}, 0, 5000); // 设置定时任务的时间间隔为 5 秒
}
@Override
public void onDestroy() {
super.onDestroy();
if (timer != null) {
timer.cancel();
}
}
@ -161,7 +320,7 @@ public class LoginPhoneFragment extends Fragment implements View.OnClickListener
//手机号登录
public void MobileLogin(String mobile, String code) {
LmiotDialog.show(getActivity(),"登录中..");
LmiotDialog.show(getActivity(), "登录中..");
EasyHttp.post(getActivity())
.api(new MobileLoginApi(mobile, code))
.request(new OnHttpListener<HttpData<ApiResponse<TokenBean>>>() {
@ -202,7 +361,6 @@ public class LoginPhoneFragment extends Fragment implements View.OnClickListener
}
})).show();
}
} else {
LmiotDialog.hidden();
ToastUtils.showLong(apiResponseHttpData.getData().getMessage());
@ -222,19 +380,26 @@ public class LoginPhoneFragment extends Fragment implements View.OnClickListener
});
}
public void getAreaLogn(String identity_id, String mobile, String name, String pkey) {
EasyConfig.getInstance().addHeader("token", CacheUtil.getToken().getToken());
EasyHttp.post(this)
.api(new AreaLoginApi(identity_id, mobile, name, pkey))
.request(new OnHttpListener<HttpData<AreaLoginApi>>() {
.request(new OnHttpListener<HttpData<ApiResponse<AreaLoginApi>>>() {
@Override
public void onSucceed(HttpData<AreaLoginApi> personInfoBeanHttpData) {
public void onSucceed(HttpData<ApiResponse<AreaLoginApi>> personInfoBeanHttpData) {
LmiotDialog.hidden();
if (personInfoBeanHttpData.isRequestSucceed()) {
CacheUtil.saveUserToken(personInfoBeanHttpData.getData().getUserToken());
if (personInfoBeanHttpData.getData().isInnerRequestSucceed()) {
CacheUtil.saveUserToken(personInfoBeanHttpData.getData().getData().getUserToken());
HomeActivity.StartActivity(getActivity());
getActivity().finish();
} else {
CacheUtil.setToken(null);
ToastUtils.showLong(personInfoBeanHttpData.getData().getMessage());
}
} else {
CacheUtil.setToken(null);
ToastUtils.showLong(personInfoBeanHttpData.getMessage());
}
}

@ -2,6 +2,7 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="horizontal">
<LinearLayout
@ -36,7 +37,7 @@
android:layout_width="match_parent"
android:layout_height="83dp"
android:gravity="center"
android:text="通知"
tools:text="通知"
android:textColor="@color/white_f1f1f1"
android:textSize="21sp" />

@ -1,7 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
tools:ignore="MissingPrefix"
xmlns:app="http://schemas.android.com/apk/res-auto">
<RelativeLayout
android:layout_width="match_parent"
@ -87,11 +90,39 @@
</LinearLayout>
<LinearLayout
android:id="@+id/lin_code"
style="@style/FocusStyle"
android:layout_width="206dp"
android:layout_height="206dp"
android:orientation="vertical"
android:layout_alignTop="@+id/lly_input"
android:layout_marginLeft="214dp"
android:layout_toRightOf="@+id/lly_input"
android:background="@drawable/edit_phone_select"
android:gravity="center"
>
<ProgressBar
android:id="@+id/progress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/tv_code_msg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_10"
android:text="二维码生成中"
android:textSize="14sp"
android:textColor="@color/white"/>
</LinearLayout>
<ImageView
android:id="@+id/iv_qrCode"
android:visibility="gone"
android:layout_width="206dp"
android:layout_height="206dp"
android:padding="5dp"
style="@style/FocusStyle"
android:background="@drawable/edit_phone_select"
android:layout_alignTop="@+id/lly_input"
android:layout_marginLeft="214dp"
android:layout_toRightOf="@+id/lly_input"

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
style="@style/FocusStyle"
android:id="@+id/constraintlayout"
android:layout_width="match_parent"
@ -12,7 +13,7 @@
android:layout_width="36dp"
android:layout_height="36dp"
android:layout_marginLeft="47dp"
android:src="@color/design_default_color_background"
tools:src="@color/design_default_color_background"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
@ -24,7 +25,7 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="12dp"
android:text="通知"
tools:text="通知"
android:textColor="@color/white_f1f1f1"
android:textSize="21sp"
app:layout_constraintBottom_toBottomOf="parent"

Loading…
Cancel
Save