2018-10-28 13:33

Android 利用腾讯开放平台的官方SDK,实现自定义QQ分享。并备份一下android-support-v7安卓支持包!

?开头废话:前些日子换了手机,旧手机上的数据忘了迁移备份就急急忙忙的重置格式化了,很难受!开发的一些APP源码也就给丢失了,然后只好去自己的群里面,找到曾经上传的旧版本,把他反编译出来一点点的还原。逆向始终不是自己会玩的东西,所以效果很不理想,特别是我这种纯手机端进行编写操作的编程爱好者。蓝瘦香菇!

?今天想要说一下那个自定义QQ分享的东西,官方文档以及demo最近也好像是做了一下更新。最烦的就是更新了的文档也不是那么的简洁明了,实在不是很适合给一般的coder看 ̄  ̄)σ。

?好吧,还是直接去开始吧。

打开我的AIDE...

新建工程项目

QQ开放平台 下载SDK

解压SDK,把两个jar包导入工程项目的libs文件夹,没有这个文件夹自己新建一下

然后,我们就可开始码代码了
首先配置一下AndroidManifest文件,权限设置和注册Activity
权限代码:
`

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- 在SDCard中创建和删除文件的权限 --> 
<uses-permission 
    android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> 
<!-- 往SDCard中写入数据的权限 -->
<uses-permission 
    android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
`

当然,以上权限并不全都用的上或者不够,可以根据自己的需求进行增减。然后是SDK需要的Activity注册了,一下代码放入到<application>标签中即可:

<!-- 注册SDKActivity -->
<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="tencentID1106885928" /> <!-- 获取的APPID -->
        </intent-filter>
    </activity>

新版的SDK增加了AssistActivity,所以也要在这里给他加上去

 <activity android:name="com.tencent.connect.common.AssistActivity"
        android:theme="@android:style/Theme.Translucent.NoTitleBar"
        android:configChanges="orientation|keyboardHidden|screenSize" />

配置好了之后,就开始写java代码了。
首先,创建实例。Tencent是SDK的功能入口,所有的接口调用都得通过Tencent进行调用。因此,调用SDK,首先需要创建一个Tencent实例,其代码如下:

private static final String APP_ID = "1106885928"; // appid跟换成你自己的,可以在开放平台新建应用之后获取
private Tencent mTencent;
    //传入参数APPID
    mTencent = Tencent.createInstance(APP_ID, MainActivity.this.getApplicationContext());

接下来就是实现回调,也就是你分享东西出去是成功了还是失败了,又或者是用户取消了分享呢?具体就是:

/**
 * 自定义监听器实现IUiListener,需要3个方法
 * onComplete完成 onError错误 onCancel取消
 */
private class ShareUiListener implements IUiListener
{

    @Override
    public void onComplete(Object response)
    {
        //分享成功
        def_note("成功分享!");

    }

    @Override
    public void onError(UiError uiError)
    {
        //分享失败
        def_note("分享失败!");

    }

    @Override
    public void onCancel()
    {
        //分享取消
        def_note("您取消了分享!");

    }
}

/**
 * 回调
 * @param requestCode
 * @param resultCode
 * @param data
 */
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
    if (null != mTencent)
    {
        mTencent.onActivityResult(requestCode, resultCode, data);
    }
    
}

到这里就基本上搞好了。然后就是对官方文档里面提到的api数据封装功能函数,可以分享链接,音乐,图片,应用这些东西,具体就是这样:

/**
 * 分享到QQ
 * @param v
 */
public void qqShare(String t, String s, String u, String p, String w)
{
    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, t);//分享标题
    params.putString(QQShare.SHARE_TO_QQ_SUMMARY, s);//要分享的内容摘要
    params.putString(QQShare.SHARE_TO_QQ_TARGET_URL, u);//内容地址
    params.putString(QQShare.SHARE_TO_QQ_IMAGE_URL, p);//分享的图片URL
    params.putString(QQShare.SHARE_TO_QQ_APP_NAME, w);//应用名称
    mTencent.shareToQQ(MainActivity.this, params, new ShareUiListener());
}

/**
 * 分享到QQ空间
 * @param v
 */
public void qqQzoneShare(String t, String s, String u, String p, String w)
{
    int QzoneType = QzoneShare.SHARE_TO_QZONE_TYPE_NO_TYPE;
    Bundle params = new Bundle();
    params.putInt(QzoneShare.SHARE_TO_QZONE_KEY_TYPE, QzoneType);
    params.putString(QzoneShare.SHARE_TO_QQ_TITLE, t);//分享标题
    params.putString(QzoneShare.SHARE_TO_QQ_SUMMARY, s);//分享的内容摘要
    params.putString(QzoneShare.SHARE_TO_QQ_TARGET_URL, u);//分享的链接
    //分享的图片, 以ArrayList<String>的类型传入,以便支持多张图片(注:图片最多支持9张图片,多余的图片会被丢弃)
    ArrayList<String> imageUrls = new ArrayList<String>();
    imageUrls.add("http://www.hzv5.cn/logo.jpg");//添加一个图片地址
    params.putStringArrayList(QzoneShare.SHARE_TO_QQ_IMAGE_URL, imageUrls);//分享的图片URL
    mTencent.shareToQzone(MainActivity.this, params, new ShareUiListener());
}

/**
 * 分享音乐
 * @param v
 */
private void qqAudioShare(String t, String s, String u, String p, String w)
{
    int ii = def_getNum(0, songlist.length - 1);
    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, t);
    params.putString(QQShare.SHARE_TO_QQ_SUMMARY,  s);
    params.putString(QQShare.SHARE_TO_QQ_TARGET_URL,  u);
    params.putString(QQShare.SHARE_TO_QQ_IMAGE_URL, p);
    params.putString(QQShare.SHARE_TO_QQ_AUDIO_URL, songlist[ii]);
    params.putString(QQShare.SHARE_TO_QQ_APP_NAME,  w);
    //params.putInt(QQShare.SHARE_TO_QQ_EXT_INT, QQShare.SHARE_TO_QQ_FLAG_QZONE_AUTO_OPEN);
    mTencent.shareToQQ(MainActivity.this, params, new ShareUiListener());
}

到这里整个工程项目的QQ自定义分享基本上就完成了,这里算是给自己也做了一份备份。

另外再备份两个东西,那就是安卓的android-support-v4,和v7支持包,特别是v7包,网上找的全是那种缺胳膊少腿的,找个完整的v7找了我两天时间!这个是安卓25版本的。不是最新,但是够用就行了。

v4下载链接:点击下载v4 提取码:65o3
v7下载链接:点击下载v7 提取码:n54t

OK,?完美!

笔芯❤!


点这,给博主早餐加个鸡蛋!(ง •̀_•́)ง
hzv5.cn文章二维码

扫描二维码,在手机上阅读!



吖远zzy

原创文章,欢迎转载。转载请注明:转载自 吖远zzyの博客,谢谢!
原文链接:http://wap.hzv5.cn/index.php/archives/96.html

你可能还喜欢...

  1. 感谢博主的v4和v7库,网上找了很久都没有,多谢博主了

    1. 昂。。。
      因为我也是找了非常久的了,分享出来的同时也给自己做个备份。
      PS,为啥你的博客标题在学我的副标题2333??

添加新评论