Android开发之QQ分享

来源:互联网 发布:android系统源码架构 编辑:程序博客网 时间:2024/05/02 00:07

在APP应用中,有时候需要分享文字图片或者URL链接到QQ好友或者QQ空间,下面简要介绍流程。
1.到腾讯开放平台注册开发者账号并登录,提交自己的APP信息并通过审核,获取APP对应的APP ID
2.下载相应的sdkSDK下载,并将sdk包手动添加到项目的lib包中。
3.配置manifest文件和application文件标签
manifest文件:

<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

application标签文件注册:

<activity  android:name="com.tencent.tauth.AuthActivity"  android:noHistory="true"  android:launchMode="singleTask" >  <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" />  </intent-filter></activity><activity  android:name="com.tencent.connect.common.AssistActivity"  android:screenOrientation="portrait"  android:theme="@android:style/Theme.Translucent.NoTitleBar" />

4.撸代码:
1)新建Tencent实例

 mTencent = Tencent.createInstance("your APP ID",getApplicationContext()); 

2)分享回调接口的自定义实现(实现接口或者重写接口方法)

  IUiListener qqShareListener = new IUiListener() {        @Override        public void onComplete(Object o) {            showMsg("您已分享到QQ");        }        @Override        public void onError(UiError uiError) {            showMsg("分享到QQ失败");        }        @Override        public void onCancel() {            showMsg("已取消分享");        }    };

3)重写Activity或者Fragment的onActivityResult方法,否则不能正常监听到分享状态。

@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {  // TODO Auto-generated method stub  super.onActivityResult(requestCode, resultCode, data);  Tencent.onActivityResultData(requestCode, resultCode, data, mIUiListener);  if (requestCode == Constants.REQUEST_API) {    if (resultCode == Constants.REQUEST_QQ_SHARE || resultCode == Constants.REQUEST_QZONE_SHARE || resultCode == Constants.REQUEST_OLD_SHARE) {      Tencent.handleResultData(data, mIUiListener);    }  }}

4)分享消息到QQ好友或者QQ空间

a、分享到QQ好友

private Bundle params;private void shareToQQ() {  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, "应用名称");// 应用名称  params.putString(QQShare.SHARE_TO_QQ_EXT_INT, "其它附加功能");  // 分享操作要在主线程中完成  ThreadManager.getMainHandler().post(new Runnable() {    @Override    public void run() {      mTencent.shareToQQ(mActivity, params, mIUiListener);    }  });}

b、分享到QQ空间

private Bundle params;private void shareToQZone() {  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, "要分享的摘要");// 摘要  params.putString(QzoneShare.SHARE_TO_QQ_TARGET_URL,"http://www.qq.com/news/1.html");// 内容地址  ArrayList<String> imgUrlList = new ArrayList<>();  imgUrlList.add("http://f.hiphotos.baidu.com/image/h%3D200/sign=6f05c5f929738bd4db21b531918a876c/6a600c338744ebf8affdde1bdef9d72a6059a702.jpg");  params.putStringArrayList(QzoneShare.SHARE_TO_QQ_IMAGE_URL,imgUrlList);// 图片地址  // 分享操作要在主线程中完成  ThreadManager.getMainHandler().post(new Runnable() {     @Override    public void run() {      // TODO Auto-generated method stub      mTencent.shareToQzone(mActivity, params,mIUiListener);    }  });}

c、另一种简单的实现方式

private void shareToQQ(Boolean isShareToZone) {        Bundle bundle = new Bundle();        bundle.putString(QQShare.SHARE_TO_QQ_TARGET_URL, this.getResources().getString(R.string.share_url));        bundle.putString(QQShare.SHARE_TO_QQ_TITLE, this.getResources().getString(R.string.share_title));        bundle.putString(QQShare.SHARE_TO_QQ_SUMMARY, this.getResources().getString(R.string.share_description));        bundle.putString(QQShare.SHARE_TO_QQ_IMAGE_URL, Constant.APP_LOGO);        bundle.putString(QQShare.SHARE_TO_QQ_APP_NAME, "十二码");        bundle.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, QQShare.SHARE_TO_QQ_TYPE_DEFAULT);        if (isShareToZone) {            bundle.putInt(QQShare.SHARE_TO_QQ_EXT_INT, QQShare.SHARE_TO_QQ_FLAG_QZONE_AUTO_OPEN);        }        Tencent.createInstance(Constant.QQ_APP_ID, this).shareToQQ(this, bundle, qqShareListener);    }

参考文章:
Android QQ分享、QQ空间分享——简书

腾讯官方文档

相关文章:
Android开发之微信分享接口方法

于2017.7.19

阅读全文
0 0