集成准备
获取Appkey
集成【友盟+】SDK之前,您首先需要到 【友盟+】官网注册并且添加新应用,获得Appkey。
权限配置:
<!-- 第三方登录集成使用的权限 -->
<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" />
<!-- 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:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<!-- 微信 -->
<activity
android:name=".wxapi.WXEntryActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<!-- 添加友盟appkey -->
注意:是自己注册并且添加新应用,获得Appkey
android:value="--自己的key--" 与Activity同级
<meta-data
android:name="UMENG_APPKEY"
android:value="5ac04640b27b0a593b000695" />
1.集成友盟SDK 解压后如图
2.使用友盟集成工具生成自己想得到的jar包
将自动生成的代码copy到项目
授权登陆,首先要在Application中配置
{
PlatformConfig.setWeixin("wx967daebe835fbeac", "5bb696d9ccd75a38c8a0bfe0675559b3");
PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba");
PlatformConfig.setSinaWeibo("3921700954", "04b48b094faeb16683c32669824ebdad", "http://sns.whalecloud.com");
}
@Override
public void onCreate() {
super.onCreate();
//开启debug模式,方便定位错误,具体错误检查方式可以查看http://dev.umeng.com/social/android/quick-integration的报错必看,正式发布,请关闭该模式
Config.DEBUG = true;
QueuedWork.isUseThreadPool = false;
UMShareAPI.get(this);
}
注意:新浪配置回调和微信配置回调 微信回调类最好放在wxapi文件夹下虽然这两个类是空的 但必须配置
新浪 :
import com.umeng.socialize.media.WBShareCallBackActivity;
public class WBShareActivity extends WBShareCallBackActivity {
}
微信:
import com.umeng.weixin.callback.WXCallbackActivity;
//import com.umeng.socialize.weixin.view.WXCallbackActivity;
public class WXEntryActivity extends WXCallbackActivity {
}
在第三方登录的MainActivity中:
/**
* 友盟配置
*/
private void youmengConfig() {
UMShareConfig config = new UMShareConfig();
config.isNeedAuthOnGetUserInfo(true);
UMShareAPI.get(LoginRegisterActivity.this).setShareConfig(config);
//权限适配
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);
}
}
QQ登录点击事件中
UMShareAPI.get(LoginRegisterActivity.this)
.getPlatformInfo(LoginRegisterActivity.this, SHARE_MEDIA.QQ, authListener);
//获取用户资料授权
private UMAuthListener authListener = new UMAuthListener() {
private String name;
private String image_url;
/**
* @param platform 平台名称
* @desc 授权开始的回调
*/
@Override
public void onStart(SHARE_MEDIA platform) {
}
/**
* @param platform 平台名称
* @param action 行为序号,开发者用不上
* @param data 用户资料返回
* @desc 授权成功的回调
*/
@Override
public void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) {
Toast.makeText(LoginRegisterActivity.this, "成功了", Toast.LENGTH_LONG).show();
//得到用户资料
Set<String> set = data.keySet();
for (String string : set) {
// 设置头像
if (string.equals("profile_image_url")) {
image_url = data.get(string);
Log.i("-------image", image_url);
}
// 设置昵称
if (string.equals("screen_name")) {
name = data.get(string);
}
}
}
/**
* @desc 授权失败的回调
* @param platform 平台名称
* @param action 行为序号,开发者用不上
* @param t 错误原因
*/
@Override
public void onError(SHARE_MEDIA platform, int action, Throwable t) {
Toast.makeText(LoginRegisterActivity.this, "失败:" + t.getMessage(), Toast.LENGTH_LONG).show();
}
/**
* @desc 授权取消的回调
* @param platform 平台名称
* @param action 行为序号,开发者用不上
*/
@Override
public void onCancel(SHARE_MEDIA platform, int action) {
Toast.makeText(LoginRegisterActivity.this, "取消了", Toast.LENGTH_LONG).show();
}
};
/**
* @desc 回调方法
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
}