packagecom.example.loginbyqq;importjava.io.BufferedInputStream;importjava.io.IOException;importjava.io.InputStream;importjava.net.HttpURLConnection;importjava.net.MalformedURLException;importjava.net.URL;importorg.json.JSONException;importorg.json.JSONObject;importandroid.annotation.SuppressLint;importandroid.app.Activity;importandroid.graphics.Bitmap;importandroid.graphics.BitmapFactory;importandroid.os.AsyncTask;importandroid.os.Bundle;importandroid.os.Handler;importandroid.os.Message;importandroid.util.Log;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.Button;importandroid.widget.ImageView;importandroid.widget.TextView;importandroid.widget.Toast;importcom.android.volley.Request;importcom.android.volley.RequestQueue;importcom.android.volley.Response;importcom.android.volley.VolleyError;importcom.android.volley.toolbox.JsonObjectRequest;importcom.android.volley.toolbox.Volley;importcom.tencent.tauth.IUiListener;importcom.tencent.tauth.Tencent;
@SuppressLint("HandlerLeak")public class MainActivity extends Activity implementsOnClickListener{privateButton btn_LoginQQ;privateTencent mTencent;public String APP_ID = "Your APPID";privateTextView user_nickname;privateImageView user_photo;privateIUiListener listener;privateString nickName , figureurl;private static final int SUCCESS = 0;private static final int FAILED = 1;private Handler mHandler=newHandler(){public voidhandleMessage(Message msg) {switch(msg.what) {caseSUCCESS:
String nick=(String) msg.obj;
user_nickname.setText(nick);break;caseFAILED:
Toast.makeText(MainActivity.this, "获取数据失败", Toast.LENGTH_SHORT).show();break;
}
};
};
@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTencent= Tencent.createInstance(APP_ID, this.getApplicationContext()); //实例化对象
initView();
}/*** 初始化视图*/
private voidinitView() {
btn_LoginQQ=(Button) findViewById(R.id.btn_LoginQQ);
btn_LoginQQ.setOnClickListener(this);
user_photo=(ImageView) findViewById(R.id.user_logo);
user_nickname=(TextView) findViewById(R.id.user_nickname);
}
@Overridepublic voidonClick(View v) {switch(v.getId()) {caseR.id.btn_LoginQQ:
login();break;
}
}/*** 登陆*/
private voidlogin() {
mTencent= Tencent.createInstance(APP_ID, this.getApplicationContext()); //创建实例
if(!mTencent.isSessionValid()){
listener=newBaseUiListener(){
@Overridepublic voidonComplete(Object object) {
JSONObject json=(JSONObject) object;
getUserInfoByVolley(json);
}
};
mTencent.login(this, "all", listener);
}
}/*** 使用Volley解析json数据
*@paramjson*/
protected voidgetUserInfoByVolley(JSONObject json) {try{
String openid=json.getString("openid");
String access_token=json.getString("access_token");
Log.e("TAG--->Openid",openid);
Log.e("TAG--->Openid",access_token);
String url="http://119.147.19.43/v3/user/get_info?openid="+openid+"&openkey="+access_token+"&pf=qzone&appid=1104812858&format=json&userip=10.0.0.1&sig=C3BGTm24S%2FZJdt1J%2BjfEzRpCLWA%3D";/*** 使用Volley框架得到json数据
* tag :https://github.com/adamrocker/volley
*/RequestQueue requestQueue=Volley.newRequestQueue(MainActivity.this); //用于获取一个Volley的请求对象
JsonObjectRequest jsonObjectRequest=new JsonObjectRequest(Request.Method.GET, url, null,new Response.Listener() {
@Overridepublic voidonResponse(JSONObject json) {/*** 解析json数据*/
try{
nickName=json.getString("nickname"); //昵称
figureurl=json.getString("figureurl"); //头像的url//TODO 通过异步任务处理图片
newNewAsyncTask().execute(figureurl);//mHandler.obtainMessage(SUCCESS, nickName).sendToTarget();
}catch(JSONException e) {
e.printStackTrace();
}
}
},newResponse.ErrorListener() {
@Overridepublic voidonErrorResponse(VolleyError arg0) {
Log.e("error","问题~~");
mHandler.obtainMessage(FAILED).sendToTarget();
}
});
requestQueue.add(jsonObjectRequest);//在请求队列中加入当前的请求
}catch(JSONException e) {
e.printStackTrace();
}
}/*** 异步任务加载图片
*@authormonster*/
class NewAsyncTask extends AsyncTask{
@OverrideprotectedBitmap doInBackground(String... params) {
String url=params[0];returngetBitmapByUrl(url);
}
@Overrideprotected voidonPostExecute(Bitmap result) {super.onPostExecute(result);
user_photo.setImageBitmap(result);
}
}/*** 通过url 得到bitmap对象
*@paramurlString
*@return
*/
publicBitmap getBitmapByUrl(String urlString) {
Bitmap bitmap;
InputStream is= null;try{
URL url=newURL(urlString);
HttpURLConnection connection=(HttpURLConnection) url.openConnection();
is=newBufferedInputStream(connection.getInputStream());
bitmap=BitmapFactory.decodeStream(is);
connection.disconnect();//关闭连接
returnbitmap;
}catch(MalformedURLException e) {
e.printStackTrace();
}catch(IOException e) {
e.printStackTrace();
}finally{try{
is.close();
}catch(IOException e) {
e.printStackTrace();
}
}return null;
}
}