package com.tejia.lijin.wxapi;
|
|
|
import android.content.DialogInterface;
|
import android.content.Intent;
|
import android.content.SharedPreferences;
|
import android.graphics.Color;
|
import android.os.Build;
|
import android.os.Bundle;
|
import android.view.View;
|
import android.view.Window;
|
import android.view.WindowManager;
|
import android.widget.Toast;
|
|
import com.google.gson.Gson;
|
import com.google.gson.GsonBuilder;
|
import com.google.gson.reflect.TypeToken;
|
import com.tejia.lijin.app.BasicTextHttpResponseHandler;
|
import com.tejia.lijin.app.ShoppingApi;
|
import com.tejia.lijin.app.ShoppingApplication;
|
import com.tejia.lijin.app.entity.UserInfo;
|
import com.tejia.lijin.app.ui.BaseActivity;
|
import com.tejia.lijin.app.ui.dialog.AddZFBInfoDialog2;
|
import com.tejia.lijin.app.ui.mine.LoginSelectActivity;
|
import com.tejia.lijin.app.util.ui.dialog.DialogUtil;
|
import com.tejia.lijin.app.util.user.AccountBindManager;
|
import com.tejia.lijin.app.util.user.LoginManager;
|
import com.tejia.lijin.app.util.user.UserUtil;
|
import com.tencent.mm.opensdk.modelbase.BaseReq;
|
import com.tencent.mm.opensdk.modelbase.BaseResp;
|
import com.tencent.mm.opensdk.modelmsg.SendAuth;
|
import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler;
|
import com.xiaomi.mipush.sdk.MiPushClient;
|
|
import org.apache.http.Header;
|
import org.json.JSONObject;
|
|
import androidx.annotation.Nullable;
|
|
|
public class WXEntryActivity extends BaseActivity implements IWXAPIEventHandler {
|
|
private static final int RETURN_MSG_TYPE_LOGIN = 1;
|
private static final int RETURN_MSG_TYPE_SHARE = 2;
|
private static final int RETURN_MSG_TYPE_XCX = 19;
|
|
|
@Override
|
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
super.onCreate(savedInstanceState);
|
View decorView = getWindow().getDecorView();//获取屏幕的decorView
|
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);
|
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
Window window = getWindow();
|
//设置修改状态栏
|
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
|
//设置状态栏的颜色,和你的app主题或者标题栏颜色设置一致就ok了
|
window.setStatusBarColor(Color.TRANSPARENT);
|
}
|
//如果没回调onResp,八成是这句没有写
|
ShoppingApplication.application.mWxApi.handleIntent(getIntent(), this);
|
}
|
|
// 微信发送请求到第三方应用时,会回调到该方法
|
@Override
|
public void onReq(BaseReq req) {
|
// SingleToast.showToast(WXEntryActivity.this, "发送请求");
|
}
|
|
// 第三方应用发送到微信的请求处理后的响应结果,会回调到该方法
|
//app发送消息给微信,处理返回消息的回调
|
@Override
|
public void onResp(BaseResp resp) {
|
// Log.e("mResult", resp.errCode + "");
|
switch (resp.errCode) {
|
case BaseResp.ErrCode.ERR_AUTH_DENIED:
|
case BaseResp.ErrCode.ERR_UNSUPPORT:
|
case BaseResp.ErrCode.ERR_COMM:
|
case BaseResp.ErrCode.ERR_BAN:
|
case BaseResp.ErrCode.ERR_USER_CANCEL:
|
|
finish();
|
break;
|
case BaseResp.ErrCode.ERR_SENT_FAILED:
|
|
finish();
|
break;
|
case BaseResp.ErrCode.ERR_OK:
|
switch (resp.getType()) {
|
case RETURN_MSG_TYPE_LOGIN:
|
String code = ((SendAuth.Resp) resp).code;
|
SharedPreferences sp = getSharedPreferences("user", MODE_PRIVATE);
|
Long uid = UserUtil.getUid(getApplicationContext());
|
boolean bindwx = sp.getBoolean("bindwx", false);
|
if (bindwx) {
|
changeWx(code, uid);
|
sp.edit().putBoolean("bindwx", false).commit();
|
break;
|
}
|
if (!sp.getBoolean("isLogin", false)) {
|
//拿到了微信返回的code,立马再去请求access_token
|
setLogin(code);
|
} else {
|
// bindInfo("2", "", "", code,
|
// getSharedPreferences("user", MODE_PRIVATE).getString("uid", "0"));
|
|
//在 微信激活邀请码的时候 需要一个微信code 用完即删
|
SharedPreferences.Editor editor = sp.edit();
|
editor.putString("wxcodeactivation", code);//记录微信激活code
|
editor.commit();
|
|
finish();
|
}
|
break;
|
|
case RETURN_MSG_TYPE_SHARE:
|
// UIUtils.showToast("微信分享成功");
|
|
finish();
|
break;
|
case RETURN_MSG_TYPE_XCX:
|
// UIUtils.showToast("微信分享成功");
|
|
finish();
|
break;
|
}
|
|
break;
|
}
|
}
|
|
/**
|
* 请求服务器匹配验证码
|
*/
|
private void setLogin(String code) {
|
//TODO 做QQ登录
|
LoginManager.loginByWX(code, new LoginManager.LoginAndBindListener() {
|
|
@Override
|
public void onLoginStart() {
|
super.onLoginStart();
|
DialogUtil.show(loadingDialog);
|
}
|
|
@Override
|
public void onLoginFinish() {
|
super.onLoginFinish();
|
DialogUtil.dismiss(loadingDialog);
|
}
|
|
@Override
|
public void onLoginSuccess(UserInfo user) {
|
super.onLoginSuccess(user);
|
UserUtil.loginSuccess(getApplicationContext(), user);
|
Toast.makeText(getApplicationContext(), "恭喜你,登录成功", Toast.LENGTH_SHORT).show();
|
finish();
|
}
|
|
@Override
|
public void onLoginFail(int code, String msg) {
|
super.onLoginFail(code, msg);
|
Toast.makeText(WXEntryActivity.this, msg, Toast.LENGTH_SHORT).show();
|
finish();
|
}
|
|
@Override
|
public void bindPhone(String key) {
|
super.bindPhone(key);
|
Intent intent = new Intent(getApplicationContext(), LoginSelectActivity.class);
|
intent.putExtra("type", LoginSelectActivity.TYPE_BIND_WITHOUT_LOGINED);
|
intent.putExtra("key", key);
|
startActivity(intent);
|
finish();
|
}
|
});
|
}
|
|
private void changeWx(String code, Long uid) {
|
AccountBindManager.bindWX(getApplicationContext(), uid, code, new LoginManager.LoginAndBindListener() {
|
|
@Override
|
public void onBindStart() {
|
super.onBindStart();
|
DialogUtil.show(loadingDialog);
|
}
|
|
@Override
|
public void onBindFinish() {
|
super.onBindFinish();
|
DialogUtil.dismiss(loadingDialog);
|
}
|
|
@Override
|
public void onBindFail(int code, String msg) {
|
super.onBindFail(code, msg);
|
if (code == 5) {
|
AddZFBInfoDialog2.Builder builder = new AddZFBInfoDialog2.Builder(WXEntryActivity.this);
|
builder.setTitle("更换提醒").setMessage("该帐号没有绑定手机号,需绑定手机号才能完成微信更换。\n")
|
.setPositiveButton("绑定手机号", new DialogInterface.OnClickListener() {
|
@Override
|
public void onClick(DialogInterface dialog, int which) {
|
dialog.dismiss();
|
SharedPreferences sp = getSharedPreferences("user", MODE_PRIVATE);
|
String uid = sp.getString("uid", "");
|
Intent intent = new Intent(WXEntryActivity.this, LoginSelectActivity.class);
|
intent.putExtra("uid", uid);
|
intent.putExtra("type", LoginSelectActivity.TYPE_BIND);
|
startActivity(intent);
|
|
finish();
|
}
|
}).setNegativeButton("不了", new DialogInterface.OnClickListener() {
|
@Override
|
public void onClick(DialogInterface dialog, int which) {
|
dialog.dismiss();
|
|
finish();
|
}
|
}).create().show();
|
} else {
|
Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show();
|
finish();
|
}
|
}
|
|
@Override
|
public void onBindSuccess(UserInfo user) {
|
super.onBindSuccess(user);
|
SharedPreferences sp = getSharedPreferences("user", MODE_PRIVATE);
|
SharedPreferences.Editor editor = sp.edit();
|
editor.putBoolean("isWxBind", true);
|
Toast.makeText(WXEntryActivity.this, "绑定成功", Toast.LENGTH_SHORT).show();
|
editor.commit();
|
finish();
|
}
|
});
|
}
|
}
|