qq登陆

来源:互联网 发布:p图软件下载 编辑:程序博客网 时间:2024/05/01 02:59
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();        }    }}
0 0