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

栏目: IOS · Android · 发布时间: 6年前

内容简介:开头废话:前些日子换了手机,旧手机上的数据忘了迁移备份就急急忙忙的重置格式化了,很难受!开发的一些APP源码也就给丢失了,然后只好去自己的群里面,找到曾经上传的旧版本,把他反编译出来一点点的还原。逆向始终不是自己会玩的东西,所以效果很不理想,特别是我这种纯手机端进行编写操作的编程爱好者。蓝瘦香菇!:full_moon_with_face:今天想要说一下那个自定义QQ分享的东西,官方文档以及demo最近也好像是做了一下更新。最烦的就是更新了的文档也不是那么的简洁明了,实在不是很适合给一般的coder看 ̄  ̄

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

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

:yum:好吧,还是直接去开始吧。

打开我的AIDE...

新建工程项目

QQ开放平台 下载SDK

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

然后,我们就可开始码代码了

首先配置一下AndroidManifest文件,权限设置和注册Activity

权限代码:

`<!-- APP联网所需权限 -->

<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,:grin:完美!

笔芯❤!


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Web Design Handbook

Web Design Handbook

Baeck, Philippe de 编 / 2009-12 / $ 22.54

This non-technical book brings together contemporary web design's latest and most original creative examples in the areas of services, media, blogs, contacts, links and jobs. It also traces the latest......一起来看看 《Web Design Handbook》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具