当前位置:   article > 正文

android QQ分享、QQ空间分享_qq sdk publishtoqzone

qq sdk publishtoqzone
 
 
  • 登录腾讯开放平台注册开发者账号并登录;
  • 登陆后,点击右上角用户头像展开菜单,选择管理中心
    管理中心.png
  • 进入管理中心后,在安卓应用界面点击创建应用按钮,填写对应的应用信息提交审核后完成应用的创建。

注:在新建应用时,记录APP IDAPP KEY,在以后的开发过程中会用到。同时,在管理中心界面可以查看到对应应用的详细信息。


2.开发环境配置

  • SDK下载   登录资料库进行SDK的下载。
  • 资源引用   新建工程包名必须与平台创建应用包名一致,将open_sdk_xxx.jar手动导入到项目libs目录下,添加jar包后,右键选择Add As Library添加该jar包到项目的Library,如下图所示:
    导入资源jar包.png
    添加到Library.png
  • AndroidManifest.xml配置
    • manifest标签内添加如下权限:
  1. <uses-permission android:name="android.permission.INTERNET" />
  2. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  3. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  4. <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
  5. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  6. <uses-permission android:name="android.permission.CAMERA" />
  7. <uses-permission android:name="android.permission.RECORD_AUDIO" />
  8. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  • application标签内添加如下内容:
  1. <!-- ############ QQ空间和QQ SSO授权的Activity注册 ############ -->
  2. <activity
  3.   android:name="com.tencent.tauth.AuthActivity"
  4.   android:noHistory="true"
  5.   android:launchMode="singleTask" >
  6.   <intent-filter>
  7.     <action android:name="android.intent.action.VIEW" />
  8.     <category android:name="android.intent.category.DEFAULT" />
  9.     <category android:name="android.intent.category.BROWSABLE" />
  10.     <data android:scheme="tencent你的AppId" />
  11.   </intent-filter>
  12. </activity>
  13. <activity
  14.   android:name="com.tencent.connect.common.AssistActivity"
  15.   android:screenOrientation="portrait"
  16.   android:theme="@android:style/Theme.Translucent.NoTitleBar" />

注意:一定记得在<data android:scheme="tencent你的AppId" />添加上应用的AppId(如:对应应用的AppId为123456,则应填写tencent123456)。


3.内容分享

3.1 新建Tencent实例

  1. private Tencent mTencent;// 新建Tencent实例用于调用分享方法
  2. @Override
  3. protected void onCreate(Bundle savedInstanceState) {
  4.   super.onCreate(savedInstanceState);
  5.   setContentView(R.layout.activity_main);
  6.   mTencent = Tencent.createInstance("your APP ID",getApplicationContext());
  7. }

注:在新建Tencent实例时,一定要注意填写应用的APPID,如:APPID为123456,使用Tencent.createInstance("123456",getApplicationContext()); 即可创建Tencent实例。

  • 分享回调接口的实现
    自定义分享回调接口:
  1. class MyIUiListener implements IUiListener {
  2.   @Override
  3.   public void onComplete(Object o) {
  4.     // 操作成功
  5.   }
  6.   @Override
  7.   public void onError(UiError uiError) {
  8.     // 分享异常
  9.   }
  10.   @Override
  11.   public void onCancel() {
  12.     // 取消分享
  13.   }
  14. }

重写Activity或者Fragment的onActivityResult方法,否则不能正常的监听分享状态,具体代码如下:

  1. @Override
  2. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  3.   // TODO Auto-generated method stub
  4.   super.onActivityResult(requestCode, resultCode, data);
  5.   Tencent.onActivityResultData(requestCode, resultCode, data, mIUiListener);
  6.   if (requestCode == Constants.REQUEST_API) {
  7.     if (resultCode == Constants.REQUEST_QQ_SHARE || resultCode == Constants.REQUEST_QZONE_SHARE || resultCode == Constants.REQUEST_OLD_SHARE) {
  8.       Tencent.handleResultData(data, mIUiListener);
  9.     }
  10.   }
  11. }

3.2 分享消息到QQ

  • 默认分享-图文并存
  1. private Bundle params;
  2. private void shareToQQ() {
  3.   params = new Bundle();
  4.   params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE,QQShare.SHARE_TO_QQ_TYPE_DEFAULT);
  5.   params.putString(QQShare.SHARE_TO_QQ_TITLE, "标题");// 标题
  6.   params.putString(QQShare.SHARE_TO_QQ_SUMMARY, "要分享的摘要");// 摘要
  7.   params.putString(QQShare.SHARE_TO_QQ_TARGET_URL,"http://www.qq.com/news/1.html");// 内容地址
  8.   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, "应用名称");// 应用名称
  9.   params.putString(QQShare.SHARE_TO_QQ_EXT_INT, "其它附加功能");
  10.   // 分享操作要在主线程中完成
  11.   ThreadManager.getMainHandler().post(new Runnable() {
  12.     @Override
  13.     public void run() {
  14.       mTencent.shareToQQ(mActivity, params, mIUiListener);
  15.     }
  16.   });
  17. }
  • 分享纯图片到QQ
  1. /**
  2. * 分享纯图片到QQ
  3. *
  4. * @param imgUrl 图片url
  5. */
  6. private void shareImgToQQ(String imgUrl) {
  7. params = new Bundle();
  8. params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, QQShare.SHARE_TO_QQ_TYPE_IMAGE);// 设置分享类型为纯图片分享
  9. params.putString(QQShare.SHARE_TO_QQ_IMAGE_LOCAL_URL, imgUrl);// 需要分享的本地图片URL
  10. // 分享操作要在主线程中完成
  11. ThreadManager.getMainHandler().post(new Runnable() {
  12. @Override
  13. public void run() {
  14. mTencent.shareToQQ(mActivity, params, mIUiListener);
  15. }
  16. });
  17. }

注:默认为图片分享,需要进行音乐、应用、纯图片分享的,请参照SDK内的说明文档进行代码的编写,注:有些参数在文档上显示的比较坑(你懂得),一定要仔细辨认!一定要仔细辨认!一定要仔细辨认!
具体详情请参阅接口调用说明1.11 分享消息到 QQ(无需 QQ 登录)(2)分享纯图片

3.3 分享到QQ空间

  • 默认分享-图文并存
  1. private Bundle params;
  2. private void shareToQZone() {
  3.   params = new Bundle();
  4.   params.putInt(QzoneShare.SHARE_TO_QZONE_KEY_TYPE,QzoneShare.SHARE_TO_QZONE_TYPE_IMAGE_TEXT);
  5.   params.putString(QzoneShare.SHARE_TO_QQ_TITLE, "标题");// 标题
  6.   params.putString(QzoneShare.SHARE_TO_QQ_SUMMARY, "要分享的摘要");// 摘要
  7.   params.putString(QzoneShare.SHARE_TO_QQ_TARGET_URL,"http://www.qq.com/news/1.html");// 内容地址
  8.   ArrayList<String> imgUrlList = new ArrayList<>();
  9.   imgUrlList.add("http://f.hiphotos.baidu.com/image/h%3D200/sign=6f05c5f929738bd4db21b531918a876c/6a600c338744ebf8affdde1bdef9d72a6059a702.jpg");
  10.   params.putStringArrayList(QzoneShare.SHARE_TO_QQ_IMAGE_URL,imgUrlList);// 图片地址
  11.   // 分享操作要在主线程中完成
  12.   ThreadManager.getMainHandler().post(new Runnable() {
  13.     @Override
  14.     public void run() {
  15.       // TODO Auto-generated method stub
  16.       mTencent.shareToQzone(mActivity, params,mIUiListener);
  17.     }
  18.   });
  19. }
  • 上传图片到QQ空间
  1. /**
  2. * 发表到QQ空间
  3. *
  4. * @param imgUrlList 图片地址集合--上传的只能是本地图片!
  5. */
  6. private void publishToQzone(ArrayList<String> imgUrlList) {
  7. // 分享类型
  8. params = new Bundle();
  9. params.putInt(QzonePublish.PUBLISH_TO_QZONE_KEY_TYPE, QzonePublish.PUBLISH_TO_QZONE_TYPE_PUBLISHMOOD);
  10. params.putString(QzonePublish.PUBLISH_TO_QZONE_SUMMARY, "说说正文");
  11. params.putStringArrayList(QzonePublish.PUBLISH_TO_QZONE_IMAGE_URL,
  12. imgUrlList);// 图片地址ArrayList
  13. // 分享操作要在主线程中完成
  14. ThreadManager.getMainHandler().post(new Runnable() {
  15. @Override
  16. public void run() {
  17. // TODO Auto-generated method stub
  18. mTencent.publishToQzone(mActivity, params, mIUiListener);
  19. }
  20. });
  21. }

注:除了默认的分享图文外,还支持发表说说、视频或上传照片这三种模式,同上,需要参阅SDK开发指南文档,同理,请注意规避文档上的坑。
上传图片到QQ空间时,图片只能是本地照片!
具体详情请参阅接口调用说明1.12 分享到 QQ 空间(无需 QQ 登录)(2)发表说说、视频或上传图片,看参数意义就行了,文档代码。。。就是坑。。


4.注意事项

  • APP ID

一定要替换成自己申请的appid——运行前检查AndroidManifest.xml中与ActivityTencent.createInstance内使用的appid是否正常。
注意在AndroidMaifest.xml中,需要填写tencent您的appid,appid前多了个tencent!

  • 应用权限的添加
  • Q空间和QQ SSO授权的Activity注册


作者:紫豪
链接:https://www.jianshu.com/p/4e2184649545
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/292838
推荐阅读
相关标签
  

闽ICP备14008679号