package com.doudou.ysvideo.wxapi;
|
|
|
import android.app.Dialog;
|
import android.content.Context;
|
import android.content.SharedPreferences;
|
import android.graphics.Color;
|
import android.os.Build;
|
import android.os.Bundle;
|
import androidx.annotation.Nullable;
|
|
import android.view.View;
|
import android.view.Window;
|
import android.view.WindowManager;
|
|
import com.lcjian.library.dialog.DialogUtil;
|
import com.lcjian.library.util.SingleToast;
|
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.weikou.beibeivideo.BasicTextHttpResponseHandler;
|
import com.weikou.beibeivideo.BeibeiVideoAPI;
|
import com.weikou.beibeivideo.BeibeiVideoApplication;
|
import com.weikou.beibeivideo.ui.BaseActivity;
|
import com.weikou.beibeivideo.ui.dialog.LoadingDialogUtil;
|
import com.weikou.beibeivideo.util.UserUtil;
|
|
import org.apache.http.Header;
|
import org.json.JSONObject;
|
|
|
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;
|
private static final int RETURN_MSG_TYPE_BIND = 30;
|
private Dialog dialog;
|
|
@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,八成是这句没有写
|
BeibeiVideoApplication.application.mWxApi.handleIntent(getIntent(), this);
|
dialog = LoadingDialogUtil.getLoadingDialog(this, "");
|
}
|
|
// 微信发送请求到第三方应用时,会回调到该方法
|
@Override
|
public void onReq(BaseReq req) {
|
|
}
|
|
// 第三方应用发送到微信的请求处理后的响应结果,会回调到该方法
|
//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:
|
// Log.e("mResult", "getType:" + resp.getType());
|
switch (resp.getType()) {
|
case RETURN_MSG_TYPE_LOGIN:
|
SendAuth.Resp res = (SendAuth.Resp) resp;
|
if ("bind".equalsIgnoreCase(res.state)) {
|
bind(res.code);
|
} else {
|
login(res.code);
|
}
|
break;
|
|
case RETURN_MSG_TYPE_SHARE:
|
|
finish();
|
break;
|
case RETURN_MSG_TYPE_XCX:
|
|
finish();
|
break;
|
}
|
|
break;
|
}
|
}
|
|
/**
|
* 请求服务器匹配验证码
|
*/
|
private void login(String code) {
|
BeibeiVideoAPI.wxLogin(this, UserUtil.getUid(this), code, new BasicTextHttpResponseHandler() {
|
|
@Override
|
public void onStart() {
|
super.onStart();
|
DialogUtil.show(dialog);
|
if (!dialog.isShowing())
|
dialog.show();
|
}
|
|
@Override
|
public void onFinish() {
|
super.onFinish();
|
DialogUtil.dismiss(dialog);
|
}
|
|
@Override
|
public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
|
|
if (jsonObject.optBoolean("IsPost")) {
|
JSONObject data = jsonObject.optJSONObject("Data");
|
JSONObject user = data.optJSONObject("user");
|
|
SharedPreferences.Editor edit = getSharedPreferences("user",
|
Context.MODE_PRIVATE).edit();
|
edit.putString("portrait", user.optString("portrait"));
|
edit.putString("LoginUid",
|
user.optString("id"));
|
edit.putString("name",
|
user.optString("Nickname"));
|
edit.putString("sex",
|
user.optString("sex"));
|
edit.commit();
|
|
SingleToast.showToast(getApplicationContext(),
|
"登录成功");
|
} else {
|
SingleToast.showToast(WXEntryActivity.this,
|
jsonObject.optString("Error"));
|
}
|
|
WXEntryActivity.this.finish();
|
}
|
|
@Override
|
public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
|
super.onFailure(statusCode, headers, responseString, throwable);
|
SingleToast.showToast(getApplicationContext(),
|
"登录失败");
|
WXEntryActivity.this.finish();
|
}
|
});
|
}
|
|
|
/**
|
* 请求服务器匹配验证码
|
*/
|
private void bind(String code) {
|
BeibeiVideoAPI.bindWX(this, UserUtil.getLoginUid(this), code, new BasicTextHttpResponseHandler() {
|
|
@Override
|
public void onStart() {
|
super.onStart();
|
if (!dialog.isShowing())
|
dialog.show();
|
}
|
|
@Override
|
public void onFinish() {
|
super.onFinish();
|
if (dialog.isShowing())
|
dialog.dismiss();
|
}
|
|
@Override
|
public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
|
|
if (jsonObject.optBoolean("IsPost")) {
|
SingleToast.showToast(getApplicationContext(),
|
"微信绑定成功");
|
} else {
|
SingleToast.showToast(WXEntryActivity.this,
|
jsonObject.optString("Error"));
|
}
|
WXEntryActivity.this.finish();
|
}
|
|
@Override
|
public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
|
super.onFailure(statusCode, headers, responseString, throwable);
|
SingleToast.showToast(getApplicationContext(),
|
"微信绑定失败");
|
WXEntryActivity.this.finish();
|
}
|
});
|
}
|
}
|