Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';在android应用程序中登录Facebook后,不要启动其他活动_Android_Android Facebook - Fatal编程技术网

Can';在android应用程序中登录Facebook后,不要启动其他活动

Can';在android应用程序中登录Facebook后,不要启动其他活动,android,android-facebook,Android,Android Facebook,我已经尝试了很多将facebook登录集成到我的android应用程序中。我取得了部分成功。现在我的问题是,成功登录facebook后,我无法重定向到其他活动。我想这是因为我不是在一个合适的地方叫这个活动。我的意思是我不能在会议结束前调用activity。我在这里附上了我的代码 public class FacebookLogin extends Activity { private static List<String> permissions;

我已经尝试了很多将facebook登录集成到我的android应用程序中。我取得了部分成功。现在我的问题是,成功登录facebook后,我无法重定向到其他活动。我想这是因为我不是在一个合适的地方叫这个活动。我的意思是我不能在会议结束前调用activity。我在这里附上了我的代码

  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
的形式启动该活动,并将结果传递回上一个活动。因此