admin管理员组文章数量:1558065
现在有很多第三分享平台,号称一键分享到所有平台,其实对于一般的分享需求,使用隐式Intent请求也可以分享出去,但是对于需要定制分享内容和样式的(比如分享框的title ,文字样式,图标头像等等),这种需求,像umeng,sharesdk这些平台我只能呵呵了。。。。这就是为什么很多公司还是选择官方的SDK,于是去腾讯开放平台查看文档,发现太难找了,不想吐槽了。。。下面写篇博文整理一下。
下载Android SDK
首先,去QQ开放平台下载SDK : http://wiki.open.qq/wiki/mobile/SDK下载
首先下载sdk,我下载的版本是Android_SDK_V3.1.0,解压后目录如图所示
创建工程及引用SDK源码文件
以下以Android studio 为开发的IDE进行范例说明:
将上面解压的jar文件夹里的两个jar文件黏贴到项目的libs文件夹下
黏贴完毕之后依次右键刚刚黏贴的jar文件--Add As Library
配置AndroidManifest
在应用的AndroidManifest.xml增加配置的<application>节点下增加以下配置(注:不配置将会导致无法调用API);
application 外添加权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
application 节点内添加以下代码:
<pre name="code" ><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="tencent你的AppId" />
</intent-filter>
</activity>
注意:
<data android:scheme="tencent<span style="font-family: 'Helvetica Neue', Helvetica, Tahoma, Arial, STXihei, 'Microsoft YaHei', 微软雅黑, sans-serif; line-height: 27.2px; text-indent: 1em;">你的AppId</span><span style="line-height: 27.2px; text-indent: 1em; font-family: 'Helvetica Neue', Helvetica, Tahoma, Arial, STXihei, 'Microsoft YaHei', 微软雅黑, sans-serif;">" /></span>
将“你的AppId” 整个字段换成你的APP ID,但要保留tecent字符串(很诡异的需求,不知道QQ技术团队为什么这么设计)。
SDK_V2.0以上引入了AssistActivity,开发者需在androidManifest.xml中注册。application节点内添加 如下 代码:<activity android:name="com.tencent.connectmon.AssistActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="orientation|keyboardHidden|screenSize"/>
通过以上步骤,工程就已经配置完成了。接下来就可以在代码里使用QQ互联的SDK进行开发了。
创建实例
创建SDK主要实现类Tencent类的示例代码如下:
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Tencent类是SDK的主要实现类,开发者可通过Tencent类访问腾讯开放的OpenAPI。
// 其中APP_ID是分配给第三方应用的appid,类型为String。
mTencent = Tencent.createInstance(APP_ID, this.getApplicationContext());
// 1.4版本:此处需新增参数,传入应用程序的全局context,可通过activity的getApplicationContext方法获取
// 初始化视图
initViews();
}
实现回调
所有的SDK接口调用,都会传入一个回调,用以接收SDK返回的调用结果。回调的主要接口有两种:
(1) IUiListener:调用SDK已经封装好的接口时,例如:登录、快速支付登录、应用分享、应用邀请等接口。
IUiListener的实现示例代码如下:
private class BaseUiListener implements IUiListener {
@Override
public void onComplete(Object response) {
//V2.0版本,参数类型由JSONObject 改成了Object,具体类型参考api文档
mBaseMessageText.setText("onComplete:");
doComplete(response);
}
protected void doComplete(JSONObject values) {
}
@Override
public void onError(UiError e) {
showResult("onError:", "code:" + e.errorCode + ", msg:"
+ e.errorMessage + ", detail:" + e.errorDetail);
}
@Override
public void onCancel() {
showResult("onCancel", "");
}
}
(2) IRequestListener:使用requestAsync、request等通用方法调用sdk未封装的接口时,例如上传图片、查看相册等。
IRequestListener的实现示例代码如下:
private class BaseApiListener implements IRequestListener {
@Override
public void onComplete(final JSONObject response, Object state) {
showResult("IRequestListener.onComplete:", response.toString());
doComplete(response, state);
}
protected void doComplete(JSONObject response, Object state) {
}
@Override
public void onIOException(final IOException e, Object state) {
showResult("IRequestListener.onIOException:", e.getMessage());
}
@Override
public void onMalformedURLException(final MalformedURLException e,
Object state) {
showResult("IRequestListener.onMalformedURLException", e.toString());
}
@Override
public void onJSONException(final JSONException e, Object state) {
showResult("IRequestListener.onJSONException:", e.getMessage());
}
版权声明:本文标题:最新Android实现分享到QQ QZone 博客功能(集成官方SDK,不使用第三方) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1727356511a1110173.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论