qq登陆




public class LoginActivity extends BaseActivity implements View.OnClickListener {

    private QQdialog qQdialog;
    private boolean progressShow;

    private TextView mUserInfo;
    private ImageView mUserLogo;
    private Button mNewLoginButton;
    private TextView backInfo;
    private UserInfo mInfo;
    private Tencent mTencent;
    public QQAuth mQQAuth;
    // 申请的id
    public String mAppid = "1104650299";

    @Override
    protected int setContentViewId() {
        return R.layout.activity_login;
    }

    @Override
    protected void initViews() {
        PhoneInfoResponse mResponse = PhoneInfoResponse.getInstance(LoginActivity.this);
        ToastUtils.showShort(this, mResponse.getDeviceID() + "");

        qQdialog= new QQdialog(this,"跳转QQ中,请稍后...");
        qQdialog.setCanceledOnTouchOutside(false);
        qQdialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
            @Override
            public void onCancel(DialogInterface dialog) {
                progressShow=false;
            }
        });


        mUserInfo = (TextView) findViewById(R.id.user_nickname);
        mUserLogo = (ImageView) findViewById(R.id.user_logo);
        mNewLoginButton = (Button) findViewById(R.id.new_login_btn);
        mNewLoginButton.setOnClickListener(this);
        backInfo = (TextView) findViewById(R.id.user_callback);
        // Tencent类是SDK的主要实现类,通过此访问腾讯开放的OpenAPI。
        mQQAuth = QQAuth.createInstance(mAppid, this.getApplicationContext());
        // 实例化
        mTencent = Tencent.createInstance(mAppid, this);

    }
    Handler mHandler = new Handler() {

            @Override
            public void handleMessage(Message msg) {
                if (msg.what == 0) {
                    mUserInfo.setVisibility(android.view.View.VISIBLE);
                    mUserInfo.setText(msg.getData().getString("nickname"));
                } else if (msg.what == 1) {
                    Bitmap bitmap = (Bitmap) msg.obj;
                    mUserLogo.setImageBitmap(bitmap);
                    mUserLogo.setVisibility(android.view.View.VISIBLE);
                }
            }
        };


    private void updateUserInfo() {
        if (mQQAuth != null && !mQQAuth.isSessionValid()) {
            IUiListener listener = new IUiListener() {
                @Override
                public void onError(UiError e) {
                }

                @Override
                public void onComplete(final Object response) {
                    JSONObject json = (JSONObject) response;
                    // 昵称
                    Message msg = new Message();
                    String nickname = null;
                    try {
                        nickname = ((JSONObject) response).getString("nickname");
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                    msg.getData().putString("nickname", nickname);
                    msg.what = 0;
                    mHandler.sendMessage(msg);
                    // 头像
                    String path;
                    try {
                        path = json.getString("figureurl_qq_2");
                        MyImgThread imgThread = new MyImgThread(path);
                        Thread thread = new Thread(imgThread);
                        thread.start();
                    } catch (JSONException e1) {
                        e1.printStackTrace();
                    }
                }

                @Override
                public void onCancel() {

                }
            };
            QQToken qqToken = mTencent.getQQToken();
            mInfo = new UserInfo(this,qqToken);
            mInfo.getUserInfo(listener);

        } else {
            // mUserInfo.setText("");
            // mUserInfo.setVisibility(android.view.View.GONE);
            // mUserLogo.setVisibility(android.view.View.GONE);
        }
    }

    /**
     * 开启线程 获取头像
     */
    class MyImgThread implements Runnable {
        private String imgPath;
        private Bitmap bitmap;

        public MyImgThread(String imgpath) {
            this.imgPath = imgpath;
        }

        @Override
        public void run() {
            bitmap = getImgBitmap(imgPath);
            Message msg = new Message();
            msg.obj = bitmap;
            msg.what = 1;
            mHandler.sendMessage(msg);
        }
    }

    /**
     * 根据头像的url 获取bitmap
     */
    public Bitmap getImgBitmap(String imageUri) {
        // 显示网络上的图片
        Bitmap bitmap = null;
        HttpURLConnection conn = null;
        InputStream is = null;
        try {
            URL myFileUrl = new URL(imageUri);
            conn = (HttpURLConnection) myFileUrl.openConnection();
            conn.setDoInput(true);
            conn.connect();

            is = conn.getInputStream();
            bitmap = BitmapFactory.decodeStream(is);
            is.close();
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        } finally {
            try {
                conn.disconnect();
                is.close();
                is.reset();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return bitmap;
    }

    public void onClickLogin() {
        // 登录
        if (!mQQAuth.isSessionValid()) {
            // 实例化回调接口
            IUiListener listener = new BaseUiListener() {
                @Override
                protected void doComplete(JSONObject values) {
                    qQdialog.dismiss();
                    updateUserInfo();
                    //updateLoginButton();
                    if (mQQAuth != null) {
                        mNewLoginButton.setTextColor(Color.BLUE);
                        mNewLoginButton.setText("登录");
                    }
                }
            };

            // 这版本登录是使用的这种方式,后面的几个参数是啥意思 我也没查到
            mTencent.loginWithOEM(this, "all", listener, "10000144",
                    "10000144", "xxxx");
        } else {
            // 注销登录
            mQQAuth.logout(this);
            updateUserInfo();

            // updateLoginButton();
            mNewLoginButton.setTextColor(Color.RED);
            mNewLoginButton.setText("退出帐号");
        }
    }

    /**
     * 调用SDK封装好的接口,需要传入回调的实例 会返回服务器的消息
     */
    private class BaseUiListener implements IUiListener {
        /**
         * 成功
         */
        @Override
        public void onComplete(Object response) {
            backInfo.setText(response.toString());
            doComplete((JSONObject) response);
        }

        /**
         * 处理返回的消息 比如把json转换为对象什么的
         *
         * @param values
         */
        protected void doComplete(JSONObject values) {

        }

        @Override
        public void onError(UiError e) {
            Toast.makeText(LoginActivity.this, e.toString(), Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onCancel() {
            Toast.makeText(LoginActivity.this, "cancel", Toast.LENGTH_SHORT).show();
        }
    }

    @Override
    public void onClick(View v) {
        qQdialog.show();
        // 当点击登录按钮
        if (v == mNewLoginButton) {
            onClickLogin();
        }
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值