Can';在android应用程序中登录Facebook后,不要启动其他活动
我已经尝试了很多将facebook登录集成到我的android应用程序中。我取得了部分成功。现在我的问题是,成功登录facebook后,我无法重定向到其他活动。我想这是因为我不是在一个合适的地方叫这个活动。我的意思是我不能在会议结束前调用activity。我在这里附上了我的代码Can';在android应用程序中登录Facebook后,不要启动其他活动,android,android-facebook,Android,Android Facebook,我已经尝试了很多将facebook登录集成到我的android应用程序中。我取得了部分成功。现在我的问题是,成功登录facebook后,我无法重定向到其他活动。我想这是因为我不是在一个合适的地方叫这个活动。我的意思是我不能在会议结束前调用activity。我在这里附上了我的代码 public class FacebookLogin extends Activity { private static List<String> permissions;
public class FacebookLogin extends Activity {
private static List<String> permissions;
Session.StatusCallback statusCallback = new SessionStatusCallback();
ProgressDialog dialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LoginButton authButton = (LoginButton) findViewById(R.id.authButton);
// authButton.setFragment(this);
/***** FB Permissions *****/
permissions = new ArrayList<String>();
permissions.add("email");
/***** End FB Permissions *****/
authButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Check if there is any Active Session, otherwise Open New Session
Session session = Session.getActiveSession();
if(!session.isOpened()) {
session.openForRead(new Session.OpenRequest(FacebookLogin.this).setCallback(statusCallback).setPermissions(permissions));
} else {
Session.openActiveSession(FacebookLogin.this, true, statusCallback);
}
}
});
Session session = Session.getActiveSession();
if(session == null) {
if(savedInstanceState != null) {
session = Session.restoreSession(this, null, statusCallback, savedInstanceState);
}
if(session == null) {
session = new Session(this);
}
Session.setActiveSession(session);
session.addCallback(statusCallback);
if(session.getState().equals(SessionState.CREATED_TOKEN_LOADED)) {
session.openForRead(new Session.OpenRequest(this).setCallback(statusCallback).setPermissions(permissions));
}
}
}
private class SessionStatusCallback implements Session.StatusCallback {
@Override
public void call(Session session, SessionState state, Exception exception) {
//Check if Session is Opened or not
processSessionStatus(session, state, exception);
}
}
@SuppressWarnings("deprecation")
public void processSessionStatus(Session session, SessionState state, Exception exception) {
if(session != null && session.isOpened()) {
if(session.getPermissions().contains("email")) {
//Show Progress Dialog
dialog = new ProgressDialog(FacebookLogin.this);
dialog.setMessage("Loggin in..");
dialog.show();
Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {
@Override
public void onCompleted(GraphUser user, Response response) {
if (dialog!=null && dialog.isShowing()) {
dialog.dismiss();
}
if(user != null) {
Map<String, Object> responseMap = new HashMap<String, Object>();
GraphObject graphObject = response.getGraphObject();
responseMap = graphObject.asMap();
Log.i("FbLogin", "Response Map KeySet - " + responseMap.keySet());
// TODO : Get Email responseMap.get("email");
String fb_id = user.getId();
String email = null;
String name = (String) responseMap.get("name");
if (responseMap.get("email")!=null) {
email = responseMap.get("email").toString();
//TODO Login successfull Start your next activity
Intent intent = new Intent(FacebookLogin.this, UserAccount.class);
/*Sending some arguments*/
Bundle bundle = new Bundle();
bundle.putString("UserName",name );
bundle.putString("Id", email);
intent.putExtras(bundle);
startActivity(intent);
}
else {
//Clear all session info & ask user to login again
Session session = Session.getActiveSession();
if(session != null) {
session.closeAndClearTokenInformation();
}
}
}
}
});
} else {
session.requestNewReadPermissions(new Session.NewPermissionsRequest(FacebookLogin.this, permissions));
}
}
}
/********** Activity Methods **********/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.d("FbLogin", "Result Code is - " + resultCode +"");
Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
/*if(resultCode==RESULT_OK) {
Intent i = new Intent(FacebookLogin.this,UserAccount.class);
startActivity(i);
} */}
@Override
protected void onSaveInstanceState(Bundle outState) {
// TODO Save current session
super.onSaveInstanceState(outState);
Session session = Session.getActiveSession();
Session.saveSession(session, outState);
}
@Override
protected void onStart() {
// TODO Add status callback
super.onStart();
Session.getActiveSession().addCallback(statusCallback);
}
@Override
protected void onStop() {
// TODO Remove callback
super.onStop();
Session.getActiveSession().removeCallback(statusCallback);
}
公共类FacebookLogin扩展活动{
私有静态列表权限;
Session.StatusCallback StatusCallback=新会话StatusCallback();
进程对话;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LoginButton authButton=(LoginButton)findViewById(R.id.authButton);
//setFragment(this);
/*****FB权限*****/
权限=新建ArrayList();
权限。添加(“电子邮件”);
/*****结束FB权限*****/
authButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO检查是否有任何活动会话,否则打开新会话
Session=Session.getActiveSession();
如果(!session.isOpened()){
session.openForRead(newsession.OpenRequest(FacebookLogin.this).setCallback(statusCallback).setPermissions(permissions));
}否则{
openActiveSession(FacebookLogin.this,true,statusCallback);
}
}
});
Session=Session.getActiveSession();
if(会话==null){
如果(savedInstanceState!=null){
session=session.restoreSession(this,null,statusCallback,savedInstanceState);
}
if(会话==null){
会话=新会话(本);
}
Session.setActiveSession(Session);
session.addCallback(statusCallback);
if(session.getState().equals(SessionState.CREATED\u TOKEN\u LOADED)){
session.openForRead(newsession.OpenRequest(this).setCallback(statusCallback).setPermissions(permissions));
}
}
}
私有类SessionStatusCallback实现Session.StatusCallback{
@凌驾
公共无效调用(会话、会话状态、异常){
//检查会话是否已打开
processSessionStatus(会话、状态、异常);
}
}
@抑制警告(“弃用”)
public void processSessionStatus(会话会话、会话状态、异常){
if(session!=null&&session.isOpened()){
if(session.getPermissions()包含(“电子邮件”)){
//显示进度对话框
dialog=newprogressdialog(FacebookLogin.this);
setMessage(“登录…”);
dialog.show();
Request.executeRequestAsync(会话,新请求.GraphUserCallback(){
@凌驾
未完成公共无效(GraphUser用户,响应){
if(dialog!=null&&dialog.isShowing()){
dialog.dismise();
}
如果(用户!=null){
Map responseMap=newhashmap();
GraphObject GraphObject=response.getGraphObject();
responseMap=graphObject.asMap();
Log.i(“FbLogin”,“响应映射键集-”+响应映射键集());
//TODO:获取电子邮件响应map.Get(“电子邮件”);
字符串fb_id=user.getId();
字符串email=null;
字符串名称=(字符串)responseMap.get(“名称”);
if(responseMap.get(“email”)!=null){
email=responseMap.get(“email”).toString();
//TODO登录成功开始您的下一个活动
Intent Intent=新的Intent(FacebookLogin.this,UserAccount.class);
/*发送一些参数*/
Bundle=新Bundle();
bundle.putString(“用户名”,名称);
bundle.putString(“Id”,电子邮件);
意向。额外支出(捆绑);
星触觉(意向);
}
否则{
//清除所有会话信息并要求用户再次登录
Session=Session.getActiveSession();
if(会话!=null){
session.closeAndClearTokenInformation();
}
}
}
}
});
}否则{
session.requestNewReadPermissions(newsession.NewPermissionsRequest(FacebookLogin.this,permissions));
}
}
}
/**********活动方法**********/
@凌驾
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
Log.d(“FbLogin”,“结果代码为-”+resultCode+”);
Session.getActiveSession().onActivityResult(此、请求代码、结果代码、数据);
/*if(resultCode==RESULT\u OK){
Intent i=新的Intent(FacebookLogin.this,UserAccount.class);
星触觉(i);
} */}
@凌驾
SaveInstanceState上受保护的无效(束超出状态){
//TODO保存当前会话
super.onSaveInstanceState(超出状态);
Session=Session.getActiveSession();
Session.saveSession(Session,outState);
}
@凌驾
受保护的void onStart(){
//TODO添加状态回调
super.onStart();
Session.getActiveSession().addCallback(statusCallback);
}
@凌驾
受保护的void onStop(){
//TODO删除回调
super.onStop();
Session.getActiveSession().removeCallback(statusCallback);
}
请帮助我。您有任何错误吗?在这里,我没有收到任何错误,但在登录后,它将返回到调用facebook loginIt的上一个活动。它将始终调用上一个活动,因为您已以
onActivityResult
的形式启动该活动,并将结果传递回上一个活动。因此