第一步:创建工程
集成友盟第三方,创建工程时,包名:com.umeng.soexample
第二步:导入jar和res
将main文件夹以及platform(选择你想使用的平台即可)文件下,对应的资源文件和jar放入你的工程!
第三步:添加回调Activity
主要是qq和微信的回调
第四步:配置Android Manifest XML
-
<!--微信-->
-
<activity
-
android:name=
".wxapi.WXEntryActivity"
-
android:configChanges=
"keyboardHidden|orientation|screenSize"
-
android:exported=
"true"
-
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" />
-
</intent-filter>
-
</activity>
-
<activity
-
android:name=
"com.tencent.connect.common.AssistActivity"
-
android:configChanges=
"orientation|keyboardHidden|screenSize"
-
android:theme=
"@android:style/Theme.Translucent.NoTitleBar" />
第五步:添加权限
请在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.INTERNET" />
如果需要使用QQ纯图分享或避免其它平台纯图分享的时候图片不被压缩,可以增加以下权限:
-
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
-
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
Android6.0权限适配
请查看你的build.gradle
文件,如果 targetSdkVersion
小于或等于22,可以忽略这一步,如果大于或等于23,需要做权限的动态申请:
-
if(Build.VERSION.SDK_INT>=
23){
-
String[] mPermissionList =
new String[{
-
Manifest.permission.WRITE_EXTERNAL_STORAGE,
-
Manifest.permission.ACCESS_FINE_LOCATION,
-
Manifest.permission.CALL_PHONE,
-
Manifest.permission.READ_LOGS,
-
Manifest.permission.READ_PHONE_STATE,
-
Manifest.permission.READ_EXTERNAL_STORAGE,
-
Manifest.permission.SET_DEBUG_APP,
-
Manifest.permission.SYSTEM_ALERT_WINDOW,
-
Manifest.permission.GET_ACCOUNTS,
-
Manifest.permission.WRITE_APN_SETTINGS};
-
ActivityCompat.requestPermissions(
this,mPermissionList,
123);
-
}
-
-
-
-
-
@Override
-
public void onRequestPermissionsResult(int requestCode,
-
String permissions[], int[] grantResults) {
-
-
}
第六步:初始化设置
自己创建一个类,集成AppLication
-
@Override
-
public void onCreate() {
-
super.onCreate();
-
UMConfigure.init(
this,
"5a12384aa40fa3551f0001d1"
-
,
"umeng",UMConfigure.DEVICE_TYPE_PHONE,
"");
//58edcfeb310c93091c000be2 5965ee00734be40b580001a0
-
-
}
在onCreate方法中设置所需要的各个平台的appkey值
-
PlatformConfig.setWeixin(
"wxdc1e388c3822c80b",
"3baf1193c85774b3fd9d18447d76cab0");
-
//豆瓣RENREN平台目前只能在服务器端配置
-
PlatformConfig.setSinaWeibo(
"3921700954",
"04b48b094faeb16683c32669824ebdad",
"http://sns.whalecloud.com");
-
PlatformConfig.setYixin(
"yxc0614e80c9304c11b0391514d09f13bf");
-
PlatformConfig.setQQZone(
"100424468",
"c7394704798a158208a74ab60104f0ba");
-
PlatformConfig.setTwitter(
"3aIN7fuF685MuZ7jtXkQxalyi",
"MK6FEYG63eWcpDFgRYw4w9puJhzDl0tyuqWjZ3M7XJuuG7mMbO");
-
PlatformConfig.setAlipay(
"2015111700822536");
-
PlatformConfig.setLaiwang(
"laiwangd497e70d4",
"d497e70d4c3e4efeab1381476bac4c5e");
-
PlatformConfig.setPinterest(
"1439206");
-
PlatformConfig.setKakao(
"e4f60e065048eb031e235c806b31c70f");
-
PlatformConfig.setDing(
"dingoalmlnohc0wggfedpk");
-
PlatformConfig.setVKontakte(
"5764965",
"5My6SNliAaLxEm3Lyd9J");
-
PlatformConfig.setDropbox(
"oz8v5apet3arcdy",
"h7p2pjbzkkxt02a");
-
PlatformConfig.setYnote(
"9c82bf470cba7bd2f1819b0ee26f86c6ce670e9b");
-
最后在AndroidManifest文件中配置;
第七步:签名配置
1、将签名文件复制到app下边
2、配置签名文件
或者ctrl+alt+shift+s打开
3、
比对着配置;其中keyAlias是别名;keyPassword是签名文件密码;storePassword是确认密码;Store File是自己的签名文件的本工程的路径;
然后:
ok就完事了;
第八步:开始第三方登录
在Activity中写代码;
获取用户资料
获取用户资料可以使用如下接口:
在需要的位置的点击事件中写
UMShareAPI.get(上下文).getPlatformInfo(UserinfoActivity.this(上下文), SHARE_MEDIA.SINA(需要登录的平台), umAuthListener(登录回调的监听));
其中umAuthListener为授权回调,构建如下:
-
UMAuthListener authListener =
new UMAuthListener() {
-
/**
-
* @desc 授权开始的回调
-
* @param platform 平台名称
-
*/
-
@Override
-
public void onStart(SHARE_MEDIA platform) {
-
-
}
-
-
/**
-
* @desc 授权成功的回调
-
* @param platform 平台名称
-
* @param action 行为序号,开发者用不上
-
* @param data 用户资料返回
-
*/
-
@Override
-
public void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) {
-
-
Toast.makeText(mContext,
"成功了", Toast.LENGTH_LONG).show();
-
-
}
-
-
/**
-
* @desc 授权失败的回调
-
* @param platform 平台名称
-
* @param action 行为序号,开发者用不上
-
* @param t 错误原因
-
*/
-
@Override
-
public void onError(SHARE_MEDIA platform, int action, Throwable t) {
-
-
Toast.makeText(mContext,
"失败:" + t.getMessage(), Toast.LENGTH_LONG).show();
-
}
-
-
/**
-
* @desc 授权取消的回调
-
* @param platform 平台名称
-
* @param action 行为序号,开发者用不上
-
*/
-
@Override
-
public void onCancel(SHARE_MEDIA platform, int action) {
-
Toast.makeText(mContext,
"取消了", Toast.LENGTH_LONG).show();
-
}
-
};
其中登录成功后的各种操作(跳转、传值等)都在授权回调的onComplete中执行;
public void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) {
Toast.makeText(mContext, "成功了", Toast.LENGTH_LONG).show();
}
各种数据都在Map集合中;
登录QQ返回的Map集合中的信息
通过Intent传值跳转就可以把需要的数据传递到下一个页面了;
第九步:授权问题
第一次授权登录成功后,再次进行登录,回默认授权成功
如果需要每次登录都提示登录页面,需要在activity中添加一下代码:
-
UMShareConfig config =
new UMShareConfig();
-
config.isNeedAuthOnGetUserInfo(
true);
-
UMShareAPI.
get(InfoDetailActivity.
this).setShareConfig(config);
目前SDK默认设置为在Token有效期内登录不进行二次授权,如果有需要每次登录都弹出授权页面,便于切换账号的开发者可以添加上述代码