Android QQ第三方登录 分享
2018-01-09 20:35
267 查看
Android 接入QQ登录 共分为6步本文只是对于QQ登录接入一个过程的详细描述,每一步为什么这样做没有做详细解释,但如果按照我说的每一步做下去,就能接入成功的,当成功后,回头看看代码就能完全明白(其实也很简单)。好了接下来看步骤吧!一定会成功的第一步:获取 AppID打开 http://open.qq.com/点击应用接入
![](https://img-blog.csdn.net/20170603095924692?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvWWVfTnVv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
第一次需要按照说明 注册类型 ,如果是小白练手,推荐选择个人通过步骤完成注册在管理中心创建应用选择创建的类型之后将应用的基本信息填写完,其他信息可以以后发布再填,基本信息填写完后点击下方的 保存 按钮之后 APPID就能正常使用。
![](https://img-blog.csdn.net/20170603100710657?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvWWVfTnVv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
第二步 下载 SDK http://wiki.open.qq.com/wiki/mobile/SDK%E4%B8%8B%E8%BD%BD(本文使用的是Android_SDK_V3.2.0(基础包))第三步 接入SDK 下面我会详细讲解 参考是官网的http://wiki.open.qq.com/wiki/%E5%88%9B%E5%BB%BA%E5%B9%B6%E9%85%8D%E7%BD%AE%E5%B7%A5%E7%A8%8B第四步 配置 AndroidManifest
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
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="tencent自己的AppID前边的tencent不删 " />
例如 : <data android:scheme="tencent123123123" />
</intent-filter>
</activity>
<activity
android:name="com.tencent.connect.common.AssistActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:theme="@android:style/Theme.Translucent.NoTitleBar" >
</activity>
Tencent mTencent = Tencent.createInstance(“123123123”,getApplicationContext());//将123123123改为自己的AppID
ImageView QQlogin = (ImageView) findViewById(R.id.login_image_QQlogin);
QQlogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//get_simple_userinfo
mTencent.login(LoginActivity.this,"all",new BaseUiListener());
}
});
2): 回调:在唤起QQ登录后,需要一个回调的类(这个作用是检测是否登录成功),这个类在jar包里已经写好 只要调用即可(我把这个类作为一个内部使用)
[java] view plain copy private class BaseUiListener implements IUiListener {
//这个类需要实现三个方法 onComplete():登录成功需要做的操作写在这里
// onError onCancel 方法具体内容自己搜索
public void onComplete(Object response) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "登录成功", Toast.LENGTH_SHORT).show();
try {
//获得的数据是JSON格式的,获得你想获得的内容
//如果你不知道你能获得什么,看一下下面的LOG
Log.v("----TAG--", "-------------"+response.toString());
openidString = ((JSONObject) response).getString("openid");
mTencent.setOpenId(openidString);
saveUser("44","text","text",1);
mTencent.setAccessToken(((JSONObject) response).getString("access_token"),((JSONObject) response).getString("expires_in"));
Log.v("TAG", "-------------"+openidString);
//access_token= ((JSONObject) response).getString("access_token");
//expires_in = ((JSONObject) response).getString("expires_in");
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
/**到此已经获得OpneID以及其他你想获得的内容了
QQ登录成功了,我们还想获取一些QQ的基本信息,比如昵称,头像什么的,这个时候怎么办?
sdk给我们提供了一个类UserInfo,这个类中封装了QQ用户的一些信息,我么可以通过这个类拿到这些信息
如何得到这个UserInfo类呢?
[java] view plain copy 获取详细信息的UserInfo ,返回的信息参看下面地址: http://wiki.open.qq.com/wiki/%E8%8E%B7%E5%8F%96%E7%94%A8%E6%88%B7%E4%BF%A1%E6%81%AF#1._Tencent.E7.B1.BB.E7.9A.84request.E6.88.96requestAsync.E6.8E.A5.E5.8F.A3.E7.AE.80.E4.BB.8B */
QQToken qqToken = mTencent.getQQToken();
UserInfo info = new UserInfo(getApplicationContext(), qqToken);
// info.getUserInfo(new BaseUIListener(this,"get_simple_userinfo"));
info.getUserInfo(new IUiListener() {
@Override
public void onComplete(Object o) {
//用户信息获取到了
try {
Log.v("用户名", ((JSONObject) o).getString("nickname"));
Log.v("用户姓名", ((JSONObject) o).getString("gender"));
Log.v("UserInfo",o.toString());
Intent intent1 = new Intent(LoginActivity.this,MainActivity.class);
startActivity(intent1);
finish();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void onError(UiError uiError) {
Log.v("UserInfo","onError");
}
@Override
public void onCancel() {
Log.v("UserInfo","onCancel");
}
});
}
@Override
public void onError(UiError uiError) {
Toast.makeText(getApplicationContext(), "onError", Toast.LENGTH_SHORT).show();
}
@Override
public void onCancel() {
Toast.makeText(getApplicationContext(), "onCancel", Toast.LENGTH_SHORT).show();
}
}
3):还有最重要的是在onActivityResult()方法中添加如下代码,不然调用完返回时会报错
[java] view plain copy @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Tencent.onActivityResultData(requestCode, resultCode, data, new BaseUiListener());
if(requestCode == Constants.REQUEST_API) {
if(resultCode == Constants.REQUEST_LOGIN) {
Tencent.handleResultData(data, new BaseUiListener());
}
}
}
4):另外引入的包需要如下:
[java] view plain copy import com.tencent.connect.UserInfo;
import com.tencent.connect.auth.QQToken;
import com.tencent.connect.common.Constants;
import com.tencent.tauth.IUiListener;
import com.tencent.tauth.Tencent;
import com.tencent.tauth.UiError;
下面是完整的Java demo
[plain] view plain copy //这是QQ登录的详细代码直接复制粘贴时可能会使用不了,会有错误的地方
//但整体思路是这样的
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;
import com.tencent.connect.UserInfo;
import com.tencent.connect.auth.QQToken;
import com.tencent.connect.common.Constants;
import com.tencent.tauth.IUiListener;
import com.tencent.tauth.Tencent;
import com.tencent.tauth.UiError;
import org.json.JSONException;
import org.json.JSONObject;
public class LoginActivity extends AppCompatActivity {
public Button bt,zhuce;
private EditText edit_user,edit_pass;
private SharedPreferences sp;
private SharedPreferences.Editor editor;
private String username,userpass,userId;
private Tencent mTencent;
private Button QQ,map;
private String openidString;
private ImageView QQlogin;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_login);
//QQ第三方登录
mTencent = Tencent.createInstance("123123123",getApplicationContext());//这里的“123123123”改为自己的Appid
QQlogin = (ImageView) findViewById(R.id.login_image_QQlogin);
QQlogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//get_simple_userinfo
mTencent.login(LoginActivity.this,"all",new BaseUiListener());
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Tencent.onActivityResultData(requestCode, resultCode, data, new BaseUiListener());
if(requestCode == Constants.REQUEST_API) {
if(resultCode == Constants.REQUEST_LOGIN) {
Tencent.handleResultData(data, new BaseUiListener());
}
}
}
private class BaseUiListener implements IUiListener {
public void onComplete(Object response) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "登录成功", Toast.LENGTH_SHORT).show();
/*
* 下面隐藏的是用户登录成功后 登录用户数据的获取的方法
* 共分为两种 一种是简单的信息的获取,另一种是通过UserInfo类获取用户较为详细的信息
*有需要看看
* */
/* try {
//获得的数据是JSON格式的,获得你想获得的内容
//如果你不知道你能获得什么,看一下下面的LOG
Log.v("----TAG--", "-------------"+response.toString());
openidString = ((JSONObject) response).getString("openid");
mTencent.setOpenId(openidString);
mTencent.setAccessToken(((JSONObject) response).getString("access_token"),((JSONObject) response).getString("expires_in"));
Log.v("TAG", "-------------"+openidString);
//access_token= ((JSONObject) response).getString("access_token"); //expires_in = ((JSONObject) response).getString("expires_in");
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
*//**到此已经获得OpneID以及其他你想获得的内容了
QQ登录成功了,我们还想获取一些QQ的基本信息,比如昵称,头像什么的,这个时候怎么办?
sdk给我们提供了一个类UserInfo,这个类中封装了QQ用户的一些信息,我么可以通过这个类拿到这些信息
如何得到这个UserInfo类呢? *//*
QQToken qqToken = mTencent.getQQToken();
UserInfo info = new UserInfo(getApplicationContext(), qqToken);
// info.getUserInfo(new BaseUIListener(this,"get_simple_userinfo"));
info.getUserInfo(new IUiListener() {
@Override
public void onComplete(Object o) {
//用户信息获取到了
try {
Toast.makeText(getApplicationContext(), ((JSONObject) o).getString("nickname")+((JSONObject) o).getString("gender"), Toast.LENGTH_SHORT).show();
Log.v("UserInfo",o.toString());
Intent intent1 = new Intent(LoginActivity.this,MainActivity.class);
startActivity(intent1);
finish();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void onError(UiError uiError) {
Log.v("UserInfo","onError");
}
@Override
public void onCancel() {
Log.v("UserInfo","onCancel");
}
});*/
}
@Override
public void onError(UiError uiError) {
Toast.makeText(getApplicationContext(), "onError", Toast.LENGTH_SHORT).show();
}
@Override
public void onCancel() {
Toast.makeText(getApplicationContext(), "onCancel", Toast.LENGTH_SHORT).show();
}
}
QQ分享的实现
1.在你要调用分享的Activity的onCreate里
mTencent = Tencent.createInstance(APP_ID, this.getApplicationContext());
IUiListener的实现示例代码如下:
private class BaseUiListener implements IUiListener {
@Override
public void onComplete(JSONObject response) {
mBaseMessageText.setText("onComplete:");
mMessageText.setText(response.toString());
doComplete(response);
}
protected void doComplete(JSONObject values) {
}
@Override
public void onError(UiError e) {
showResult("onError:", "code:" + e.errorCode + ", msg:"
+ e.errorMessage + ", detail:" + e.errorDetail);
}
@Override
public void onCancel() {
showResult("onCancel", "");
}
}好了 可以实现分享了 1.QQ好友分享实现
本接口支持3种模式,每种模式的参数设置不同,下面分别进行介绍:
(1) 分享图文消息
调用分享接口的示例代码如下:
示例代码如下:
第一次需要按照说明 注册类型 ,如果是小白练手,推荐选择个人通过步骤完成注册在管理中心创建应用选择创建的类型之后将应用的基本信息填写完,其他信息可以以后发布再填,基本信息填写完后点击下方的 保存 按钮之后 APPID就能正常使用。
第二步 下载 SDK http://wiki.open.qq.com/wiki/mobile/SDK%E4%B8%8B%E8%BD%BD(本文使用的是Android_SDK_V3.2.0(基础包))第三步 接入SDK 下面我会详细讲解 参考是官网的http://wiki.open.qq.com/wiki/%E5%88%9B%E5%BB%BA%E5%B9%B6%E9%85%8D%E7%BD%AE%E5%B7%A5%E7%A8%8B第四步 配置 AndroidManifest
1):权限声明:
[java] view plain copy <uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
2):加入Activity声明(这两个Activity是在jar包已经定义的好的,需要声明才能使用)
[java] view plain copy <activityandroid: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="tencent自己的AppID前边的tencent不删 " />
例如 : <data android:scheme="tencent123123123" />
</intent-filter>
</activity>
<activity
android:name="com.tencent.connect.common.AssistActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:theme="@android:style/Theme.Translucent.NoTitleBar" >
</activity>
第五步Java文件编写(下面代码全是在LoginActivity.Java)
1):监听事件添加:在xml文件中加入一个imageView用来唤起QQ登录 在Java文件中的代码如下
[java] view plain copy //QQ第三方登录Tencent mTencent = Tencent.createInstance(“123123123”,getApplicationContext());//将123123123改为自己的AppID
ImageView QQlogin = (ImageView) findViewById(R.id.login_image_QQlogin);
QQlogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//get_simple_userinfo
mTencent.login(LoginActivity.this,"all",new BaseUiListener());
}
});
2): 回调:在唤起QQ登录后,需要一个回调的类(这个作用是检测是否登录成功),这个类在jar包里已经写好 只要调用即可(我把这个类作为一个内部使用)
[java] view plain copy private class BaseUiListener implements IUiListener {
//这个类需要实现三个方法 onComplete():登录成功需要做的操作写在这里
// onError onCancel 方法具体内容自己搜索
public void onComplete(Object response) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "登录成功", Toast.LENGTH_SHORT).show();
try {
//获得的数据是JSON格式的,获得你想获得的内容
//如果你不知道你能获得什么,看一下下面的LOG
Log.v("----TAG--", "-------------"+response.toString());
openidString = ((JSONObject) response).getString("openid");
mTencent.setOpenId(openidString);
saveUser("44","text","text",1);
mTencent.setAccessToken(((JSONObject) response).getString("access_token"),((JSONObject) response).getString("expires_in"));
Log.v("TAG", "-------------"+openidString);
//access_token= ((JSONObject) response).getString("access_token");
//expires_in = ((JSONObject) response).getString("expires_in");
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
/**到此已经获得OpneID以及其他你想获得的内容了
QQ登录成功了,我们还想获取一些QQ的基本信息,比如昵称,头像什么的,这个时候怎么办?
sdk给我们提供了一个类UserInfo,这个类中封装了QQ用户的一些信息,我么可以通过这个类拿到这些信息
如何得到这个UserInfo类呢?
[java] view plain copy 获取详细信息的UserInfo ,返回的信息参看下面地址: http://wiki.open.qq.com/wiki/%E8%8E%B7%E5%8F%96%E7%94%A8%E6%88%B7%E4%BF%A1%E6%81%AF#1._Tencent.E7.B1.BB.E7.9A.84request.E6.88.96requestAsync.E6.8E.A5.E5.8F.A3.E7.AE.80.E4.BB.8B */
QQToken qqToken = mTencent.getQQToken();
UserInfo info = new UserInfo(getApplicationContext(), qqToken);
// info.getUserInfo(new BaseUIListener(this,"get_simple_userinfo"));
info.getUserInfo(new IUiListener() {
@Override
public void onComplete(Object o) {
//用户信息获取到了
try {
Log.v("用户名", ((JSONObject) o).getString("nickname"));
Log.v("用户姓名", ((JSONObject) o).getString("gender"));
Log.v("UserInfo",o.toString());
Intent intent1 = new Intent(LoginActivity.this,MainActivity.class);
startActivity(intent1);
finish();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void onError(UiError uiError) {
Log.v("UserInfo","onError");
}
@Override
public void onCancel() {
Log.v("UserInfo","onCancel");
}
});
}
@Override
public void onError(UiError uiError) {
Toast.makeText(getApplicationContext(), "onError", Toast.LENGTH_SHORT).show();
}
@Override
public void onCancel() {
Toast.makeText(getApplicationContext(), "onCancel", Toast.LENGTH_SHORT).show();
}
}
3):还有最重要的是在onActivityResult()方法中添加如下代码,不然调用完返回时会报错
[java] view plain copy @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Tencent.onActivityResultData(requestCode, resultCode, data, new BaseUiListener());
if(requestCode == Constants.REQUEST_API) {
if(resultCode == Constants.REQUEST_LOGIN) {
Tencent.handleResultData(data, new BaseUiListener());
}
}
}
4):另外引入的包需要如下:
[java] view plain copy import com.tencent.connect.UserInfo;
import com.tencent.connect.auth.QQToken;
import com.tencent.connect.common.Constants;
import com.tencent.tauth.IUiListener;
import com.tencent.tauth.Tencent;
import com.tencent.tauth.UiError;
第六步 对于布局文件 只要有一个控件能够触发 事件就可以(setOnClickListener)本博文 使用的是一个imageView控件 在第五步的1):监听事件的添加中有体现
下面是完整的Java demo
[plain] view plain copy //这是QQ登录的详细代码直接复制粘贴时可能会使用不了,会有错误的地方
//但整体思路是这样的
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;
import com.tencent.connect.UserInfo;
import com.tencent.connect.auth.QQToken;
import com.tencent.connect.common.Constants;
import com.tencent.tauth.IUiListener;
import com.tencent.tauth.Tencent;
import com.tencent.tauth.UiError;
import org.json.JSONException;
import org.json.JSONObject;
public class LoginActivity extends AppCompatActivity {
public Button bt,zhuce;
private EditText edit_user,edit_pass;
private SharedPreferences sp;
private SharedPreferences.Editor editor;
private String username,userpass,userId;
private Tencent mTencent;
private Button QQ,map;
private String openidString;
private ImageView QQlogin;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_login);
//QQ第三方登录
mTencent = Tencent.createInstance("123123123",getApplicationContext());//这里的“123123123”改为自己的Appid
QQlogin = (ImageView) findViewById(R.id.login_image_QQlogin);
QQlogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//get_simple_userinfo
mTencent.login(LoginActivity.this,"all",new BaseUiListener());
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Tencent.onActivityResultData(requestCode, resultCode, data, new BaseUiListener());
if(requestCode == Constants.REQUEST_API) {
if(resultCode == Constants.REQUEST_LOGIN) {
Tencent.handleResultData(data, new BaseUiListener());
}
}
}
private class BaseUiListener implements IUiListener {
public void onComplete(Object response) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "登录成功", Toast.LENGTH_SHORT).show();
/*
* 下面隐藏的是用户登录成功后 登录用户数据的获取的方法
* 共分为两种 一种是简单的信息的获取,另一种是通过UserInfo类获取用户较为详细的信息
*有需要看看
* */
/* try {
//获得的数据是JSON格式的,获得你想获得的内容
//如果你不知道你能获得什么,看一下下面的LOG
Log.v("----TAG--", "-------------"+response.toString());
openidString = ((JSONObject) response).getString("openid");
mTencent.setOpenId(openidString);
mTencent.setAccessToken(((JSONObject) response).getString("access_token"),((JSONObject) response).getString("expires_in"));
Log.v("TAG", "-------------"+openidString);
//access_token= ((JSONObject) response).getString("access_token"); //expires_in = ((JSONObject) response).getString("expires_in");
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
*//**到此已经获得OpneID以及其他你想获得的内容了
QQ登录成功了,我们还想获取一些QQ的基本信息,比如昵称,头像什么的,这个时候怎么办?
sdk给我们提供了一个类UserInfo,这个类中封装了QQ用户的一些信息,我么可以通过这个类拿到这些信息
如何得到这个UserInfo类呢? *//*
QQToken qqToken = mTencent.getQQToken();
UserInfo info = new UserInfo(getApplicationContext(), qqToken);
// info.getUserInfo(new BaseUIListener(this,"get_simple_userinfo"));
info.getUserInfo(new IUiListener() {
@Override
public void onComplete(Object o) {
//用户信息获取到了
try {
Toast.makeText(getApplicationContext(), ((JSONObject) o).getString("nickname")+((JSONObject) o).getString("gender"), Toast.LENGTH_SHORT).show();
Log.v("UserInfo",o.toString());
Intent intent1 = new Intent(LoginActivity.this,MainActivity.class);
startActivity(intent1);
finish();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void onError(UiError uiError) {
Log.v("UserInfo","onError");
}
@Override
public void onCancel() {
Log.v("UserInfo","onCancel");
}
});*/
}
@Override
public void onError(UiError uiError) {
Toast.makeText(getApplicationContext(), "onError", Toast.LENGTH_SHORT).show();
}
@Override
public void onCancel() {
Toast.makeText(getApplicationContext(), "onCancel", Toast.LENGTH_SHORT).show();
}
}
QQ分享的实现
1.在你要调用分享的Activity的onCreate里
mTencent = Tencent.createInstance(APP_ID, this.getApplicationContext());
2. 实现回调
所有的SDK接口调用,都会传入一个回调,用以接收SDK返回的调用结果。回调的主要接口有两种:2.1 实现回调 IUiListener
调用SDK已经封装好的接口时,例如:登录、快速支付登录、应用分享、应用邀请等接口,需传入该回调的实例。IUiListener的实现示例代码如下:
private class BaseUiListener implements IUiListener {
@Override
public void onComplete(JSONObject response) {
mBaseMessageText.setText("onComplete:");
mMessageText.setText(response.toString());
doComplete(response);
}
protected void doComplete(JSONObject values) {
}
@Override
public void onError(UiError e) {
showResult("onError:", "code:" + e.errorCode + ", msg:"
+ e.errorMessage + ", detail:" + e.errorDetail);
}
@Override
public void onCancel() {
showResult("onCancel", "");
}
}好了 可以实现分享了 1.QQ好友分享实现
1.13 分享消息到QQ(无需QQ登录)
分享消息到QQ的接口,可将新闻、图片、文字、应用等分享给QQ好友、群和讨论组。Tencent类的shareToQQ函数可直接调用,不用用户授权(使用手机QQ当前的登录态)。调用将打开分享的界面,用户选择好友、群或讨论组之后,点击确定即可完成分享,并进入与该好友进行对话的窗口。本接口支持3种模式,每种模式的参数设置不同,下面分别进行介绍:
(1) 分享图文消息
调用分享接口的示例代码如下:
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://www.qq.com/news/1.html"); 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, "测试应用222222"); params.putInt(QQShare.SHARE_TO_QQ_EXT_INT, "其他附加功能"); mTencent.shareToQQ(MainActivity.this, params, new BaseUiListener()); }2.QQ空间分享实现
1.14 分享到QQ空间(无需QQ登录)
完善了分享到QZone功能,分享类型参数Tencent.SHARE_TO_QQ_KEY_TYPE,目前只支持图文分享。Tencent. shareToQzone()函数可直接调用,不用用户授权(使用手机QQ当前的登录态)。调用后将打开手机QQ内QQ空间的界面,或者用浏览器打开QQ空间页面进行分享操作。示例代码如下:
private void shareToQzone () { //分享类型 params.putString(QzoneShare.SHARE_TO_QQ_KEY_TYPE,SHARE_TO_QZONE_TYPE_IMAGE_TEXT ); params.putString(QzoneShare.SHARE_TO_QQ_TITLE, "标题");//必填 params.putString(QzoneShare.SHARE_TO_QQ_SUMMARY, "摘要");//选填 params.putString(QzoneShare.SHARE_TO_QQ_TARGET_URL, "跳转URL");//必填 params.putStringArrayList(QzoneShare.SHARE_TO_QQ_IMAGE_URL, "图片链接ArrayList"); mTencent.shareToQzone(activity, params, new BaseUiListener()); }
相关文章推荐
- Android第三方分享和登录之微信及QQ篇
- Android 第三方QQ、微信、微博登录分享
- android第三方(qq、微信、微博)登录和分享
- Android友盟集成QQ、微信、微博等第三方登录与分享
- Android调用第三方QQ登录代码分享
- Android第三方QQ登录、获取个人信息、分享实现
- Android之第三方平台实现QQ登录和QQ分享
- Android之第三方平台实现QQ登录和QQ分享
- Android之第三方平台实现QQ登录和QQ分享
- Android之第三方平台实现QQ登录和QQ分享
- android 实现QQ第三方登录,分享功能
- Android使用友盟集成QQ、微信、微博等第三方分享与登录方法详解
- android接入原生第三方登录(微信登录、QQ登录、新浪微博登录)
- Android使用ShareSDK集成第三方登录和分享(v3.1.2)
- Android应用之——微信微博第三方sdk登录分享使用过程中的一些常见问题
- android接入原生第三方登录(微信登录、QQ登录、新浪微博登录)
- 实现QQ登录第三方APP(Android)
- Android开发记录16-友盟第三方登录、分享实现
- Android 使用第三方登录(QQ和新浪微博)
- android使用友盟实现第三方登录、分享以及微信回调无反应问题解决办法