在友盟中下载QQ的SDK:
SDK文件目录介绍
- main -- 核心库
umeng_social_api.jar
umeng_social_net.jar
umeng_social_tool.jar
- platforms -- 分享平台库
QQ精简版(SocialSDK_QQ_Simplify.jar)
这里只列举QQ、最终platforms文件夹内包含的文件与下载页面选择的平台有关
- shareboard
umeng_shareboard_widget.jar(工程中存在support v4或不使用面板可以不加)
umeng_social_shareboard.jar
拷贝jar及res
拷贝jar和res有如下两种形式
a.将main文件夹以及platform(选择你想使用的平台即可)文件下,对应的资源文件和jar放入你的工程
修改AndroidManiFest
首先需要添加权限:
<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"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
然后加入sdk中需要的Activity:
qq精简版:
<activity
android:name="com.umeng.qq.tencent.AuthActivity"
android:launchMode="singleTask"
android:noHistory="true">
<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="tencent100424468" />
</intent-filter>
</activity>
<activity
android:name="com.umeng.qq.tencent.AssistActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
qq完整版:
<activity
android:name="com.tencent.tauth.AuthActivity"
android:launchMode="singleTask"
android:noHistory="true" >
<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="tencent100424468" />//腾讯开放平台申请的key值
</intent-filter>
</activity>
<activity
android:name="com.tencent.connect.common.AssistActivity"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="orientation|keyboardHidden|screenSize"/>
添加友盟appkey
<meta-data
android:name="UMENG_APPKEY"
android:value="561cae6ae0f55abd990035bf" >//友萌APP的KEy
</meta-data>
在application文件中配置三方平台的appkey:
这里作为示例,只配置了微信、QQ/Qzone、新浪的三方appkey,如果使用其他平台,在这里增加对应平台key配置
public class App extends Application{
{
//此处红色标注的是你在QQ平台上请求的ID与KEY
PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba");
}
在application中初始化sdk,这个初始化最好放在application的程序入口中,防止意外发生:
@Override
public void onCreate() {
super.onCreate();
UMShareAPI.get(this);
}
}
·············记得在清单文件中注册Application哦
2. 获取用户信息
protected void onCreate(Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_NO_TITLE); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); UMShareAPI.get(MainActivity.this).getPlatformInfo(MainActivity.this,
SHARE_MEDIA.QQ, umAuthListener); }
其中umAuthListener为授权回调,构建如下,其中授权成功会回调onComplete,取消授权回调onCancel,授权错误回调onError,对应的错误信息可以用过onError的Throwable参数来打印
private UMAuthListener umAuthListener = new UMAuthListener() {@Overridepublic void onStart(SHARE_MEDIA platform) {//授权开始的回调}@Overridepublic void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) {Set<String> set = data.keySet();SharedPreferences qq = getSharedPreferences("QQ", MODE_PRIVATE);SharedPreferences.Editor edit = qq.edit();for (String string : set) {String str = data.get(string);// 设置头像String touxiang = data.get("profile_image_url");edit.putString("头像",touxiang);// 设置昵称String nicheng = data.get("screen_name");edit.putString("昵称",nicheng);edit.putBoolean("状态",true);edit.commit();if (string.equals("province")) {}if (string.equals("city")) {}if (string.equals("gender")) {}if (string.equals("uid")) {}if (string.equals("yellow_vip_level")) {}}Intent intentqq=new Intent(MainActivity.this,MainActivityQQ.class);// Toast.makeText(MainActivityQQ.this,"QQ已授权登录",Toast.LENGTH_SHORT).show();finish();}@Overridepublic void onError(SHARE_MEDIA platform, int action, Throwable t) {Toast.makeText( getApplicationContext(), "授权错误", Toast.LENGTH_SHORT).show();}
@Overridepublic void onCancel(SHARE_MEDIA platform, int action) {Toast.makeText( getApplicationContext(), "授权失败", Toast.LENGTH_SHORT).show();}};
onActivityResult实现方法如下:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
}
可以在退出登录状态的时候添加如下代码
可以取消授权 避免App只可以登录一个QQ号
也可自己设置点击事件退出登录
@Override
protected void
onDestroy() {
super
.onDestroy();
UMShareAPI.
get
(MainActivity.
this
).
deleteOauth(MainActivity.
this
, SHARE_MEDIA.
QQ
,
null
);
}
3. 用户资料基本信息解析如下
在返回的map中各个信息对应的key值如下
qq:
name:name(6.2以前用screen_name)
用户id:uid
accesstoken: accessToken (6.2以前用access_token)
过期时间:expiration (6.2以前用expires_in)
性别:gender
头像:iconurl(6.2以前用profile_image_url)
是否黄钻:is_yellow_year_vip
黄钻等级:yellow_vip_level
城市:city
省份:province
QQ目前uid暂时无法实现多个应用间打通操作,但QQ预留了unionID字段,但获取此字段需要单独和腾讯申请权限,邮箱connect@qq.com
报错必看
http://bbs.umeng.com/thread-17764-1-1.html
根据提示,缺少资源文件:
packageName=com.umeng.soexample type=string name=umeng_socialize_male
表明你缺少的文件类型,可能是string,drawable,layout等资源类型,你只需要在你下载的包中对应的string文件或布局文件的文件夹中去找即可。
请去sdk下载包的路径下:umeng_android_social_sdk_6.4.3_custom\main\res\values
拷贝所有文件到自己工程的values中。