android 微信登录

 

第一步:添加依赖

compile'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'00

第二步:权限

第三步:WXEntryActivity.java

在包名下新建wxapi.WXEntryActivity.java

public class WXEntryActivityextends BaseActivityimplements IWXAPIEventHandler {

private IWXAPIapi;

    public static BaseRespresp =null;

    protected void onCreate(Bundle var1) {

        super.onCreate(var1);

        this.api = WXAPIFactory.createWXAPI(this, Constants.WXAPPID, true);

        boolean handleIntent =this.api.handleIntent(this.getIntent(), this);

        if(!handleIntent){

            finish();

        }

}

protected void onNewIntent(Intent var1) {

        super.onNewIntent(var1);

        this.setIntent(var1);

        this.api.handleIntent(var1, this);

    }

public void onReq(BaseReq var1) {

}

public void onResp(BaseResp var1) {

        if (var1 !=null) {

            resp = var1;

        }

        switch(var1.errCode) {

            case BaseResp.ErrCode.ERR_AUTH_DENIED:

                Log.v("WXEntryActivity", "发送被拒绝");

                break;

            case BaseResp.ErrCode.ERR_SENT_FAILED:

                Log.v("WXEntryActivity", "发送-3");

                break;

            case BaseResp.ErrCode.ERR_COMM:

                Log.v("WXEntryActivity", "发送-1");

                break;

            case BaseResp.ErrCode.ERR_USER_CANCEL:

                Log.v("WXEntryActivity", "发送取消");

                break;

            case BaseResp.ErrCode.ERR_OK:

                Intent intent =new Intent(Constants.wxshare_action);

                sendBroadcast(intent);

                break;

        }

        this.finish();

    }

}

并在注册文件中注册(android:exported="true" 一定不能少)

            android:name=".wxapi.WXEntryActivity"            android:exported="true" />

第四步:调起微信

 

if (api ==null) {

    api = WXAPIFactory.createWXAPI(LoginActivity.this, Constants.WXAPPID, true);

}

if (!api.isWXAppInstalled()) {

    MyToast.showToast(getApplicationContext(),"您手机尚未安装微信,请安装后再登录");

    return;

}

api.registerApp(Constants.WXAPPID);

SendAuth.Req req =new SendAuth.Req();

req.scope ="snsapi_userinfo";

req.state ="wechat_sdk_jj_login_state";

//官方说明:用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于防止csrf攻击(跨站请求伪造攻击),

// 建议第三方带上该参数,可设置为简单的随机数加session进行校验

api.sendReq(req);

第五步:得到微信回调

@Override

public void onResume() {

super.onResume();

        //这里的判断是为了区分如果不是不是从WXEntryActivity页面销毁重启的,不走下面的代码

        if (WXEntryActivity.resp !=null) {

            if (WXEntryActivity.resp.getType() ==1) {

                String code = ((SendAuth.Resp) WXEntryActivity.resp).code;

                requestWXAccessToken(code);

            }

}

第六步:获取微信信息

String url ="https://api.weixin.qq.com/sns/oauth2/access_token?appid="+Constants.WXAPPID+

"&secret="+Constants.WXSECRET+"&code="+code+"&grant_type=authorization_code";

更多相关文章

  1. Android: 用Instrumentation类发送鼠标或按键事件
  2. android发送QQ邮件(带附件)
  3. android群发短信时判断短信是否发送成功
  4. Android(安卓)| activity之间传递列表,以listview显示
  5. Android(安卓)封装http请求的工具类
  6. Android发送短信
  7. android接收和发送短信的xml配置
  8. Android带参数链接请求服务器
  9. Android(安卓)发送通知

随机推荐

  1. android log使用
  2. android handler操作线程的两种方式
  3. 下拉菜单中自动亮度调节&P 上背光调节
  4. Unable to execute dex: Multiple dex fi
  5. 大话企业级Android应用开发实战 用户界面
  6. android 开发 onRestart()未调用
  7. 屏幕旋转Activity的生命周期变化
  8. 如何构建背景渐变的页面
  9. android 设置闹钟显示的状态栏上
  10. Android系统源码导入到eclipse