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

开头废话

前些日子换了手机,旧手机上的数据忘了迁移备份就急急忙忙的重置格式化了,很难受!开发的一些APP源码也就给丢失了,然后只好去自己的群里面,找到曾经上传的旧版本,把他反编译出来一点点的还原。

逆向始终不是自己会玩的东西,所以效果很不理想,特别是我这种纯手机端进行编写操作的编程爱好者。蓝瘦香菇!

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

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

开整

1丶打开我的AIDE…

2丶新建工程项目

3丶到QQ开放平台 下载SDK

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

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

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

权限代码:

1
2
3
4
5
6
7
8
9
<!-- 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注册了,一下代码放入到标签中即可:

1
2
3
4
5
6
7
8
9
10
11
12
<!-- 注册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,所以也要在这里给他加上去

1
2
3
<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());

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/**
* 自定义监听器实现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数据封装功能函数,可以分享链接,音乐,图片,应用这些东西,具体就是这样:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
/**
* 分享到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)\r\n {\r\n int QzoneType = QzoneShare.SHARE_TO_QZONE_TYPE_NO_TYPE;\r\n 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自定义分享基本上就完成了,这里算是给自己也做了一份备份。

V4,V7支持包

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

不是最新,但是够用就行了。

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

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

OK,?完美!

笔芯❤!

上一篇 百度文字合成语音的api接口,以及其他失效的接口,找了新的免费语音接口!
下一篇 关于Android自定义QQ分享提示未正确授权,错误码901115
感谢您的支持!
微信赞赏码 微信赞赏
支付宝赞赏码 支付宝赞赏