使用友盟社会分享化组件调用QQ登录逻辑会多次获取授权
public class MainActivity extends AppCompatActivity {
public
ArrayList<SnsPlatform>
platforms
=
new
ArrayList<SnsPlatform>();
//以后加入新浪,微信等平台
private
SHARE_MEDIA[]
list
= {SHARE_MEDIA.
QQ
};
private boolean
authorize
;
@Override
protected void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.
activity_main
);
initPlatforms();
initView();
//进入判断权限是否授权
authorize
= UMShareAPI.
get
(
this
).isAuthorize(
this
,
platforms
.get(
0
).
mPlatform
);
}
private void
initView() {
ImageView main_qq_login = (ImageView) findViewById(R.id.
main_qq_login
);
main_qq_login.setOnClickListener(
new
View.OnClickListener() {
@Override
public void
onClick(View view) {
//调用监听回调方法
UMShareAPI.
get
(MainActivity.
this
).getPlatformInfo(MainActivity.
this
,
platforms
.get(
0
).
mPlatform
,
umAuthListener
);
if
(
authorize
) {
//删除授权
UMShareAPI.
get
(MainActivity.
this
).deleteOauth(MainActivity.
this
,
platforms
.get(
0
).
mPlatform
,
umAuthListener
);
}
else
{
//添加授权
UMShareAPI.
get
(MainActivity.
this
).doOauthVerify(MainActivity.
this
,
platforms
.get(
0
).
mPlatform
,
umAuthListener
);
}
}
}
});
private void
initPlatforms() {
platforms
.clear();
for
(SHARE_MEDIA e :
list
) {
if
(!e.toString().equals(SHARE_MEDIA.
GENERIC
.toString())) {
platforms
.add(e.toSnsPlatform());
}
}
UMAuthListener
umAuthListener
=
new
UMAuthListener() {
}
@Override
public void
onStart(SHARE_MEDIA share_media) {
}
@Override
public void
onComplete(SHARE_MEDIA share_media,
int
i, Map<String, String> map) {
Toast.
makeText
(MainActivity.
this
,
"
成功了
"
, Toast.
LENGTH_SHORT
).show();
switch
(i) {
case
ACTION_AUTHORIZE
:
break
;
case
ACTION_DELETE
:
break
;
case
ACTION_GET_PROFILE
:
Intent intent =
new
Intent(MainActivity.
this
, SecondAvtivity.
class
);
startActivity(intent);
break
;
default
:
break
;
}
}
@Override
public void
onError(SHARE_MEDIA share_media,
int
i, Throwable throwable) {
}
@Override
public void
onCancel(SHARE_MEDIA share_media,
int
i) {
}
};
//【重点】必须回调
@Override
protected void
onActivityResult(
int
requestCode,
int
resultCode, Intent data) {
super
.onActivityResult(requestCode, resultCode, data);
UMShareAPI.
get
(
this
).onActivityResult(requestCode, resultCode, data);
}
}