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

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

内容简介:开头废话:前些日子换了手机,旧手机上的数据忘了迁移备份就急急忙忙的重置格式化了,很难受!开发的一些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:完美!

笔芯❤!


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

查看所有标签

猜你喜欢:

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

疯狂XML讲义

疯狂XML讲义

李刚 / 电子工业出版社 / 2009-11 / 65.00元

《疯狂XML讲义》主要以XML为核心,深入地介绍了XML的各种相关知识。《疯狂XML讲义》作为疯狂Java体系图书之一,依然保持该体系图书系统、全面的特点:不仅详细介绍了XML,文档的各种知识,还通过案例示范了实际开发中如何应用XML知识。 《疯狂XML讲义》主要分为五个部分。第一部分介绍了XML、DTD、XML Schema等基础知识,这些知识主要教读者如何定义有效的XML文档,这部分内容......一起来看看 《疯狂XML讲义》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器