qq登录和分享
2018-04-03 15:26
169 查看
MainActivity
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
TextView tv_name;
TextView tv_content;
ImageView imageView;
private UserInfo mInfo;
public static Tencent mTencent;
public static String mAppid="1106062414";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView()
{
tv_name= (TextView) findViewById(R.id.name);
tv_content= (TextView) findViewById(R.id.content);
imageView= (ImageView) findViewById(R.id.user_logo);
findViewById(R.id.new_login_btn).setOnClickListener(this);
findViewById(R.id.new_login_close).setOnClickListener(this);
findViewById(R.id.new_login_shareqq).setOnClickListener(this);
findViewById(R.id.new_login_shareqzone).setOnClickListener(this);
if (mTencent == null) {
mTencent = Tencent.createInstance(mAppid, this);
}
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.new_login_btn:
onClickLogin();
break;
case R.id.new_login_close:
mTencent.logout(MainActivity.this);//注销登录
break;
case R.id.new_login_shareqq:
onClickShare();
break;
case R.id.new_login_shareqzone:
shareToQQzone();
break;
}
}
/**
* 继承的到BaseUiListener得到doComplete()的方法信息
*/
IUiListener loginListener = new BaseUiListener() {
@Override
protected void doComplete(JSONObject values) {//得到用户的ID 和签名等信息 用来得到用户信息
Log.i("lkei",values.toString());
initOpenidAndToken(values);
updateUserInfo();
}
};
/***
* QQ平台返回返回数据个体 loginListener的values
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == Constants.REQUEST_LOGIN ||
requestCode == Constants.REQUEST_APPBAR) {
Tencent.onActivityResultData(requestCode,resultCode,data,loginListener);
}
super.onActivityResult(requestCode, resultCode, data);
}
private class BaseUiListener implements IUiListener {
@Override
public void onComplete(Object response) {
if (null == response) {
Toast.makeText(MainActivity.this, "登录失败",Toast.LENGTH_LONG).show();
return;
}
JSONObject jsonResponse = (JSONObject) response;
if (null != jsonResponse && jsonResponse.length() == 0) {
Toast.makeText(MainActivity.this, "登录失败",Toast.LENGTH_LONG).show();
return;
}
Toast.makeText(MainActivity.this, "登录成功",Toast.LENGTH_LONG).show();
d
4000
oComplete((JSONObject)response);
}
protected void doComplete(JSONObject values) {
}
@Override
public void onError(UiError e) {
//登录错误
}
@Override
public void onCancel() {
// 运行完成
}
}
/**
* 获取登录QQ腾讯平台的权限信息(用于访问QQ用户信息)
* @param jsonObject
*/
public static void initOpenidAndToken(JSONObject jsonObject) {
try {
String token = jsonObject.getString(Constants.PARAM_ACCESS_TOKEN);
String expires = jsonObject.getString(Constants.PARAM_EXPIRES_IN);
String openId = jsonObject.getString(Constants.PARAM_OPEN_ID);
if (!TextUtils.isEmpty(token) && !TextUtils.isEmpty(expires)
&& !TextUtils.isEmpty(openId)) {
mTencent.setAccessToken(token, expires);
mTencent.setOpenId(openId);
}
} catch(Exception e) {
}
}
private void onClickLogin() {
if (!mTencent.isSessionValid()) {
mTencent.login(this, "all", loginListener);
}
}
private void updateUserInfo() {
if (mTencent != null && mTencent.isSessionValid()) {
IUiListener listener = new IUiListener() {
@Override
public void onError(UiError e) {
}
@Override
public void onComplete(final Object response) {
Message msg = new Message();
msg.obj = response;
Log.i("tag", response.toString());
msg.what = 0;
mHandler.sendMessage(msg);
}
@Override
public void onCancel() {
}
};
mInfo = new UserInfo(this, mTencent.getQQToken());
mInfo.getUserInfo(listener);
}
}
Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.what == 0) {
JSONObject response = (JSONObject) msg.obj;
if (response.has("nickname")) {
try {
Gson gson=new Gson();
User user=gson.fromJson(response.toString(),User.class);
if (user!=null) {
tv_name.setText("昵称:"+user.getNickname()+" 性别:"+user.getGender()+" 地址:"+user.getProvince()+user.getCity());
tv_content.setText("头像路径:"+user.getFigureurl_qq_2());
Picasso.with(MainActivity.this).load(response.getString("figureurl_qq_2")).into(imageView);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}
};
//qq分享
private void onClickShare() {
final Bundle params = new Bundle();
params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE,
QQShare.SHARE_TO_QQ_TYPE_DEFAULT);
params.putString(QQShare.SHARE_TO_QQ_TITLE, "要分享的标题");
params.putString(QQShare.SHARE_TO_QQ_SUMMARY, "要分享的摘要");
params.putString(QQShare.SHARE_TO_QQ_TARGET_URL,
"http://blog.csdn.net/DickyQie/article/list/1");
params.putString(QQShare.SHARE_TO_QQ_IMAGE_URL,
"http://imgcache.qq.com/qzone/space_item/pre/0/66768.gif");
params.putString(QQShare.SHARE_TO_QQ_APP_NAME, "切切歆语");
params.putString(QQShare.SHARE_TO_QQ_EXT_INT, "其他附加功能");
mTencent.shareToQQ(MainActivity.this, params, new BaseUiListener1());
}
//回调接口 (成功和失败的相关操作)
private class BaseUiListener1 implements IUiListener {
@Override
public void onComplete(Object response) {
doComplete(response);
}
protected void doComplete(Object values) {
}
@Override
public void onError(UiError e) {
}
@Override
public void onCancel() {
}
}
@SuppressWarnings("unused")
private void shareToQQzone() {
try {
final Bundle params = new Bundle();
params.putInt(QzoneShare.SHARE_TO_QZONE_KEY_TYPE,
QzoneShare.SHARE_TO_QZONE_TYPE_IMAGE_TEXT);
params.putString(QzoneShare.SHARE_TO_QQ_TITLE, "切切歆语");
params.putString(QzoneShare.SHARE_TO_QQ_SUMMARY, "sss");
params.putString(QzoneShare.SHARE_TO_QQ_TARGET_URL,
"http://blog.csdn.net/DickyQie/article/list/1");
ArrayList<String> imageUrls = new ArrayList<String>();
imageUrls.add("http://media-cdn.tripadvisor.com/media/photo-s/01/3e/05/40/the-sandbar-that-links.jpg");
params.putStringArrayList(QzoneShare.SHARE_TO_QQ_IMAGE_URL, imageUrls);
params.putInt(QzoneShare.SHARE_TO_QQ_EXT_INT,
QQShare.SHARE_TO_QQ_FLAG_QZONE_AUTO_OPEN);
Tencent mTencent = Tencent.createInstance("1106062414",
MainActivity.this);
mTencent.shareToQzone(MainActivity.this, params,
new BaseUiListener1());
} catch (Exception e) {
}
}
}AndroidManifest
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.bawie.dell.gouwuche.MainActivity">
<Button
android:id="@+id/new_login_btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="QQ登录"
/>
<Button
android:id="@+id/new_login_close"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="退出登录"
/>
<Button
android:id="@+id/new_login_shareqq"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="QQ分享"
/>
<Button
android:id="@+id/new_login_shareqzone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="QQ空间分享"
/>
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="用户名:"
android:layout_marginTop="5dp"
/>
<ImageView
android:id="@+id/user_logo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher"
android:layout_marginTop="15dp"
/>
<TextView
android:id="@+id/content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="用户详细信息:"
android:layout_marginTop="15dp"
/>
</LinearLayout>
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
TextView tv_name;
TextView tv_content;
ImageView imageView;
private UserInfo mInfo;
public static Tencent mTencent;
public static String mAppid="1106062414";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView()
{
tv_name= (TextView) findViewById(R.id.name);
tv_content= (TextView) findViewById(R.id.content);
imageView= (ImageView) findViewById(R.id.user_logo);
findViewById(R.id.new_login_btn).setOnClickListener(this);
findViewById(R.id.new_login_close).setOnClickListener(this);
findViewById(R.id.new_login_shareqq).setOnClickListener(this);
findViewById(R.id.new_login_shareqzone).setOnClickListener(this);
if (mTencent == null) {
mTencent = Tencent.createInstance(mAppid, this);
}
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.new_login_btn:
onClickLogin();
break;
case R.id.new_login_close:
mTencent.logout(MainActivity.this);//注销登录
break;
case R.id.new_login_shareqq:
onClickShare();
break;
case R.id.new_login_shareqzone:
shareToQQzone();
break;
}
}
/**
* 继承的到BaseUiListener得到doComplete()的方法信息
*/
IUiListener loginListener = new BaseUiListener() {
@Override
protected void doComplete(JSONObject values) {//得到用户的ID 和签名等信息 用来得到用户信息
Log.i("lkei",values.toString());
initOpenidAndToken(values);
updateUserInfo();
}
};
/***
* QQ平台返回返回数据个体 loginListener的values
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == Constants.REQUEST_LOGIN ||
requestCode == Constants.REQUEST_APPBAR) {
Tencent.onActivityResultData(requestCode,resultCode,data,loginListener);
}
super.onActivityResult(requestCode, resultCode, data);
}
private class BaseUiListener implements IUiListener {
@Override
public void onComplete(Object response) {
if (null == response) {
Toast.makeText(MainActivity.this, "登录失败",Toast.LENGTH_LONG).show();
return;
}
JSONObject jsonResponse = (JSONObject) response;
if (null != jsonResponse && jsonResponse.length() == 0) {
Toast.makeText(MainActivity.this, "登录失败",Toast.LENGTH_LONG).show();
return;
}
Toast.makeText(MainActivity.this, "登录成功",Toast.LENGTH_LONG).show();
d
4000
oComplete((JSONObject)response);
}
protected void doComplete(JSONObject values) {
}
@Override
public void onError(UiError e) {
//登录错误
}
@Override
public void onCancel() {
// 运行完成
}
}
/**
* 获取登录QQ腾讯平台的权限信息(用于访问QQ用户信息)
* @param jsonObject
*/
public static void initOpenidAndToken(JSONObject jsonObject) {
try {
String token = jsonObject.getString(Constants.PARAM_ACCESS_TOKEN);
String expires = jsonObject.getString(Constants.PARAM_EXPIRES_IN);
String openId = jsonObject.getString(Constants.PARAM_OPEN_ID);
if (!TextUtils.isEmpty(token) && !TextUtils.isEmpty(expires)
&& !TextUtils.isEmpty(openId)) {
mTencent.setAccessToken(token, expires);
mTencent.setOpenId(openId);
}
} catch(Exception e) {
}
}
private void onClickLogin() {
if (!mTencent.isSessionValid()) {
mTencent.login(this, "all", loginListener);
}
}
private void updateUserInfo() {
if (mTencent != null && mTencent.isSessionValid()) {
IUiListener listener = new IUiListener() {
@Override
public void onError(UiError e) {
}
@Override
public void onComplete(final Object response) {
Message msg = new Message();
msg.obj = response;
Log.i("tag", response.toString());
msg.what = 0;
mHandler.sendMessage(msg);
}
@Override
public void onCancel() {
}
};
mInfo = new UserInfo(this, mTencent.getQQToken());
mInfo.getUserInfo(listener);
}
}
Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.what == 0) {
JSONObject response = (JSONObject) msg.obj;
if (response.has("nickname")) {
try {
Gson gson=new Gson();
User user=gson.fromJson(response.toString(),User.class);
if (user!=null) {
tv_name.setText("昵称:"+user.getNickname()+" 性别:"+user.getGender()+" 地址:"+user.getProvince()+user.getCity());
tv_content.setText("头像路径:"+user.getFigureurl_qq_2());
Picasso.with(MainActivity.this).load(response.getString("figureurl_qq_2")).into(imageView);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}
};
//qq分享
private void onClickShare() {
final Bundle params = new Bundle();
params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE,
QQShare.SHARE_TO_QQ_TYPE_DEFAULT);
params.putString(QQShare.SHARE_TO_QQ_TITLE, "要分享的标题");
params.putString(QQShare.SHARE_TO_QQ_SUMMARY, "要分享的摘要");
params.putString(QQShare.SHARE_TO_QQ_TARGET_URL,
"http://blog.csdn.net/DickyQie/article/list/1");
params.putString(QQShare.SHARE_TO_QQ_IMAGE_URL,
"http://imgcache.qq.com/qzone/space_item/pre/0/66768.gif");
params.putString(QQShare.SHARE_TO_QQ_APP_NAME, "切切歆语");
params.putString(QQShare.SHARE_TO_QQ_EXT_INT, "其他附加功能");
mTencent.shareToQQ(MainActivity.this, params, new BaseUiListener1());
}
//回调接口 (成功和失败的相关操作)
private class BaseUiListener1 implements IUiListener {
@Override
public void onComplete(Object response) {
doComplete(response);
}
protected void doComplete(Object values) {
}
@Override
public void onError(UiError e) {
}
@Override
public void onCancel() {
}
}
@SuppressWarnings("unused")
private void shareToQQzone() {
try {
final Bundle params = new Bundle();
params.putInt(QzoneShare.SHARE_TO_QZONE_KEY_TYPE,
QzoneShare.SHARE_TO_QZONE_TYPE_IMAGE_TEXT);
params.putString(QzoneShare.SHARE_TO_QQ_TITLE, "切切歆语");
params.putString(QzoneShare.SHARE_TO_QQ_SUMMARY, "sss");
params.putString(QzoneShare.SHARE_TO_QQ_TARGET_URL,
"http://blog.csdn.net/DickyQie/article/list/1");
ArrayList<String> imageUrls = new ArrayList<String>();
imageUrls.add("http://media-cdn.tripadvisor.com/media/photo-s/01/3e/05/40/the-sandbar-that-links.jpg");
params.putStringArrayList(QzoneShare.SHARE_TO_QQ_IMAGE_URL, imageUrls);
params.putInt(QzoneShare.SHARE_TO_QQ_EXT_INT,
QQShare.SHARE_TO_QQ_FLAG_QZONE_AUTO_OPEN);
Tencent mTencent = Tencent.createInstance("1106062414",
MainActivity.this);
mTencent.shareToQzone(MainActivity.this, params,
new BaseUiListener1());
} catch (Exception e) {
}
}
}AndroidManifest
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<activity android:name="com.tencent.open.yyb.AppbarActivity" android:configChanges="orientation|keyboardHidden" android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent.NoTitleBar" /> <activity android:name="com.tencent.connect.avatar.ImageActivity" /> <activity android:name="com.tencent.connect.common.AssistActivity" android:configChanges="orientation|keyboardHidden" android:screenOrientation="behind" android:theme="@android:style/Theme.Translucent.NoTitleBar" /> <activity android:name="com.tencent.tauth.AuthActivity" android:launchMode="singleTask" android:noHistory="true" > <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="tencent1106062414" /> <!--应用的AppId要相同--> </intent-filter> </activity>
<!-- SDK2.1新增获取用户位置信息 --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.GET_TASKS"/>
User包
public class User { private int ret; private String msg; private int is_lost; private String nickname; private String gender; private String province; private String city; private String figureurl; private String figureurl_1; private String figureurl_2; private String figureurl_qq_1; private String figureurl_qq_2; private String is_yellow_vip; private String vip; private String yellow_vip_level; private String level; private String is_yellow_year_vip; public int getRet() { return ret; } public void setRet(int ret) { this.ret = ret; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public int getIs_lost() { return is_lost; } public void setIs_lost(int is_lost) { this.is_lost = is_lost; } public String getNickname() { return nickname; } public void setNickname(String nickname) { this.nickname = nickname; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public String getProvince() { return province; } public void setProvince(String province) { this.province = province; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } public String getFigureurl() { return figureurl; } public void setFigureurl(String figureurl) { this.figureurl = figureurl; } public String getFigureurl_1() { return figureurl_1; } public void setFigureurl_1(String figureurl_1) { this.figureurl_1 = figureurl_1; } public String getFigureurl_2() { return figureurl_2; } public void setFigureurl_2(String figureurl_2) { this.figureurl_2 = figureurl_2; } public String getFigureurl_qq_1() { return figureurl_qq_1; } public void setFigureurl_qq_1(String figureurl_qq_1) { this.figureurl_qq_1 = figureurl_qq_1; } public String getFigureurl_qq_2() { return figureurl_qq_2; } public void setFigureurl_qq_2(String figureurl_qq_2) { this.figureurl_qq_2 = figureurl_qq_2; } public String getIs_yellow_vip() { return is_yellow_vip; } public void setIs_yellow_vip(String is_yellow_vip) { this.is_yellow_vip = is_yellow_vip; } public String getVip() { return vip; } public void setVip(String vip) { this.vip = vip; } public String getYellow_vip_level() { return yellow_vip_level; } public void setYellow_vip_level(String yellow_vip_level) { this.yellow_vip_level = yellow_vip_level; } public String getLevel() { return level; } public void setLevel(String level) { this.level = level; } public String getIs_yellow_year_vip() { return is_yellow_year_vip; } public void setIs_yellow_year_vip(String is_yellow_year_vip) { this.is_yellow_year_vip = is_yellow_year_vip; } }Xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.bawie.dell.gouwuche.MainActivity">
<Button
android:id="@+id/new_login_btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="QQ登录"
/>
<Button
android:id="@+id/new_login_close"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="退出登录"
/>
<Button
android:id="@+id/new_login_shareqq"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="QQ分享"
/>
<Button
android:id="@+id/new_login_shareqzone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="QQ空间分享"
/>
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="用户名:"
android:layout_marginTop="5dp"
/>
<ImageView
android:id="@+id/user_logo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher"
android:layout_marginTop="15dp"
/>
<TextView
android:id="@+id/content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="用户详细信息:"
android:layout_marginTop="15dp"
/>
</LinearLayout>
相关文章推荐
- 获取qq的第三方登录以及分享
- QQ第三方登录分享
- QQ登录 加 分享
- 获取第三方登录(相关信息 新浪微博&微信&QQ)&&登录和分享接口功能
- Android开发 QQ sso登录和分享到QQ好友功能,调用本地QQ客户端
- 友盟QQ第三方分享登录
- Android 微信,QQ,新浪三方登录及分享官方SDK集成
- Android友盟集成QQ、微信、微博等第三方登录与分享
- QQ第三方登录与QQ分享
- android第三方(qq、微信、微博)登录和分享
- QQ登录和分享(精简版)
- Android之第三方平台实现QQ登录和QQ分享
- 升级到IOS9以后,QQ授权登录和QQ分享出现问题,不能正常使用了(二)
- 方维分享去掉淘宝 qq 微博登录的方法
- cordova 实现第三方登录及分享,qq,微信,微博
- android 实现QQ第三方登录,分享功能
- ios9 qq、微信分享和登录
- Android之第三方平台实现QQ登录和QQ分享
- 友盟第三方登入后,进行分享,成功后退出登录,选择QQ再登录,结果程序就崩溃了!!!
- QQ分享每次都要授权登录才能分享 EQQAPIAPPNOTREGISTED