Android开发之QQ分享

本文介绍了在Android应用中实现QQ分享的详细步骤,包括在腾讯开放平台注册APP、添加SDK、配置manifest文件和application标签,以及实现分享回调接口和分享到QQ好友或QQ空间的代码示例。

在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方法,否则不能正常监听到分享状态。

@Override
protected 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值