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());
}

本文标签: 第三方功能官方最新博客