private void addQQPlatform() {
String appId = AppConstants.QQZONE_APPID;
String appKey = AppConstants.QQZONE_APPKEY;
// 添加QQ支持, 并且设置QQ分享内容的target url
UMQQSsoHandler qqSsoHandler = new UMQQSsoHandler(SettingActivity.this,
appId, appKey);
qqSsoHandler.setTargetUrl(“http://www.umeng.com”);
qqSsoHandler.addToSocialSDK();
}
在Onclick方法中处理点击事件:
登录方法
/**
-
授权。如果授权成功,则获取用户信息
-
@param platform
*/
private void login(final SHARE_MEDIA platform) {
mController.doOauthVerify(SettingActivity.this, platform,
new UMAuthListener() {
@Override
public void onStart(SHARE_MEDIA platform) {
LogUtils.logi(TAG, “onStart------”
- Thread.currentThread().getId());
ToastUtils.showShort(SettingActivity.this,
getString(R.string.oauth_begin));
}
@Override
public void onError(SocializeException e,
SHARE_MEDIA platform) {
LogUtils.logi(TAG, “onError------”
- Thread.currentThread().getId());
ToastUtils.showShort(SettingActivity.this,
getString(R.string.oauth_fail));
}
@Override
public void onComplete(Bundle value, SHARE_MEDIA platform) {
LogUtils.logi(TAG, “onComplete------”
- Thread.currentThread().getId());
// 获取uid
String uid = value.getString(“uid”);
if (value != null && !TextUtils.isEmpty(uid)) {
// uid不为空,获取用户信息
getUserInfo(platform);
} else {
ToastUtils.showShort(SettingActivity.this,
getString(R.string.oauth_fail));
}
}
@Override
public void onCancel(SHARE_MEDIA platform) {
LogUtils.logi(TAG, “onCancel------”
- Thread.currentThread().getId());
ToastUtils.showShort(SettingActivity.this,
getString(R.string.oauth_cancle));
}
});
}
**
获取平台信息**
/**
-
获取用户信息
-
@param platform
*/
private void getUserInfo(final SHARE_MEDIA platform) {
mController.getPlatformInfo(SettingActivity.this, platform,
new UMDataListener() {
@Override
public void onStart() {
// 开始获取
showProgressDialog();
}
@Override
public void onComplete(int status, Map<String, Object> info) {
LogUtils.logi(“third login”, info.toString());
String sns_id = “”;
String sns_avatar = “”;
String sns_loginname = “”;
if (info != null) {
String sns = “”;
if (platform == SHARE_MEDIA.SINA) { // 新浪微博
sns = “sina”;
sns_id = info.get(“uid”).toString();
sns_avatar = info.get(“profile_image_url”)
.toString();
sns_loginname = info.get(“screen_name”)
.toString();
} else if (platform == SHARE_MEDIA.QQ) { // QQ
sns = “qq”;
sns_id = info.get(“uid”).toString();
sns_avatar = info.get(“profile_image_url”)
.toString();
sns_loginname = info.get(“screen_name”)
.toString();
} else if (platform == SHARE_MEDIA.WEIXIN) { // 微信
sns = “wechat”;
sns_id = info.get(“openid”).toString();
sns_avatar = info.get(“headimgurl”).toString();
sns_loginname = info.get(“nickname”).toString();
} else if (platform == SHARE_MEDIA.DOUBAN) { // 豆瓣
sns = “douban”;
sns_id = info.get(“uid”).toString();
sns_avatar = info.get(“profile_image_url”)
.toString();
sns_loginname = info.get(“screen_name”)
.toString();
}
LogUtils.loge(“weixin”, sns + “,” + sns_id + “,”
- sns_loginname);
HttpRequestHelper.getInstance().getUserBySns(
SettingActivity.this,
sns,
sns_id,
sns_avatar,
sns_loginname,
new GetUserBySnsResponse(platform, sns,
sns_id, sns_avatar, sns_loginname));
}
}
});
}
解除绑定方法
/**
-
注销本次登陆
-
@param platform
*/
private void logout(final SHARE_MEDIA platform) {
mController.deleteOauth(SettingActivity.this, platform,
new SocializeClientListener() {
@Override
public void onStart() {
}
@Override
public void onComplete(int status, SocializeEntity entity) {
String showText = “解除” + platform.toString() + “平台授权成功”;
if (status != StatusCode.ST_CODE_SUCCESSED) {
showText = “解除” + platform.toString() + “平台授权失败[”
- status + “]”;
} else {
if (platform == SHARE_MEDIA.SINA) {
sinaBindingText
.setText(getString(R.string.setting_unbind));
StorageUtils.setShareValue(
SettingActivity.this,
StorageUtils.KEY_SINA_BINDING, false);
} else if (platform == SHARE_MEDIA.QQ) {
qqBindingText
.setText(getString(R.string.setting_unbind));
StorageUtils.setShareValue(
SettingActivity.this,
StorageUtils.KEY_QQ_BINDING, false);
}
}
Toast.makeText(SettingActivity.this, showText,
Toast.LENGTH_SHORT).show();
}
});
}
取消对话框
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)
![](https://i-blog.csdnimg.cn/blog_migrate/6630eeaeda7ca617d11ba1e8390c428d.jpeg)
最后
我一直以来都有整理练习大厂面试题的习惯,有随时跳出舒服圈的准备,也许求职者已经很满意现在的工作,薪酬,觉得习惯而且安逸。
不过如果公司突然倒闭,或者部门被裁减,还能找到这样或者更好的工作吗?
我建议各位,多刷刷面试题,知道最新的技术,每三个月可以去面试一两家公司,因为你已经有不错的工作了,所以可以带着轻松的心态去面试,同时也可以增加面试的经验。
我可以将最近整理的一线互联网公司面试真题+解析分享给大家,大概花了三个月的时间整理2246页,帮助大家学习进步。
由于篇幅限制,文档的详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!以下是部分内容截图:
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
找到这样或者更好的工作吗?
我建议各位,多刷刷面试题,知道最新的技术,每三个月可以去面试一两家公司,因为你已经有不错的工作了,所以可以带着轻松的心态去面试,同时也可以增加面试的经验。
我可以将最近整理的一线互联网公司面试真题+解析分享给大家,大概花了三个月的时间整理2246页,帮助大家学习进步。
由于篇幅限制,文档的详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!以下是部分内容截图:
[外链图片转存中…(img-JC66UOC3-1712441543839)]
[外链图片转存中…(img-afqFDAeU-1712441543839)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!