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
- QQ 登陆
- qq登陆
- qq登陆
- QQ登陆
- qq登陆
- QQ登陆,获取QQ用户信息
- 清除QQ登陆记录
- QQ登陆助手
- MSN,QQ网上登陆
- QQ登陆批处理
- 用批处理登陆QQ
- QQ防盗登陆器
- QQ登陆加密算法
- QQ批量自动登陆
- QQ登陆界面
- QQ登陆界面
- QQ登陆界面
- QQ登陆界面
- 又一起机械臂事故?印度一汽车配件公司机器人“杀死”一名工人
- SQL DELETE 语句
- Linux下权限管理-文件特殊权限setUID/sticky BIT
- linux常见类库及简单介绍
- Web开发者不容错过的10个HTML5工具
- qq登陆
- 操作系统1
- 关于iOS中MVC和MVVM的一些思考
- 关于软件开发,你老板不知道的7件事
- BestCoder Round #51 (div.2) Zball in Tina Town
- hdu5391 Zball in Tina Town(素数筛法)
- 拉里·佩奇拯救我的20句话,相信也会警醒你
- 昂贵的聘礼
- 模版方法模式