关于open API的接入我也是最近才在学习,下面是我做腾讯open API接入是的一些心得,可能不会很全面,但是希望能帮助到那些刚开始做接入的彤彤。
首先,必须要做的准备:
1.在腾讯的开放平台上去看新手指引。地址:http://open.qq.com/
2.注册成为开发者之后,下载sdk,地址:http://wiki.open.qq.com/wiki/mobile/SDK%E4%B8%8B%E8%BD%BD
3.我目前做的只是android平台,所以后面的示例代码等,都以android为例,IOS平台原理应该相类似。
4.引入sdk包下面的jar包和res文件到自己的工程,如果代码中有多个平台的接入,我个人建议创建一个moudle最好,这样方便管理和维护。
5.以腾讯开放平台给的文档为参考,配置manifest文件和grandle文件(注意:我这里使用的是Android Studio 做为开发工具,如果是Exclipse的话,我就不太清楚了)。
其中我配置的manifest文件的activity如下:
<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="tencentDO7O1BPDXcCh1ZY3" />
</intent-filter>
</activity>
<activity
android:name="com.tencent.connect.common.AssistActivity"
android:screenOrientation="behind"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="orientation|keyboardHidden">
</activity>
之后需要在manifest中配置appkey,这个值和appid都是来自你在腾讯开放平台上面创建的应用,在应用管理页面去查看。
<meta-data android:name="TA_APPKEY" android:value="DO7O1BPDXcCh1ZY3" />
<meta-data android:name="InstallChannel" android:value="play"/>
最后为你的app配置需要的权限, 这个有你自己决定,示例如下:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
6.依照API文档,创建并实现回调,在这个过程中一定要注意:
应用调用Andriod_SDK接口时,如果要成功接收到回调,需要在调用接口的Activity的onActivityResult方法中增加如下代码:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Tencent.onActivityResultData(requestCode,resultCode,data,listener);
}
//qq登录
mTencent.login(this, "all",listener);
//其中this为activity,all表示获取所有权限,listener为回调的监听器对象
//分享到QQ空间
public void qq_shareToQzone_onclick()
{
int test = 0;
shareListener = new ShareListener();
ThreadManager.getMainHandler().post(new Runnable() {
@Override
public void run() {
if (null != MainActivity.mTencent) {
//分享类型
Bundle params = new Bundle();
params.putInt(QzoneShare.SHARE_TO_QZONE_KEY_TYPE,QzoneShare.SHARE_TO_QZONE_TYPE_IMAGE_TEXT);
params.putString(QzoneShare.SHARE_TO_QQ_TITLE, "只是一个测试");//必填
params.putString(QzoneShare.SHARE_TO_QQ_SUMMARY, "就是一个测试而已");//选填
params.putString(QzoneShare.SHARE_TO_QQ_TARGET_URL, "http://www.qq.com/news/1.html");
//必须是一个list
ArrayList<String> imageUrls = new ArrayList<String>();
imageUrls.add("https://www.baidu.com/img/bd_logo1.png");
params.putStringArrayList(QzoneShare.SHARE_TO_QQ_IMAGE_URL,imageUrls);
params.putInt(QzoneShare.SHARE_TO_QQ_EXT_INT, QQShare.SHARE_TO_QQ_FLAG_QZONE_AUTO_OPEN);
MainActivity.mTencent.shareToQzone(MainActivity.this, params, shareListener);
}
}
});
//mTencent.shareToQzone(MainActivity.this, params, shareListener);
}
//分享到qq好友
public void qq_shareToQQFriends_onclick()
{
int test = 0;
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, "要分享的标题");
params.putString(QQShare.SHARE_TO_QQ_SUMMARY, "要分享的摘要");
params.putString(QQShare.SHARE_TO_QQ_TARGET_URL, "http://www.qq.com/news/1.html");
params.putString(QQShare.SHARE_TO_QQ_IMAGE_URL,"http://imgcache.qq.com/qzone/space_item/pre/0/66768.gif");
params.putString(QQShare.SHARE_TO_QQ_APP_NAME, "测试应用222222");
params.putInt(QQShare.SHARE_TO_QQ_EXT_INT, 11);
mTencent.shareToQQ(MainActivity.this, params, new BaseUiListener());
}
分享到腾讯微博的目前还存在问题代码就不上传了,其他的好友邀请,送礼物等等都是类似。
特别注意:一定要仔细阅读API文档,这样才能做出你想要的东西^_^