package com.moral.yunfushao.wxapi;
|
|
import android.app.Activity;
|
import android.content.Intent;
|
import android.os.Bundle;
|
import android.support.annotation.Nullable;
|
import android.widget.Toast;
|
|
import com.lzy.okgo.cache.CacheMode;
|
import com.moral.andbrickslib.utils.GsonUtil;
|
import com.moral.yunfushao.MainActivity;
|
import com.moral.yunfushao.common.WXConstants;
|
import com.moral.yunfushao.httputils.HttpCallBack;
|
import com.moral.yunfushao.httputils.WXHttpUtil;
|
import com.moral.yunfushao.model.User;
|
import com.moral.yunfushao.wxapi.data.AccessTokenBean;
|
import com.moral.yunfushao.wxapi.data.WXUserBean;
|
import com.tencent.mm.opensdk.constants.ConstantsAPI;
|
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.modelmsg.ShowMessageFromWX;
|
import com.tencent.mm.opensdk.modelmsg.WXAppExtendObject;
|
import com.tencent.mm.opensdk.modelmsg.WXMediaMessage;
|
import com.tencent.mm.opensdk.openapi.IWXAPI;
|
import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler;
|
import com.tencent.mm.opensdk.openapi.WXAPIFactory;
|
|
/**
|
* @author : chenqi.
|
* @e_mail : 1650699704@163.com.
|
* @create_time : 2018/11/26.
|
* @Package_name: pregnancy_guard_android
|
*/
|
public class WXEntryActivity extends Activity implements IWXAPIEventHandler {
|
private IWXAPI api;
|
public static String code = "";
|
|
@Override
|
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
super.onCreate(savedInstanceState);
|
api = WXAPIFactory.createWXAPI(this, WXConstants.APP_ID, false);
|
api.registerApp(WXConstants.APP_ID);
|
}
|
|
@Override
|
protected void onNewIntent(Intent intent) {
|
super.onNewIntent(intent);
|
setIntent(intent);
|
api.handleIntent(intent, this);
|
}
|
|
@Override
|
public void onReq(BaseReq baseReq) {
|
switch (baseReq.getType()) {
|
case ConstantsAPI.COMMAND_GETMESSAGE_FROM_WX:
|
goToGetMsg();
|
break;
|
case ConstantsAPI.COMMAND_SHOWMESSAGE_FROM_WX:
|
goToShowMsg((ShowMessageFromWX.Req) baseReq);
|
break;
|
default:
|
break;
|
}
|
}
|
|
@Override
|
public void onResp(BaseResp baseResp) {
|
String result;
|
|
Toast.makeText(this, "baseresp.getType = " + baseResp.getType(), Toast.LENGTH_SHORT).show();
|
|
switch (baseResp.errCode) {
|
case BaseResp.ErrCode.ERR_OK:
|
code = ((SendAuth.Resp) baseResp).code;
|
result = "授权成功";
|
checkWXLogin();
|
//用户同意
|
break;
|
case BaseResp.ErrCode.ERR_USER_CANCEL:
|
result = "发送取消";
|
break;
|
case BaseResp.ErrCode.ERR_AUTH_DENIED:
|
result = "发送被拒绝";
|
break;
|
case BaseResp.ErrCode.ERR_UNSUPPORT:
|
result = "不支持错误";
|
break;
|
default:
|
result = "发送返回";
|
break;
|
}
|
|
Toast.makeText(this, result, Toast.LENGTH_LONG).show();
|
}
|
|
/**
|
* 检查是否登陆失效
|
*/
|
private void checkWXLogin() {
|
String url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid= " +
|
WXConstants.APP_ID +
|
"&secret=" + "应用密钥" + "&code=" +
|
WXEntryActivity.code +
|
"&grant_type=authorization_code";
|
WXHttpUtil.doGet(url, CacheMode.DEFAULT, new HttpCallBack() {
|
@Override
|
public void onSuccess(String res, String msg) {
|
AccessTokenBean accessTokenBean = GsonUtil.toObj(msg, AccessTokenBean.class);
|
if (accessTokenBean.getAccess_token() == null && accessTokenBean.getOpenid() == null)
|
getUserInfor(accessTokenBean.getAccess_token(), accessTokenBean.getOpenid());
|
}
|
|
@Override
|
public void showLoadingDialog() {
|
//
|
}
|
|
@Override
|
public void onFail(int errno, String s) {
|
}
|
});
|
}
|
|
/**
|
* 获取到用户的信息
|
*
|
* @param access_token
|
* @param openid
|
*/
|
private void getUserInfor(String access_token, String openid) {
|
String path = "https://api.weixin.qq.com/sns/userinfo?access_token="
|
+ access_token
|
+ "&openid="
|
+ openid;
|
WXHttpUtil.doGet(path, CacheMode.DEFAULT, new HttpCallBack() {
|
@Override
|
public void onSuccess(String res, String msg) {
|
WXUserBean bean = new WXUserBean();
|
User user = new User();
|
user.set_id(bean.getOpenid());
|
user.setNickname(bean.getNickname());
|
}
|
|
@Override
|
public void showLoadingDialog() {
|
|
}
|
|
@Override
|
public void onFail(int errno, String s) {
|
|
}
|
});
|
}
|
|
private void goToGetMsg() {
|
Intent intent = new Intent(this, MainActivity.class);
|
intent.putExtras(getIntent());
|
startActivity(intent);
|
finish();
|
}
|
|
|
private void goToShowMsg(ShowMessageFromWX.Req showReq) {
|
WXMediaMessage wxMsg = showReq.message;
|
WXAppExtendObject obj = (WXAppExtendObject) wxMsg.mediaObject;
|
|
StringBuffer msg = new StringBuffer(); // 组织一个待显示的消息内容
|
msg.append("description: ");
|
msg.append(wxMsg.description);
|
msg.append("\n");
|
msg.append("extInfo: ");
|
msg.append(obj.extInfo);
|
msg.append("\n");
|
msg.append("filePath: ");
|
msg.append(obj.filePath);
|
|
Intent intent = new Intent(this, MainActivity.class);
|
intent.putExtra(WXConstants.ShowMsgActivity.STitle, wxMsg.title);
|
intent.putExtra(WXConstants.ShowMsgActivity.SMessage, msg.toString());
|
intent.putExtra(WXConstants.ShowMsgActivity.BAThumbData, wxMsg.thumbData);
|
startActivity(intent);
|
finish();
|
}
|
}
|