微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android接入微信登陆

首先添加工具包,名字为libammsdk.jar(微信有相应的包下载
然后在src.main.java.com.****新建一个wxapi的包并存放这两个activity(名字不能更改)

WXEntryActivity(登陆)

public class WXEntryActivity extends Activity implements IWXAPIEventHandler {
    private IWXAPI wxAPI;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        wxAPI = WXAPIFactory.createWXAPI(this, ApiConstant.WECHATE_APP_ID, true);
        wxAPI.registerapp(ApiConstant.WECHATE_APP_ID);
        wxAPI.handleIntent(getIntent(), this);
    }


    @Override
    public void onReq(BaseReq baseReq) {

    }

    @Override
    public void onResp(BaseResp baseResp) {
        if (baseResp.getType() == ConstantsAPI.COMMAND_SENDAUTH) {
            SendAuth.Resp r = (SendAuth.Resp) baseResp;
            if (baseResp.errCode == BaseResp.ErrCode.ERR_OK) {
                Log.e("TAG_WECHAT_CODE", r.code);
                //登陆成功的结果,可以跳转到某个页面
                finish();
            } else if (baseResp.errCode == BaseResp.ErrCode.ERR_AUTH_DENIED) {
                String result = "用户取消微信授权登录";
                Log.e("ERROR", result);
                finish();
            } else if (baseResp.errCode == BaseResp.ErrCode.ERR_USER_CANCEL) {
                String result = "用户拒绝微信授权登录";
                Log.e("ERROR", result);
                finish();
            } else {
                String result = "微信授权登录失败";
                Log.e("ERROR", result);
                finish();
            }
        } else if (baseResp.getType() == ConstantsAPI.COMMAND_SENDMESSAGE_TO_WX) {
            if (baseResp.errCode == BaseResp.ErrCode.ERR_OK) {

            } else if (baseResp.errCode == BaseResp.ErrCode.ERR_USER_CANCEL) {

            } else {
            }
        }
    }
}

WXPayEntryActivity(支付)


public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler {
    private IWXAPI wxAPI;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        wxAPI = WXAPIFactory.createWXAPI(this, ApiConstant.WECHATE_APP_ID);
        wxAPI.handleIntent(getIntent(), this);

    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        wxAPI.handleIntent(getIntent(), this);
    }

    @Override
    public void onReq(BaseReq baseReq) {

    }

    @Override
    public void onResp(BaseResp baseResp) {
        Log.e("WXPayEntryActivity", "code=" + baseResp.errCode);
        if (baseResp.errCode == 0) {
            //支付成功
        } else if (baseResp.errCode == BaseResp.ErrCode.ERR_USER_CANCEL) {
            //取消支付
            Log.e("WXPayEntryActivity", "取消支付");
        } else {
            //支付失败
             Log.e("WXPayEntryActivity", "支付失败");
        }
        finish();
    }
}

在Manifest.xml中添加

  <activity
            android:name=".wxapi.WXEntryActivity"
            android:exported="true"
            android:label="@string/app_name"
            android:launchMode="singleTask"
            android:taskAffinity="com.***.*****"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />
        <activity
            android:name=".wxapi.WXPayEntryActivity"
            android:exported="true"
            android:label="@string/app_name"
            android:launchMode="singleTask"
            android:taskAffinity="com.***.*****"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />

然后在你需要登陆的页面添加

private IWXAPI iwxapi = null;
@Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        iwxapi = WXAPIFactory.createWXAPI(context, 微信返回的id, true);
        // 将应用的appId注册到微信
        iwxapi.registerapp(微信返回的id);
        //动态监听微信启动广播进行注册到微信
        context.registerReceiver(new broadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                // 将该app注册到微信
                iwxapi.registerapp(微信返回的id);
            }
        }, new IntentFilter(ConstantsAPI.ACTION_REFRESH_WXAPP));
    }
     public void loginWeChat() {
        SendAuth.Req req = new SendAuth.Req();
        req.scope = "snsapi_userinfo";
        req.state = "wechat_sdk_demo_test";
        iwxapi.sendReq(req);
    }

然后直接调用loginWeChat()就可以了,返回的数据在WXEntryActivity中,找一下就能看到

微信支付这一块可以下载官方demo进行查看
https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=11_1

原文地址:https://www.jb51.cc/wenti/3284167.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐