android 相对布局开发! qq项目,如何将qq消息设置为xml布局,我想点击消息跳转到其他activ

[Android]调用另一个布局xml文件里面的button,并绑定
做的项目中有一个功能是在当前的Activity生成一个view,然后点击view上的button,跳转到另外一个Activity,中间碰到了一些问
做的项目中有一个功能是在当前的Activity生成一个view,然后点击view上的button,跳转到另外一个Activity,中间碰到了一些问题,现在归纳总结一下:
1.如何正确获取另一个Xml布局文件中的控件?
一般我们都会用findViewById来获取,但是该方法只能获取setContentView(R.layout.main)中参数main.xml上的控件,如果想获取另外一个xml文件上的控件,使用findViewById方法会报错。
我们可以用以下的方法来获取另一个XML(本文中是popup_window.xml)上的控件:
View view = View.inflate(getApplicationContext(), R.layout.popup_window null);
button = (Button)view.findViewById(R.id.button);
2.如何使得该button能触发OnClick定义的操作(本文中转到另一个Activtiy)
获得button以后,绑定上OnClickListener监听器,但是点击没有任何反应,此处困扰了我好久,后来终于发现原因所在:
setOnClickListener的操作不能放在OnCreate里面,一定要和创建该button所在的view的语句在一起:
button1setOnClickListener(new OnClickListener() {
public void onClick(View v) {
View view = View.inflate(getApplicationContext(), R.layout.popup_nevigation, null);
mpopupWindow = new PopupWindow(nevigationView);
mpopupWindow.setWidth(LayoutParams.MATCH_PARENT);
button2.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
System.out.println(&invoked!&);
Intent intent = new Intent(getApplicationContext(),PharmcyInfo03Activity.class);
startActivity(intent);
上一篇:解决android.os.NetworkOnMainThreadException
下一篇:BaiDuMap
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
核心技术类目
Android(5)
2014年01月(7)
1.Android开发环境快速搭建(58)
2.Android之Hello World(40)
解决android.os.NetworkOnMainThreadException(32)
Android工具ADB无法打开(for Windows)(31)
Eclipse里面查看Android源代码(24)
[Android]调用另一个布局xml文件里面的button,并绑定OnClickListener监听器(16)
BaiDuMap(9)
1.Android开发环境快速搭建(2)
2.Android之Hello World(1)
Eclipse里面查看Android源代码(0)
Android工具ADB无法打开(for Windows)(0)
解决android.os.NetworkOnMainThreadException(0)
[Android]调用另一个布局xml文件里面的button,并绑定OnClickListener监听器(0)
BaiDuMap(0)
放到button.onClickListener中
aibieqing241:
我想知道你不放到oncreate里,那你放到哪里?
xiaoxueheha:
谢谢楼主哦
你好, 你还想知道什么内容?直接打开eclipse就可以了,环境就已经搭好了,不需要别的步骤了
我擦,这说了半截就完了?
(责任编辑:赵红霞)
------分隔线----------------------------
将二叉树在控制台按树形打印...
/axlxa2317/%E6%9D%AD%E5%B7%9E%E4%B8%8B%E5%9F%8E%E5%8C%BA%...
/axlxa2317/%E6%88%90%E9%83%BD%E9%AB%98%E6%96%B0%E5%8C%BA%...
unity3d开发游戏真是一个好东西,但是不会写脚本真是一件悲哀的...
T1是一棵含有几百万个节点的树,T2含有几百个节点。判断T2是否...
Train Problem ITime Limit:
MS (Java/Others)Memory Limit:Android_API调用说明
除注销和获取应用好友API没有UI交互外,调用以下SDK提供的API后,会弹出相应的界面,以完成后续的操作。
通过调用Tencent类的login函数发起登录/校验登录态。
该API具有两个作用:
(1)如果开发者没有调用mTencent实例的setOpenId、setAccessToken API,则该API执行正常的登录操作;
(2)如果开发者先调用mTencent实例的setOpenId、setAccessToken API,则该API执行校验登录态的操作。如果登录态有效,则返回成功给应用,如果登录态失效,则会自动进入登录流程,将最新的登录态数据返回给应用。
建议开发者在每次应用启动时调用一次该API(先调用setOpenId、setAccessToken),以确保每次打开应用时用户都是有登录态的。
调用登录API的示例代码如下:
private void doLogin() {
IUiListener listener = new BaseUiListener() {
protected void doComplete(JSONObject values) {
updateLoginButton();
mTencent.login(this, SCOPE, listener);
调用登录API参数说明如下:
调用者activity。应用使用SDK时,会从应用自己的Activity跳转到SDK的Activity,应用调用SDK的Activity即为这里的调用者activity。
应用需要获得哪些API的权限,由“,”分隔。
例如:SCOPE = “get_user_info,add_t”;所有权限用“all”
回调API,IUiListener实例。
注:在某些低端机上调用登录后,由于内存紧张导致APP被系统回收,登录成功后无法成功回传数据。
解决办法如下
在调用login的Activity或者Fragment重写onActivityResult方法,示例代码如下:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == Constants.REQUEST_API) {
if(resultCode == Constants.RESULT_LOGIN) {
mTencent.handleLoginData(data, loginListener);
super.onActivityResult(requestCode, resultCode, data);
通过调用Tencent类的logout函数注销。
调用注销API的示例代码如下:
mTencent.logout(this);
调用注销API参数说明如下:
调用者的context。Context是上下文的意思,每一个Activity都有对应的Context。示例中的this为调用者Activity对应的Context。
特别声明:该接口目前仅支持白名单应用。出于信息安全的考虑,本接口目前升级中。升级完成前暂不接受开发者的授权申请。升级完成后,所有接入QQ登录的开发者将均可调用。 已接入过该接口的开发者,不需要更改调用的接口,将自动兼容。
邀请好友的基本流程为:
(1)判断用户是否已经登录,且应用是否获取了openid;
(2)创建一个Bundle,并填入必要参数;
(3)调用SDK中Tencent类的inviteAPI,启动邀请界面。
通过调用Tencent类的invite函数实现邀请功能。
调用邀请API的示例代码如下:
private void onClickInvite() {
if (mTencent.isSessionValid() && mTencent.getOpenId()&!= null) {
Bundle params = new Bundle();
params.putString(Constants.PARAM_APP_ICON,
&/qzone/space_item/pre/0/66768.gif&);
params.putString(Constants.PARAM_APP_DESC,
&AndroidSdk_1_3: invite description!&);
params.putString(Constants.PARAM_APP_CUSTOM,
&AndroidSdk_1_3: invite message!&);
params.putString(Constants.PARAM_ACT, &进入应用&);
mTencent.invite(MainActivity.this, params, new BaseUiListener());
调用邀请API参数说明如下:
Constants.PARAM_APP_ICON
邀请弹框中显示的应用图标的URL。
Constants.PARAM_APP_DESC
邀请弹框中显示的邀请内容。
Constants.PARAM_SOURCE
由开发者自定义该参数内容,用于判断好友来源。
邀请成功后,被邀请方通过邀请链接进入应用时会携带该参数并透传给应用。
应用分享的基本流程为:
(1)判断用户是否已经登录,且应用是否获取了openid;
(2)创建一个Bundle,并填入必要参数;
(3)调用SDK中Tencent类的storyAPI,启动分享界面。
通过调用Tencent类的story函数实现分享功能。
调用分享API的示例代码如下:
private void onClickStory() {
if (mTencent.isSessionValid() && mTencent.getOpenId()&!= null) {
Bundle params = new Bundle();
params.putString(Constants.PARAM_TITLE,
&AndroidSdk_1_3:UiStory title&);
params.putString(Constants.PARAM_COMMENT,
&AndroidSdk_1_3: UiStory comment&);
params.putString(Constants.PARAM_IMAGE,
&/qzone/space_item/pre/0/66768.gif&);
params.putString(Constants.PARAM_SUMMARY,
&AndroidSdk_1_3: UiStory summary&);
params.putString(
Constants.PARAM_PLAY_URL,
&/player.php/Type/Folder/&
+ &Fid//Ob/1/Pt/0/sid/XMzA0NDM2NTUy/v.swf&);
mTencent.story(MainActivity.this, params, new BaseUiListener());
调用分享API参数说明如下:
Constants.PARAM_TITLE
分享的标题。
Constants.PARAM_IMAGE
分享的图片URL。
Constants.PARAM_COMMENT
用户分享时的评论内容,可由用户输入。
Constants.PARAM_SUMMARY
分享的故事摘要。
Constants.PARAM_SOURCE
由开发者自定义该参数内容,用于判断好友来源。
应用分享成功后,被邀请方通过邀请链接进入应用时会携带该参数并透传给应用。
Constants.PARAM_ACT
分享feeds中显示的操作区文字,参数值可为:'进入应用', '领取奖励', '获取能量', '帮助TA'。
Constants.PARAM_PLAY_URL
分享内容中携带的视频链接。
特别声明:从sdk2.4开始,该能力已与shareToQQ合并,建议使用新接口,该接口后续版本会逐渐不再支持。
特别声明:出于信息安全的考虑,本API仅对可信赖的合作应用开放。已经成功接入“QQ登录”的应用需提交申请以获取访问本API的权限。
设置QQ头像使用Tencent类中的setAvatarAPI,setAvatar使用了一个Activity来让用户调整图片,因此要在项目的AndroidManifest.xml中增加一个Activity配置,如下:
&application&
&activity android:name=&com.tencent.plus.ImageActivity& /&
&/application&
设置头像失败将在SDK自带的界面上提示用户重试,但可以指定设置成功后将跳转到哪个Activity。若不指定,则返回上一个Activity。
setAvatar的API格式如下:
setAvatar(Activity activity, Bundle params)
setAvatar(Activity activity, Bundle params, IUiListener listener)
setAvatar(Activity activity, Bundle params, IUiListener listener, int enterAnim, int exitAnim)
(1)Android_SDK_V1.6版本支持传入IUiListener,用于获得设置头像成功或者出错的通知。如果传入了IUiListener,则无需在Params中传入ReturnActivity,跳转逻辑在IUiListener#onComplete的实现中完成;
(2)setAvatar(Activity activity, Bundle params) 已经不推荐使用,请更换为支持IUiListener的版本;
(3)Android_SDK_V1.6版还提供了切换动画的支持(enterAnim和exitAnim),其值为动画的资源文件(XML),可以查看Demo文件夹中的 /res/anim/zoomin.xml和zoomout.xml获得详细示例。
设置QQ头像基本流程为:
(1)判断用户是否存在登录态并且是否获取了openid;
(2)创建一个Bundle,并填入必要参数;
(3)调用SDK中Tencent类的setAvatar方法,启动设置头像界面。
调用设置QQ头像API的示例代码如下:
private void onClick() {
if (mTencent.isSessionValid() && mTencent.getOpenId()&!= null) {
Bundle params = new Bundle();
params.putString(Constants.PARAM_AVATAR_URI,&xxx&);
params.putString(Constants.PARAM_AVATAR_RETURN_ACTIVITY, &com.tencent.sample.ReturnActivity&);
//注意:SDK 1.4 不支持传入listener, 该参数是V1.6新增的
mTencent.setAvatar(this, params, new BaseUiListener());
//指定切换动画的调用形式(V1.6新增)
mTencent.setAvatar(this,params,new BaseUiListener(),
R.anim.zoomin, R.anim.zoomout);
调用设置QQ头像API参数说明如下:
Constants.PARAM_AVATAR_URI
将要设置为QQ头像的图片的本地路径,不支持网络图片,不支持动态图(gif),如果传入gif格式的图片,则只显示和使用第一帧的画面。
Constants.PARAM_AVATAR_RETURN_ACTIVITY
指定设置QQ头像成功后,将要跳转到的Activity,值为包括完整包名的Activity的类名字符串,默认将返回到上一个Activity。
注:该参数为旧参数,不建议再使用,如果要接收设置头像的回调,请传入IUiListener参数。
当应用调用API返回没有权限(返回码为100030)时,可以调用增量授权函数让用户重新进行授权。调用时所使用的参数跟登录是一样的,只是在授权页面那里只会显示要增量授权的项,即所传的scope参数。
这里的scope参数跟登录时所传的scope参数作用是不一样的,这里只需要传需要增量授权的项,即用户之前没有授权的项。一般来说,就是前面调用失败的那个API的scope。
通过调用Tencent类的reAuth函数进行授权。
调用增量授权API的示例代码如下:
//调用&add_topic& API的listener
IUiListener listener = new BaseUiListener() {
protected void doComplete(JSONObject response, Object state) {
int ret=response.getInt(&ret&);
if(ret==100030){
//这里进行增量授权的操作
if(mNeedReAuth){
Runnable r=new Runnable(){
public void run(){
mTencent.reAuth(MainActivity.this,&add_topic&,new BaseUiListener());
MainActivity.this.runOnUiThread(r);
调用增量授权API参数说明如下:
调用者activity。应用使用SDK时,会从应用自己的Activity跳转到SDK的Activity,应用调用SDK的Activity即为这里的调用者activity。
应用需要获得哪些API的权限,由“,”分隔。
例如:SCOPE = “get_user_info,add_t”;
回调API,IUiListener实例。
特别声明:该接口目前仅支持白名单应用。出于信息安全的考虑,本接口目前升级中。升级完成前暂不接受开发者的授权申请。升级完成后,所有接入QQ登录的开发者将均可调用。 已接入过该接口的开发者,不需要更改调用的接口,将自动兼容。
通过调用Tencent类的ask函数发起请求。
调用发送请求API的示例代码如下:
private void onClickAsk() {
if (mTencent.isSessionValid() && mTencent.getOpenId()&!= null) {
Bundle b = new Bundle();
b.putString(Constants.PARAM_RECEIVER, &1EE42D88FEC44B&);
b.putString(Constants.PARAM_TITLE, &title字段测试&);
b.putString(Constants.PARAM_SEND_MSG, &msg字段测试&);
b.putString(Constants.PARAM_IMG_URL, &/qzonestyle/act/qzone_app_img/app888_888_75.png&);
b.putString(&exclude&, &&);
b.putString(&specified&, &&);
b.putString(&only&, &0&); // 0或者1
b.putString(Constants.PARAM_SOURCE, URLEncoder.encode(&&));
mTencent.ask(this, b, new BaseUiListener());
调用发送请求API参数说明如下:
Constants.PARAM_RECEIVER
若receiver包含OpenID,则表示使用模式一(应用指定接收者模式),授权使用应用内关系链的应用才可使用模式一。
(1)传入的OpenID必须为应用内关系链,即为已安装该应用的QQ好友;
(2)传入个数不得超过10个,若超过10个则自动截取前10个,剩余舍弃。
若receiver为空,代表使用模式二(用户指定接收者模式)。
Constants.PARAM_TITLE
免费礼物或请求名称(最多6个汉字)。
Constants.PARAM_SEND_MSG
礼物或请求的默认赠言,由应用传入,当应用未传入时使用系统默认赠言。
长度限制:35个汉字以内,超过限制自动截断。
Constants.PARAM_IMG_URL
请求或礼物配图的URL。如果不传,则默认在弹框中显示应用的icon。
在用户自己指定好友的场景中,如果开发者不希望某些用户显示在好友选择器中,可传入这些用户的openid,多个openid之间用“,”分隔(“exclude”和“specified”一共最多可传入50个openid),好友选择器则不显示这些openid对应的用户。
在用户自己指定好友的场景中,如果开发者需要在好友选择器中显示指定的用户,可传入这些用户的openid,多个openid之间用“,”分隔(“exclude”和“specified”一共最多可传入50个openid),好友选择器会显示这些openid对应的用户。
仅当设置了“specified”,需要传入该参数,用于标识是否在好友选择器中只显示“specified”指定的用户。默认值为“0”。
“0”:显示“specified”指定的用户,同时显示好友列表和已安装好友。
“1”:只显示“specified”指定的用户,无好友列表和已安装好友。此时必须保证“specified”有可用的openid传入,否则会报错。
Constants.PARAM_SOURCE
由开发者自定义该参数内容,用于判断用户接收的哪个好友的礼物或请求。
用户A向C赠送礼物/发送好友请求时,source的值为“openid=001”,用户B向C赠送礼物/发送好友请求时,source的值为“openid=002”。当用户C点击链接进入免费礼物或好友请求的查看页面时,url中会携带app_custom参数,app_custom的值为“openid=001”,说明C响应的是A的请求,如果app_custom的值为“openid=002”,说明C响应的是B的请求。
特别声明:该接口目前仅支持白名单应用。出于信息安全的考虑,本接口目前升级中。升级完成前暂不接受开发者的授权申请。升级完成后,所有接入QQ登录的开发者将均可调用。 已接入过该接口的开发者,不需要更改调用的接口,将自动兼容。
通过调用Tencent类的gift函数发起请求。
调用赠送礼物API的示例代码如下:
private void onClickGift() {
if (mTencent.isSessionValid() && mTencent.getOpenId()&!= null) {
Bundle b = new Bundle();
b.putString(Constants.PARAM_RECEIVER, &1EE42D88FEC44B&);
b.putString(Constants.PARAM_TITLE, &title字段测试&);
b.putString(Constants.PARAM_SEND_MSG, &msg字段测试&);
b.putString(Constants.PARAM_IMG_URL, &/qzonestyle/act/qzone_app_img/app888_888_75.png&);;
b.putString(&exclude&, &&);
b.putString(&specified&, &&);
b.putString(&only&, &0&); // 0或者1
b.putString(Constants.PARAM_SOURCE, URLEncoder.encode(&&));
mTencent.gift(this, b, new BaseUiListener());
调用赠送礼物API的参数与发送请求API的参数相同。
特别声明:该接口目前仅支持白名单应用。出于信息安全的考虑,本接口目前升级中。升级完成前暂不接受开发者的授权申请。升级完成后,所有接入QQ登录的开发者将均可调用。 已接入过该接口的开发者,不需要更改调用的接口,将自动兼容。
通过调用Tencent类的challenge函数发送挑战信息。
调用发送挑战API的示例代码如下:
private void onClickChallenge() {
if (mTencent.isSessionValid() && mTencent.getOpenId()&!= null) {
Bundle b = new Bundle();
b.putString(Constants.PARAM_RECEIVER, &1EE42D88FEC44B&);
b.putString(Constants.PARAM_SEND_MSG, &向某某某发起挑战&);
b.putString(Constants.PARAM_IMG_URL, &/qzonestyle/act/qzone_app_img/app888_888_75.png&);;
b.putString(Constants.PARAM_SOURCE, URLEncoder.encode(&&));
mTencent.challenge(this, b, new BaseUiListener());
调用挑战API参数说明如下:
Constants.PARAM_RECEIVER
炫耀/挑战的用户的openid,应用传入的openid必须为当前用户的QQ好友且对方必须为已安装用户。
Receiver只能为1个,每天针对同一个好友只能挑战/炫耀一次。
Constants.PARAM_SEND_MSG
炫耀/挑战中的内容描述。
长度限制:50个汉字(100个字符)以内,超过限制则自动从末尾截断。
Constants.PARAM_IMG_URL
炫耀/挑战场景图的URL。
Constants.PARAM_SOURCE
透传参数,由开发者自定义该参数内容。开发者可根据这个参数的内容,判断被炫耀/挑战的用户是点击哪个好友发送的信息。
用户A向C发送炫耀/挑战信息时,source的值为“openid=001”,用户B向C发送炫耀/挑战信息时,source的值为“openid=002”。当用户C点击信息链接进入应用时,url中会携带app_custom参数,如果app_custom的值为“openid=001”,说明C点击的信息是A发送的,如果app_custom的值为“openid=002”,说明C点击的信息是B发送的。
特别声明:该接口目前仅支持白名单应用。出于信息安全的考虑,本接口目前升级中。升级完成前暂不接受开发者的授权申请。升级完成后,所有接入QQ登录的开发者将均可调用。 已接入过该接口的开发者,不需要更改调用的接口,将自动兼容。
通过调用Tencent类的brag函数实现向好友炫耀的功能。
调用炫耀API的示例代码如下:
private void onClickBrag() {
if (mTencent.isSessionValid() && mTencent.getOpenId()&!= null) {
Bundle b = new Bundle();
b.putString(Constants.PARAM_RECEIVER, &1EE42D88FEC44B&);
b.putString(Constants.PARAM_SEND_MSG, &向某某某炫耀一下&);
b.putString(Constants.PARAM_IMG_URL, &/qzonestyle/act/qzone_app_img/app888_888_75.png&);
b.putString(Constants.PARAM_SOURCE, URLEncoder.encode(&&));
mTencent.brag(this, b, new BaseUiListener());
调用炫耀API的参数与发送挑战API的参数相同。
之前的API使用get_simple_userinfo, 修改为get_user_info。
调用获取用户信息API的示例代码如下:
UserInfo info = new UserInfo(this, MainActivity.mQQAuth.getQQToken());
info.getUserInfo(new BaseUIListener(this,&get_simple_userinfo&));
本接口用于发送一条带有图片的微博。
调用发布带图微博API的示例代码如下:
private void onClickUserInfo() {
Bundle bundle = new Bundle();
bundle.putString(&format&, &json&);
bundle.putString(&content&, &test add pic with url&);
// 把 bitmap 转换为 byteArray , 用于发送请求
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
pressFormat.JPEG, 40, baos);
byte[] buff = baos.toByteArray();
// Log.v(TAG, &length: & + buff.length);
bundle.putByteArray(&pic&, buff);
mTencent.requestAsync(Constants.GRAPH_ADD_PIC_T, bundle,
Constants.HTTP_POST, new BaseApiListener(&add_pic_t&, false), null);
bitmap.recycle();
mProgressDialog.show();
调用发布带图微博API参数说明如下:
定义API返回的数据格式。
取值说明:为xml时表示返回的格式是xml;为json时表示返回的格式是json。
注意:json、xml为小写,否则将不识别。format不传或非xml,则返回json格式数据。
表示要发表的微博内容。必须为UTF-8编码,最长为140个汉字,也就是420字节。
如果微博内容中有URL,后台会自动将该URL转换为短URL,每个URL折算成11个字节。
若在此处@好友,需正确填写好友的微博账号,而非昵称。
要上传的图片的文件名以及图片的内容(在发送请求时,图片内容以二进制数据流的形式发送,见下面的请求示例)。
图片仅支持gif、jpeg、jpg、png、bmp及ico格式(所有图片都会重新压缩,gif被重新压缩后不会再有动画效果),图片size小于4M。
分享消息到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,
&/news/1.html&);
params.putString(QQShare.SHARE_TO_QQ_IMAGE_URL,&/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());
调用分享接口的params参数说明如下:
QQShare.SHARE_TO_QQ_KEY_TYPE
分享的类型。图文分享(普通分享)填Tencent.SHARE_TO_QQ_TYPE_DEFAULT
QQShare.PARAM_TARGET_URL
这条分享消息被好友点击后的跳转URL。
QQShare.PARAM_TITLE
分享的标题, 最长30个字符。
QQShare.PARAM_SUMMARY
分享的消息摘要,最长40个字。
QQShare.SHARE_TO_QQ_IMAGE_URL
分享图片的URL或者本地路径
QQShare.SHARE_TO_QQ_APP_NAME
手Q客户端顶部,替换“返回”按钮文字,如果为空,用返回代替
QQShare.SHARE_TO_QQ_EXT_INT
分享额外选项,两种类型可选(默认是不隐藏分享到QZone按钮且不自动打开分享到QZone的对话框):
QQShare.SHARE_TO_QQ_FLAG_QZONE_AUTO_OPEN,分享时自动打开分享到QZone的对话框。
QQShare.SHARE_TO_QQ_FLAG_QZONE_ITEM_HIDE,分享时隐藏分享到QZone按钮
(2) 分享纯图片
调用分享接口的示例代码如下:
private void onClickShare() {
Bundle params = new Bundle();
params.putString(QQShare.SHARE_TO_QQ_IMAGE_LOCAL_URL,imageUrl.getText().toString());
params.putString(QQShare.SHARE_TO_QQ_APP_NAME, appName.getText().toString());
params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, QQShare.SHARE_TO_QQ_TYPE_IMAGE);
params.putInt(QQShare.SHARE_TO_QQ_EXT_INT, QQShare.SHARE_TO_QQ_FLAG_QZONE_AUTO_OPEN);
mTencent.shareToQQ(MainActivity.this, params, new BaseUiListener());
QQShare.SHARE_TO_QQ_KEY_TYPE
分享类型,分享纯图片时填写QQShare.SHARE_TO_QQ_TYPE_IMAGE。
QQShare.SHARE_TO_QQ_IMAGE_LOCAL_URL
需要分享的本地图片路径。
QQShare.SHARE_TO_QQ_APP_NAME
手Q客户端顶部,替换“返回”按钮文字,如果为空,用返回代替。
QQShare.SHARE_TO_QQ_EXT_INT
分享额外选项,两种类型可选(默认是不隐藏分享到QZone按钮且不自动打开分享到QZone的对话框):
QQShare.SHARE_TO_QQ_FLAG_QZONE_AUTO_OPEN,分享时自动打开分享到QZone的对话框。
QQShare.SHARE_TO_QQ_FLAG_QZONE_ITEM_HIDE,分享时隐藏分享到QZone按钮。
(3) 分享音乐
音乐分享后,发送方和接收方在聊天窗口中点击消息气泡即可开始播放音乐。
调用分享接口的示例代码如下:
private void onClickAudioShare() {
final Bundle params = new Bundle();
params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, QQShare.SHARE_TO_QQ_TYPE_AUDIO);
params.putString(QQShare.SHARE_TO_QQ_TITLE, &要分享的标题&);
params.putString(QQShare.SHARE_TO_QQ_SUMMARY,
&要分享的摘要&);
params.putString(QQShare.SHARE_TO_QQ_TARGET_URL,
&/news/1.html&);
params.putString(QQShare.SHARE_TO_QQ_IMAGE_URL, &/qzone/space_item/pre/0/66768.gif&);
params.putString(QQShare.SHARE_TO_QQ_AUDIO_URL, &音乐链接&);
params.putString(QQShare.SHARE_TO_QQ_APP_NAME,
&测试应用222222&);
params.putInt(QQShare.SHARE_TO_QQ_EXT_INT,QQShare.SHARE_TO_QQ_FLAG_QZONE_AUTO_OPEN);
mTencent.shareToQQ(MainActivity.this, params, new BaseUiListener());
调用分享接口的params参数说明如下:
QQShare.SHARE_TO_QQ_KEY_TYPE
分享的类型。分享音乐填Tencent.SHARE_TO_QQ_TYPE_AUDIO。
QQShare.PARAM_TARGET_URL
这条分享消息被好友点击后的跳转URL。
QQShare.SHARE_TO_QQ_AUDIO_URL
音乐文件的远程链接, 以URL的形式传入, 不支持本地音乐。
QQShare.PARAM_TITLE
分享的标题, 最长30个字符。
QQShare.PARAM_SUMMARY
分享的消息摘要,最长40个字符。
QQShare.SHARE_TO_QQ_IMAGE_URL
分享图片的URL或者本地路径。
QQShare.SHARE_TO_QQ_APP_NAME
手Q客户端顶部,替换“返回”按钮文字,如果为空,用返回代替。
QQShare.SHARE_TO_QQ_EXT_INT
分享额外选项,两种类型可选(默认是不隐藏分享到QZone按钮且不自动打开分享到QZone的对话框):
QQShare.SHARE_TO_QQ_FLAG_QZONE_AUTO_OPEN,分享时自动打开分享到QZone的对话框。
QQShare.SHARE_TO_QQ_FLAG_QZONE_ITEM_HIDE,分享时隐藏分享到QZone按钮。
(4) 分享应用
应用分享后,发送方和接收方在聊天窗口中点击消息气泡即可进入应用的详情页。
调用分享接口的示例代码如下:
private void onClickAppShare() {
final Bundle params = new Bundle();
params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, QQShare.SHARE_TO_QQ_TYPE_APP);
params.putString(QQShare.SHARE_TO_QQ_TITLE, &要分享的标题&);
params.putString(QQShare.SHARE_TO_QQ_SUMMARY,
&要分享的摘要&);
params.putString(QQShare.SHARE_TO_QQ_IMAGE_URL, &/qzone/space_item/pre/0/66768.gif&);
params.putString(QQShare.SHARE_TO_QQ_APP_NAME,
&测试应用222222&);
mTencent.shareToQQ(MainActivity.this, params, new BaseUiListener());
调用分享接口的params参数说明如下:
QQShare.SHARE_TO_QQ_KEY_TYPE
分享的类型。分享音乐填Tencent.SHARE_TO_QQ_TYPE_PP。
QQShare.PARAM_TITLE
分享的标题, 最长30个字符。
QQShare.PARAM_SUMMARY
分享的消息摘要,最长40个字符。
QQShare.SHARE_TO_QQ_IMAGE_URL
分享图片的URL或者本地路径。
QQShare.SHARE_TO_QQ_APP_NAME
手Q客户端顶部,替换“返回”按钮文字,如果为空,用返回代替。
QQShare.SHARE_TO_QQ_EXT_INT
分享额外选项,两种类型可选(默认是不隐藏分享到QZone按钮且不自动打开分享到QZone的对话框):
QQShare.SHARE_TO_QQ_FLAG_QZONE_AUTO_OPEN,分享时自动打开分享到QZone的对话框。
QQShare.SHARE_TO_QQ_FLAG_QZONE_ITEM_HIDE,分享时隐藏分享到QZone按钮。
完善了分享到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());
params参数说明如下:
QzoneShare.SHARE_TO_QQ_KEY_TYPE
SHARE_TO_QZONE_TYPE_IMAGE_TEXT(图文)
QzoneShare.SHARE_TO_QQ_TITLE
分享的标题,最多200个字符。
QzoneShare.SHARE_TO_QQ_SUMMARY
分享的摘要,最多600字符。
QzoneShare.SHARE_TO_QQ_TARGET_URL
需要跳转的链接,URL字符串。
QzoneShare.SHARE_TO_QQ_IMAGE_URL
分享的图片, 以ArrayList&String&的类型传入,以便支持多张图片(注:图片最多支持9张图片,多余的图片会被丢弃)。
注意:QZone接口暂不支持发送多张图片的能力,若传入多张图片,则会自动选入第一张图片作为预览图。多图的能力将会在以后支持。:
特别声明:该接口目前仅支持白名单应用。出于信息安全的考虑,本接口目前升级中。升级完成前暂不接受开发者的授权申请。升级完成后,所有接入QQ登录的开发者将均可调用。 已接入过该接口的开发者,不需要更改调用的接口,将自动兼容。
调用语音API的params参数说明如下:
V2.0新增语音API,可以向QQ好友发送一段录制的语音。
示例代码如下:
private void onClickVoice() {
Log.i(&sample&, &onClickVoice&);
if (ready()) {
if(voiceBundle == null){
voiceBundle = new Bundle();
// TODO keywords.voiceBundle.putString(SocialSocialConstants.PARAM_APP_ICON,
&/qzone/space_item/pre/0/66768.gif&);
voiceBundle.putString(SocialSocialConstants.PARAM_APP_DESC,
&AndroidSdk_2_0: invite description!&);
voiceBundle.putString(SocialSocialConstants.PARAM_ACT, &进入应用&);
mTencent.voice(MainActivity.this, voiceBundle, new BaseUiListener());
params参数说明如下:
SocialConstants.PARAM_RECEIVER
若receiver包含OpenID,则表示使用模式一(应用指定接收者模式);若receiver为空,代表使用模式二(用户指定接收者模式)。
1)传入的OpenID必须为应用内关系链,即为已安装该应用的QQ好友;
2)传入个数不得超过10个,若超过10个则自动截取前10个,剩余舍弃。
授权使用应用内关系链的应用才可使用模式一(应用指定接收者)。
SocialConstants.PARAM_IMG_DATA
语音配图的二进制文件,若应用直接传入图片文件,则发送语音时附带上传。应用传入图片size不超过320*320,否则会被等比压缩。
SocialConstants.PARAM_IMG_URL
语音配图的url连接,该参数与imgData参数二选一。如果imgData和url都传了,则优先选择imgData。
SocialConstants.PARAM_EXCLUDE
在用户自己指定好友的场景中,如果开发者不希望某些用户显示在好友选择器中,可传入这些用户的openid,多个openid之间用“,”分隔(“exclude”和“specified”一共最多可传入50个openid),好友选择器则不显示这些openid对应的用户。
SocialConstants.PARAM_SPECIFIED
在用户自己指定好友的场景中,如果开发者需要在好友选择器中显示指定的用户,可传入这些用户的。
openid,多个openid之间用“,”分隔(“exclude”和“specified”一共最多可传入50个openid),好友选择器会显示这些openid对应的用户。
SocialConstants.PARAM_ONLY
仅当设置了PARAM_SPECIFIED,需要传入该参数,用于标识是否在好友选择器中只显示PARAM_SPECIFIED指定的用户。默认值为“0”。
“0”:显示PARAM_SPECIFIED指定的用户,同时显示好友列表和已安装好友。
“1”:只显示“specified”指定的用户,无好友列表和已安装好友。此时必须保证PARAM_SPECIFIED有可用的openid传入,否则会报错。
SocialConstants.PARAM_SOURCE
由开发者自定义该参数内容,用于判断用户接收的哪个好友的礼物或请求。
用户A向C赠送礼物/发送好友请求时,source的值为“openid=001”,用户B向C赠送礼物/发送好友请求时,source的值为“openid=002”。当用户C点击链接进入免费礼物或好友请求的查看页面时,url中会携带app_custom参数,app_custom的值为“openid=001”,说明C响应的是A的请求,如果app_custom的值为“openid=002”,说明C响应的是B的请求。
特别声明:该接口目前仅支持白名单应用。出于信息安全的考虑,本接口目前升级中。升级完成前暂不接受开发者的授权申请。升级完成后,所有接入QQ登录的开发者将均可调用。 已接入过该接口的开发者,不需要更改调用的接口,将自动兼容。
通过调用Tencent类的reactive函数发起好友召回。除了接受者能获得礼物以外,发送者也接收相应礼物。
调用发送请求接口的示例代码如下:
private void onClickReactive() {
if (mTencent.isReady()) {
Bundle params = new Bundle();
params.putString(SocialConstants.PARAM_TITLE, &title字段测试&);
params.putString(SocialConstants.PARAM_SEND_MSG, &msg字段测试&);
params.putString(SocialConstants.PARAM_IMG_URL,&/qzonestyle/act/qzone_app_img/app888_888_75.png&);
params.putString(SocialConstants.PARAM_REC_IMG, &/qzonestyle/act/qzone_app_img/app888_888_75.png&);
params.putString(SocialConstants.PARAM_REC_IMG_DESC, &发送者获取礼物描述&);
mTencent.reactive(this, params, new BaseUIListener(SocialApiActivity.this));
调用发送请求接口的参数说明如下:
SocialConstants.PARAM_TITLE
应用奖励给发起召回的用户的奖品的名称。
SocialConstants.PARAM_SEND_MSG
召回老友时的默认赠言,用户可修改,默认赠言请尽量简洁生动。
SocialConstants.PARAM_IMG_URL
赠送给好友的礼物的图片url。
SocialConstants.PARAM_REC_IMG
赠送给发送者的礼物图片url。
SocialConstants.PARAM_REC_IMG_DESC
赠送给发送者的礼物的描述信息。
SocialConstants.PARAM_EXCLUDE
在用户自己指定好友的场景中,如果开发者不希望某些用户显示在好友选择器中,可传入这些用户的openid,多个openid之间用“,”分隔(“exclude”和“specified”一共最多可传入50个openid),好友选择器则不显示这些openid对应的用户。
SocialConstants.PARAM_SPECIFIED
在用户自己指定好友的场景中,如果开发者需要在好友选择器中显示指定的用户,可传入这些用户的openid,多个openid之间用“,”分隔(“exclude”和“specified”一共最多可传入50个openid),好友选择器会显示这些openid对应的用户。
SocialConstants.PARAM_ONLY
仅当设置了“specified”,需要传入该参数,用于标识是否在好友选择器中只显示“specified”指定的用户。默认值为“0”。
“0”:显示“specified”指定的用户,同时显示好友列表和已安装好友。
“1”:只显示“specified”指定的用户,无好友列表和已安装好友。此时必须保证“specified”有可用的openid传入,否则会报错。
SocialConstants.PARAM_SOURCE
由开发者自定义该参数内容,用于判断用户接收的哪个好友的礼物或请求。
例如:用户A向C发送好友召回时,source的值为“openid=001”,用户B向C发送好友召回时,source的值为“openid=002”。当用户C点击链接进入请求的查看页面时,url中会携带app_custom参数,app_custom的值为“openid=001”,说明C响应的是A的请求,如果app_custom的值为“openid=002”,说明C响应的是B的请求。
特别声明:出于信息安全的考虑,本接口仅对可信赖的合作应用开放。已经成功接入“QQ登录”的应用需提交申请以获取访问本接口的权限。
查询附近都在玩此应用的人,通过调用Tencent类的searchNearby函数查询附近都在玩此应用的人。
使用此接口前需要在配置文件配置如下权限信息:
&uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /&
&uses-permission android:name="android.permission.ACCESS_FINE_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" /&
调用发送请求接口的示例代码如下:
private void onClickSearchNearby() {
if (mTencent.isReady()) {
BaseUIListener l = new BaseUIListener(SocialApiActivity.this);
mTencent.searchNearby(SocialApiActivity.this, null, l);
调用接口返回json字段说明:
int型,返回附近人个数
Json数组,所有的附近人数组
String类型,所属openids组,昵称
int型,所属openids组,性别,男为1,女为2,-1为未知
int型,所属openids组,用户离当前调用者的距离,单位“米”
int型,查询附近的人以page为单位,每页做多100个,默认page为1,要显示更多信息,可在params参数指定page=2等等
返回码与错误信息的对照说明,请参考《返回码说明》文档。
特别声明:出于信息安全的考虑,本接口仅对可信赖的合作应用开放。已经成功接入“QQ登录”的应用需《》以获取访问本接口的权限。
查询过位置信息的用户,后台保留了位置信息,添加入口给用户删除自己上传的位置信息,保护隐私。通过调用Tencent类的deleteLocation函数清除用户位置信息。
示例代码如下:
private void onClickDeleteLocation() {
if (mTencent.isReady()) {
BaseUIListener l = new BaseUIListener(SocialApiActivity.this);
mTencent.deleteLocation(SocialApiActivity.this, null, l);
返回码与错误信息的对照说明,请参考《返回码说明》文档。
通过调用Tencent类的startAppbar函数启动应用吧相关界面,主要包含如下页面:应用吧详情页、我的消息页及发帖页面,通过参数标识跳转页面,参数如下:
AppbarAgent.TO_APPBAR_DETAIL
//打开应用吧详情页
AppbarAgent.TO_APPBAR_NEWS
//打开我的消息页
AppbarAgent.TO_APPBAR_SEND_BLOG
//打开发帖页
使用此接口前需要在配置文件配置如下信息:
android:name=&com.tencent.open.yyb.AppbarActivity&
android:configChanges=&orientation|keyboardHidden|screenSize&
android:screenOrientation=&portrait&
android:theme=&@android:style/Theme.Translucent.NoTitleBar& /&
调用接口的示例代码如下:
mTencent = Tencent.createInstance(APPID, SocialAppbarActivity.this);
mTencent.startAppbar(SocialAppbarActivity.this, AppbarAgent.TO_APPBAR_DETAIL);
通过调用Tencent类的startAppbarLabel函数启动应用吧标签页面,参数如下:
Label:需要跳转的标签值
和1.21一样需要配置AppbarActivity属性,详见1.21说明,调用接口的实例代码如下
mTencent = Tencent.createInstance(APPID, SocialAppbarActivity.this);
mTencent.startAppbarLabel(SocialAppbarActivity.this, label);
通过调用Tencent类的joinQQGroup调用加群接口,参数如下:
Key:需要添加群的ID(申请ID请到申请)
调用接口的示例代码如下:
mTencent = Tencent.createInstance(APPID, this);
mTencent.joinQQGroup(this, key);
通过调用Tencent类的bindQQGroup调用绑定群接口,参数如下:
Params:Bundle类型调用参数,必须包含:unionid, union_name, zoneid, signature字段
参数含义如下:
String型,公会ID
union_name
String 型,公会名称
String型,区域ID
String型,游戏盟主身份验证签名,从游戏后台获取
调用接口的示例代码如下:
mTencent = Tencent.createInstance(APPID, this);
mTencent.bindQQGroup(this, params);
通过调用Tencent类的makeFriend调用添加好友接口,参数如下:
Params:Bundle类型调用参数,必须包含:openid, label, message字段
参数含义如下:
String型,要添加好友的openid
String 型,要添加好友的备注
String型,验证信息
调用接口的示例代码如下:
Bundle params = new Bundle();
params.putString(GameAppOperation.GAME_FRIEND_OPENID, fopenid.getText() + &&);
params.putString(GameAppOperation.GAME_FRIEND_LABEL, label.getText() + &&);
params.putString(GameAppOperation.GAME_FRIEND_ADD_MESSAGE, message.getText() + &&);
mTencent.makeFriend(GameLogicActivity.this, params);
收藏信息到QQ我的收藏接口,可将文本、图文、咨询链接(含视频链接)、音乐链接等信息发送到QQ【我的收藏】。Tencent类的addToQQFavorites函数可直接调用,不需要用户授权(使用手机QQ当前的登录态)。调用该接口将会有一个左图右文的弹窗让用户确认。
调用本接口,需要配置AndroidManifest,在com.tencent.tauth.AuthActivity中添加android:theme属性:
android:name=&com.tencent.tauth.AuthActivity&
android:noHistory=&true&
android:theme=&@android:style/Theme.Translucent&
android:launchMode=&singleTask& &
本接口支持4种模式,每种模式的参数设置不同,下面分别进行介绍:
(1) 文本收藏类型
调用文本信息收藏接口的示例代码如下:
final Bundle params = new Bundle();
params.putString(GameAppOperation.QQFAV_DATALINE_APPNAME, appName.getText().toString());
params.putString(GameAppOperation.QQFAV_DATALINE_TITLE, title.getText().toString());
params.putInt(GameAppOperation.QQFAV_DATALINE_REQTYPE, GameAppOperation.QQFAV_DATALINE_TYPE_TEXT);
params.putString(GameAppOperation.QQFAV_DATALINE_DESCRIPTION, description.getText().toString());
mTencent.addToQQFavorites (activity, params, new BaseUiListener());
调用文本信息收藏接口的params参数说明如下:
GameAppOperation.QQFAV_DATALINE_APPNAME
应用的名称,SDK会通过传入的activity得到应用的名称,如果通过activity得不到应用名称,则会使用传入的这个AppName
GameAppOperation.QQFAV_DATALINE_TITLE
信息的标题。
GameAppOperation.QQFAV_DATALINE_REQTYPE
类型,纯文本类型为:GameAppOperation.QQFAV_DATALINE_TYPE_TEXT
GameAppOperation.QQFAV_DATALINE_DESCRIPTION
信息的正文内容。
(2) 图文类信息收藏
调用图文信息收藏接口的示例代码如下:
final Bundle params = new Bundle();
params.putString(GameAppOperation.QQFAV_DATALINE_APPNAME, appName.getText().toString());
params.putString(GameAppOperation.QQFAV_DATALINE_TITLE, title.getText().toString());
params.putInt(GameAppOperation.QQFAV_DATALINE_REQTYPE,GameAppOperation.QQFAV_DATALINE_TYPE_IMAGE_TEXT);
params.putString(GameAppOperation.QQFAV_DATALINE_DESCRIPTION, description.getText().toString()
+ GameAppOperation.PIC_SYMBOLE);
params.putStringArrayList(GameAppOperation.QQFAV_DATALINE_FILEDATA, fileDataList);
mTencent.addToQQFavorites (activity, params, new BaseUiListener());
调用图文信息收藏接口的params参数说明如下:
GameAppOperation.QQFAV_DATALINE_APPNAME
应用的名称,SDK会通过传入的activity得到应用的名称,如果通过activity得不到应用名称,则会使用传入的这个AppName
GameAppOperation.QQFAV_DATALINE_TITLE
信息的标题。
GameAppOperation.QQFAV_DATALINE_REQTYPE
类型,图文类型为:GameAppOperation.QQFAV_DATALINE_TYPE_IMAGE_TEXT
GameAppOperation.QQFAV_DATALINE_DESCRIPTION
图片的描述信息,如果有多图,则每个图片对应的描述信息使用GameAppOperation.PIC_SYMBOLE来隔开。
GameAppOperation.QQFAV_DATALINE_FILEDATA
ArrayList&String&
图片路径List:包含本地图片和网络图片,可以有多个。
(3) 音乐类信息收藏
调用音乐收藏后,在手机QQ【我的手藏】里面点击消息气泡即可开始播放音乐。
调用音乐类信息收藏接口的示例代码如下:
final Bundle params = new Bundle();
params.putString(GameAppOperation.QQFAV_DATALINE_APPNAME, appName.getText().toString());
params.putString(GameAppOperation.QQFAV_DATALINE_TITLE, title.getText().toString());
params.putInt(GameAppOperation.QQFAV_DATALINE_REQTYPE,GameAppOperation.QQFAV_DATALINE_TYPE_AUDIO);
params.putString(GameAppOperation.QQFAV_DATALINE_DESCRIPTION, description.getText().toString());
params.putString(GameAppOperation.QQFAV_DATALINE_IMAGEURL, imageUrl.getText().toString());
params.putString(GameAppOperation.QQFAV_DATALINE_URL, targetUrl.getText().toString());
params.putString(GameAppOperation.QQFAV_DATALINE_AUDIOURL, audioUrl.getText().toString());
mTencent.addToQQFavorites (activity, params, new BaseUiListener());
调用音乐类信息收藏接口的params参数说明如下:
GameAppOperation.QQFAV_DATALINE_APPNAME
应用的名称,SDK会通过传入的activity得到应用的名称,如果通过activity得不到应用名称,则会使用传入的这个AppName
GameAppOperation.QQFAV_DATALINE_TITLE
信息的标题。
GameAppOperation.QQFAV_DATALINE_REQTYPE
类型,音乐类型为:GameAppOperation.QQFAV_DATALINE_TYPE_AUDIO
GameAppOperation.QQFAV_DATALINE_DESCRIPTION
描述信息。
GameAppOperation.QQFAV_DATALINE_IMAGEURL
预览图地址:可以为本地图片地址或网络图片地址
GameAppOperation.QQFAV_DATALINE_URL
详情页地址
GameAppOperation.QQFAV_DATALINE_AUDIOURL
音乐播放地址
(4)资讯类(包含视频)收藏
调用资讯类(包含视频)收藏后,在手机QQ【我的手藏】里面点击消息气泡即可进入资讯类的详情页。
调用资讯类(包含视频)收藏接口的示例代码如下:
final Bundle params = new Bundle();
params.putString(GameAppOperation.QQFAV_DATALINE_APPNAME, appName.getText().toString());
params.putString(GameAppOperation.QQFAV_DATALINE_TITLE, title.getText().toString());
params.putInt(GameAppOperation.QQFAV_DATALINE_REQTYPE,GameAppOperation.QQFAV_DATALINE_TYPE_DEFAULT);
params.putString(GameAppOperation.QQFAV_DATALINE_DESCRIPTION, description.getText().toString());
params.putString(GameAppOperation.QQFAV_DATALINE_IMAGEURL, imageUrl.getText().toString());
params.putString(GameAppOperation.QQFAV_DATALINE_URL, targetUrl.getText().toString());
mTencent.addToQQFavorites (activity, params, new BaseUiListener());
调用资讯类(包含视频)收藏接口的params参数说明如下:
GameAppOperation.QQFAV_DATALINE_APPNAME
应用的名称,SDK会通过传入的activity得到应用的名称,如果通过activity得不到应用名称,则会使用传入的这个AppName
GameAppOperation.QQFAV_DATALINE_TITLE
信息的标题。
GameAppOperation.QQFAV_DATALINE_REQTYPE
收藏的类型,资讯类型为:GameAppOperation.QQFAV_DATALINE_TYPE_DEFAULT
GameAppOperation.QQFAV_DATALINE_DESCRIPTION
描述信息。
GameAppOperation.QQFAV_DATALINE_IMAGEURL
预览图地址:可以为本地图片地址或网络图片地址
GameAppOperation.QQFAV_DATALINE_URL
详情页地址
发送信息到QQ我的电脑接口,可将文本、图文、咨询链接(含视频链接)、音乐链接等信息发送到手机QQ【我的电脑】。Tencent类的sendToMyComputer函数可直接调用,不需要用户授权(使用手机QQ当前的登录态)。
建议显示给用户的入口名称为【发送到电脑】。
注意:发送成功以后,在弹出的成功提示框中选择【留在QQ】,则不会回调Listener,选择【返回&AppName&】才会调用Listener。
本接口支持4种模式,每种模式的参数设置不同,下面分别进行介绍:
(1) 文本类信息
调用文本信息接口的示例代码如下:
final Bundle params = new Bundle();
params.putString(GameAppOperation.QQFAV_DATALINE_APPNAME, appName.getText().toString());
params.putString(GameAppOperation.QQFAV_DATALINE_TITLE, title.getText().toString());
params.putInt(GameAppOperation.QQFAV_DATALINE_REQTYPE, GameAppOperation.QQFAV_DATALINE_TYPE_TEXT);
params.putString(GameAppOperation.QQFAV_DATALINE_DESCRIPTION, description.getText().toString());
mTencent.sendToMyComputer(activity, params, new BaseUiListener());
调用文本信息接口的params参数说明如下:
GameAppOperation.QQFAV_DATALINE_APPNAME
应用的名称,SDK会通过传入的activity得到应用的名称,如果通过activity得不到应用名称,则会使用传入的这个AppName。
GameAppOperation.QQFAV_DATALINE_TITLE
信息的标题。
GameAppOperation.QQFAV_DATALINE_REQTYPE
类型,纯文本类型为:GameAppOperation.QQFAV_DATALINE_TYPE_TEXT
GameAppOperation.QQFAV_DATALINE_DESCRIPTION
信息的正文内容。
(2) 图文类信息
调用图文信息接口的示例代码如下:
final Bundle params = new Bundle();
params.putString(GameAppOperation.QQFAV_DATALINE_APPNAME, appName.getText().toString());
params.putString(GameAppOperation.QQFAV_DATALINE_TITLE, title.getText().toString());
params.putInt(GameAppOperation.QQFAV_DATALINE_REQTYPE,GameAppOperation.QQFAV_DATALINE_TYPE_IMAGE_TEXT);
params.putString(GameAppOperation.QQFAV_DATALINE_DESCRIPTION, description.getText().toString());
params.putStringArrayList(GameAppOperation.QQFAV_DATALINE_FILEDATA, fileDataList);
mTencent.sendToMyComputer(activity, params, new BaseUiListener());
调用图文信息接口的params参数说明如下:
GameAppOperation.QQFAV_DATALINE_APPNAME
应用的名称,SDK会通过传入的activity得到应用的名称,如果通过activity得不到应用名称,则会使用传入的这个AppName。
GameAppOperation.QQFAV_DATALINE_TITLE
信息的标题。
GameAppOperation.QQFAV_DATALINE_REQTYPE
类型,图文类型为:GameAppOperation.QQFAV_DATALINE_TYPE_IMAGE_TEXT
GameAppOperation.QQFAV_DATALINE_DESCRIPTION
图片的描述信息,只会在弹出的确认框中展示,并不会跟随图片发送到【我的电脑】
GameAppOperation.QQFAV_DATALINE_FILEDATA
ArrayList&String&
图片路径List:包含本地图片和网络图片,可以有多个。
(3) 音乐类信息
调用音乐类信息接口的示例代码如下:
final Bundle params = new Bundle();
params.putString(GameAppOperation.QQFAV_DATALINE_APPNAME, appName.getText().toString());
params.putString(GameAppOperation.QQFAV_DATALINE_TITLE, title.getText().toString());
params.putInt(GameAppOperation.QQFAV_DATALINE_REQTYPE,GameAppOperation.QQFAV_DATALINE_TYPE_AUDIO);
params.putString(GameAppOperation.QQFAV_DATALINE_DESCRIPTION, description.getText().toString());
params.putString(GameAppOperation.QQFAV_DATALINE_IMAGEURL, imageUrl.getText().toString());
params.putString(GameAppOperation.QQFAV_DATALINE_URL, targetUrl.getText().toString());
params.putString(GameAppOperation.QQFAV_DATALINE_AUDIOURL, audioUrl.getText().toString());
mTencent.sendToMyComputer (activity, params, new BaseUiListener());
调用音乐类信息接口的params参数说明如下:
GameAppOperation.QQFAV_DATALINE_APPNAME
应用的名称,SDK会通过传入的activity得到应用的名称,如果通过activity得不到应用名称,则会使用传入的这个AppName。
GameAppOperation.QQFAV_DATALINE_TITLE
信息的标题。
GameAppOperation.QQFAV_DATALINE_REQTYPE
类型,音乐类型为:GameAppOperation.QQFAV_DATALINE_TYPE_AUDIO
GameAppOperation.QQFAV_DATALINE_DESCRIPTION
音乐描述信息。
GameAppOperation.QQFAV_DATALINE_IMAGEURL
预览图地址:可以为本地图片地址或网络图片地址
GameAppOperation.QQFAV_DATALINE_URL
详情页地址
GameAppOperation.QQFAV_DATALINE_AUDIOURL
音乐播放地址
(4) 资讯类(包含视频)
调用资讯类(包含视频)接口的示例代码如下:
final Bundle params = new Bundle();
params.putString(GameAppOperation.QQFAV_DATALINE_APPNAME, appName.getText().toString());
params.putString(GameAppOperation.QQFAV_DATALINE_TITLE, title.getText().toString());
params.putInt(GameAppOperation.QQFAV_DATALINE_REQTYPE,GameAppOperation.QQFAV_DATALINE_TYPE_DEFAULT);
params.putString(GameAppOperation.QQFAV_DATALINE_DESCRIPTION, description.getText().toString());
params.putString(GameAppOperation.QQFAV_DATALINE_IMAGEURL, imageUrl.getText().toString());
params.putString(GameAppOperation.QQFAV_DATALINE_URL, targetUrl.getText().toString());
mTencent.sendToMyComputer(activity, params, new BaseUiListener());
调用资讯类(包含视频)接口的params参数说明如下:
GameAppOperation.QQFAV_DATALINE_APPNAME
应用的名称,SDK会通过传入的activity得到应用的名称,如果通过activity得不到应用名称,则会使用传入的这个AppName。
GameAppOperation.QQFAV_DATALINE_TITLE
信息的标题。
GameAppOperation.QQFAV_DATALINE_REQTYPE
类型,资讯类型为:GameAppOperationQQFAV_DATALINE_TYPE_DEFAULT
GameAppOperation.QQFAV_DATALINE_DESCRIPTION
资讯描述信息。
GameAppOperation.QQFAV_DATALINE_IMAGEURL
预览图地址:可以为本地图片地址或网络图片地址
GameAppOperation.QQFAV_DATALINE_URL
详情页地址
分享信息到QQ群部落接口,可将文本、本地图片等信息分享到QQ群部落。Tencent类的shareToTroopBar函数可直接调用,不需要用户授权(使用手机QQ当前的登录态)。调用该接口会唤起手机QQ发送至群部落界面。
该接口仅支持手机QQ5.3及以上版本。
调用分享信息到QQ群部落的示例代码如下:
final Bundle params = new Bundle();
params.putString(GameAppOperation.QQFAV_DATALINE_APPNAME, appName.getText().toString());
params.putString(GameAppOperation.QQFAV_DATALINE_TITLE, title.getText().toString());
params.putString(GameAppOperation.QQFAV_DATALINE_DESCRIPTION, description.getText().toString());
params.putString(GameAppOperation.TROOPBAR_ID, troopbarId.getText().toString());
params.putStringArrayList(GameAppOperation.QQFAV_DATALINE_FILEDATA, fileDataList);
mTencent.shareToTroopBar(activity, params, new UiListener());
调用分享信息到QQ群部落接口的params参数说明如下:
GameAppOperation.QQFAV_DATALINE_APPNAME
应用的名称,SDK会通过传入的activity得到应用的名称,如果通过activity得不到应用名称,则会使用传入的这个AppName。
GameAppOperation.QQFAV_DATALINE_TITLE
信息的标题。(字数限制在4~25字之间)
GameAppOperation.QQFAV_DATALINE_DESCRIPTION
信息的正文内容。(字数限制在10~700字之间)
GameAppOperation.TROOPBAR_ID
部落ID, 一般为纯数字。
GameAppOperation.QQFAV_DATALINE_FILEDATA
ArrayList&String&
配图地址信息, 只支持本地图片绝对路径地址,最多可填9张图片。
对于WPA用户, 无需加其为好友就能和其进行会话, 这里我们提供2个接口,一个是获取WPA用户的在线状态, 一个是发起会话。
mTencent.getWPAUserOnlineState(uin,NewWPAApiListener("get_uin_state",false,WPAActivity.this));
参数uin是对方的QQ号码。
在onComplete里返回的response是个String,如果在线是{"online":1}, 如果不在线是{"online":0}。
int ret = Tencent.startWPAConversation(WPAActivity.this,uin, "");
参数uin是对方的QQ号码。
ret为0表示打开了手Q的会话窗口,其他则为错误。
上传文件到微云,支持图片、音乐、视频等。
通过实例化UploadFileToWeiyun类来进行操作,调用start方法上传,支持监听上传进度。
调用示例如下:
* 上传文件到微云
* @param tencent
* @param path 文件路径
* @param url 上传文件的cgi
* @param listener 上传文件监听
uploadFileToWeiyun upload = new UploadFileToWeiyun(mTencent,filepath,mRequestUrl,
new IUploadFileToWeiyunStatus() {
public void onUploadSuccess() {
Log.i(&weiyun_test&, &upload success&);
if (OperationSelectActivity.this.isFinishing()) {
mProgress.dismiss();
Toast.makeText(OperationSelectActivity.this, &文件成功上传,打开微云客户端即可查看&, Toast.LENGTH_SHORT).show();
public void onUploadStart() {
Log.i(&weiyun_test&, &upload start&);
if (OperationSelectActivity.this.isFinishing()) {
mProgress.setMessage(&上传文件文件中,请稍候...&);
public void onUploadProgress(int progress) {
Log.i(&weiyun_test&, &upload progress& + progress + &%&);
if (OperationSelectActivity.this.isFinishing()) {
mProgress.setMessage(&上传文件文件中 & + progress + &%
请稍候...&);
public void onPrepareStart() {
Log.i(&weiyun_test&, &prepare start&);
if (OperationSelectActivity.this.isFinishing()) {
mProgress.setMessage(&准备上传文件,请稍候...&);
mProgress.show();
public void onError(String info) {
Log.e(&weiyun_test&, &upload error:
& + info + &&);
if (OperationSelectActivity.this.isFinishing()) {
mProgress.dismiss();
Toast.makeText(OperationSelectActivity.this, &文件上传失败&, Toast.LENGTH_SHORT).show();
upload.start();
从微云下载文件,支持图片、音乐、视频等。
通过实例化DownloadFileFromWeiyun类进行操作,调用start开始下载,支持监听下载进度。
调用示例如下:
* 从微云下载文件
* @param tencent
* @param file_id 文件id
* @param actiontype 下载类型
* @param filesize 文件大小
* @param path 保存文件路径
* @param filename 保存文件名
* @param listener 下载进度监听
downloadFileFromWeiyun down = new DownloadFileFromWeiyun(
file_info_list.get(position).mFile_id, actiontype,
file_info_list.get(position).mSize, &weiyun_test&, file_info_list.get(position).mName,
new IDownloadFileFromWeiyunStatus() {
public void onPrepareStart() {
if (isFinishing()) {
mProgress.setMessage(&文件下载准备中,请稍等.....&);
mProgress.show();
public void onError(String info) {
if (isFinishing()) {
mProgress.dismiss();
Toast.makeText(FileListActivity.this, &文件下载失败&, Toast.LENGTH_SHORT).show();
public void onDownloadSuccess(String filepath) {
if (isFinishing()) {
mProgress.dismiss();
Toast.makeText(FileListActivity.this, &文件下载成功,路径是:& + filepath + &&, Toast.LENGTH_SHORT).show();
if (actiontype == weiyunConstants.ACTION_PICTURE) {
ImageViewDialog dlg = new ImageViewDialog(FileListActivity.this, filepath);
dlg.show();
public void onDownloadStart() {
mProgress.setMessage(&文件正在下载,请稍等.....&);
public void onDownloadProgress(int progress) {
mProgress.setMessage(&文件正在下载: &+progress+&%
&+&请稍等.....&);
down.start();
允许用户上传自定义的结构化数据,这里要注意的就是参数key和value都必须使用只包含16进制数字的字符串。
调用示例如下:
* @param graphPath cgi
* @param params cgi参数
* @return 返回数据
String url = &/weiyun/create_record&;
Bundle params = new Bundle();
params.putString(&key&, Util.toHexString(key));
params.putByteArray(&value&, Util.toHexString(value).getBytes());
JSONObject response =
response = mTencent.upload(url, params);
boolean success=
if(response!=null){
int ret=response.getInt(&ret&);
if(ret==0){
runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(RecordOperationActivity.this, &成功写入一条记录&, Toast.LENGTH_SHORT).show();
catch (Exception e){
if(!success){
runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(RecordOperationActivity.this, &写入记录失败&, Toast.LENGTH_SHORT).show();
针对开发者作为数据提供的应用,如果要使用Android SDK来作为数据内容的提供者,比如提供图片或者视频,需要按以下步骤来实现:
Step1:需要一个Activity来接受QQ应用的调用,对这个Activity,对应的AndroidManifest.xml的配置如下:
&activity android:name=&com.sample.DataProviderActivity&&
&intent-filter&
&action android:name=&android.intent.action.VIEW& /&
&category android:name=&android.intent.category.DEFAUL T&/&
&data android:scheme=&tencent222222.data& /&
&/intent-filter&
&/activity&
这里scheme的格式是"tencent" + appid + ".data"。
Step2:在DataProviderActivity的onCreate函数里,必须添加如下代码:
public class DataProviderActivity extends Activity {
private CallbackManager mCalledM
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mCalledManager = new CallbackManager(this); //构建CallbackManager对象
Step3:如果要将生成的图片,视频内容发回到QQ的应用里,按照下方的代码来实现:
public void onClick(View v) {
switch (v.getId()) {
case R.id.sendimagepathbth: //发送文本和图片路径
int errorCode = mCalledManager.sendTextAndImagePath (&图片说明文本&,
&/sdcard/DCIM/Camera/101020.jpg&);
If (errorCode == 0) {
case R.id.sendvideopathbtn:
int errorCode = mCalledManager.sendTextAndVideoPath(&视频说明文本&,
&/sdcard/DCIM/Camera/101021.mp4&);
If (errorCode == 0) {
case R.id.sendtextonlybtn:
int errorCode = mCalledManager.sendTextOnly(&文本内容&);
If (errorCode == 0) {
这里支持3种内容格式:1是文本和图片路径;2是文本和视频路径;3是纯文本。
路径支持本地路径和url地址,本地路径必须是在sd卡上的路径。
对应的错误代码有以下值:
public final class ErrorCode {
public static final int Success = 0;
public static final int NotSupportThisDataType = -1;
public static final int NotFromTencentApp = -2;
public static final int NotFoundReturnActivity = -3;
public static final int NotFoundTargetApp = -4;
public static final int FileNotInSdCard = -5;
public static final int FileSizeTooLarge = -6;
public static final int PathIsNull = -7;
public static final int FileNotExist = -8;
public static final int FileIsEmpty = -9;
public static final int SdCardNotExist = -10;
Step4:检查QQ调用方请求的数据类型。
mCalledManager.isSupportType(DataType.TEXT_AND_IMAGE_PATH)
如果返回true则表示支持,否则不支持。这里DataType的定义如下:
public final class DataType {
public static final int TEXT_AND_IMAGE_PATH = 0x1; //文本和图片路径
public static final int TEXT_AND_VIDEO_PATH = 0x2; //文本和视频路径
public static final int TEXT_ONLY = 0x4;
Step5:在调用下面这三个方法后,如果返回值是0, 建议finish掉Activity。
mCalledManager.sendTextAndImagePath(...)
mCalledManager.sendTextAndVideoPath(...)
mCalledManager.sendTextOnly(...)
在上,API分成应用接入的API和网站接入的API两种,不管是哪一种应用,这两种API的方式都能直接调用。(以/v3/路径开头的都是应用接入API)
对于应用接入的API来说,下面几个参数是需要注意的:
保存应用的appid
当前用户的登陆凭证
当前请求串的签名
而对于网站接入的API来说,下面的几个参数也是需要注意的:
oauth_consumer_key
保存应用的appid
access_token
当前用户的登陆凭证
当我们拿到access token时,如果要调用应用接入的API,那么就要相应地在appid里填入应用ID,在openkey里填入access token的值,并进行sig的签名计算。如果不想进行sig的签名计算,那么直接以https来进行请求。
当我们拿到openkey时,如果要调用网站接入的API,那么就要相应地在oauth_consumer_key里填入应用ID,在access_token里填入openkey的值。并以https的方式来进行请求。
下面给出几个例子:
1. OpenKey方式调用网站接入的API
appid=12345
openid=FCDAEA8CCDE
openkey=EACD9EB5A50E69B42AE0AE
当前请求串为:
http://119.147.19.43/v3/user/is_login?openid=FCDAEA8CCDE&openkey=EACD9EB5A50E69B42AE0AE&appid=12345&pf=qzone&format=json&userip=10.17.85.52&sig=3ZMWh%2FCTp%2Bn2y9%2Bd9U0slWKTFpo%3D
切换到网站接入API后的请求串为:
https://119.147.19.43/user/get_app_friends?openid=FCDAEA8CCDE&access_token=EACD9EB5A50E69B42AE0AE&oauth_consumer_key=12345&format=json&userip=10.17.85.52
2. AccessToken方式调用应用接入的API,请参考上面的例子,互换参数名即可。
使用SDK时,所有结果都会通过回调返回给应用。在回调的结果中,会包含每次调用结果的返回码。
正常情况下返回码为0,表示调用成功。
如果返回码不为0,说明调用出错,需要根据返回码的值来定位错误原因。
返回码与错误信息的对照说明,请参考《mobile/公共返回码说明 |返回码说明》。
110201:未登陆
110405:登录请求被限制
110404:请求参数缺少appid
110401:请求的应用不存在
110407:应用已经下架
110406:应用没有通过审核
100044:错误的sign
110500:获取用户授权信息失败
110501:获取应用的授权信息失败
110502:设置用户授权失败
110503:获取token失败
110504:系统内部错误}

我要回帖

更多关于 android布局详解 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信