Android回调完成后关闭Activity

3
在我的安卓应用程序中,我使用signpost库来进行Twitter的oauth签名。在代码中,我尝试使用onNewIntent捕获回调,但是当我尝试结束这个活动时,我发现有一些错误 - 当我写完之后,回调没有返回到应用程序:
@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    Uri uri = intent.getData();
    if (uri ***) {
        twitterOauthHelper.saveKeyAndSecret(uri);
        setResult(RESULT_OK);
        finish();
    } else {
        displayToast("Sign in: error occurred.");
    }
}

但是,我该如何在从浏览器 Twitter 登录返回成功登录标志的回调后才完成此活动?


回调函数在哪个类中?你在哪里使用了这个 onNewIntent 函数? - Darpan
当您成功登录 Twitter 时,会出现“登录成功”屏幕。在那里,您希望完成您的 LoginActivity。 PS - 在 Android 中,“登录成功”时我认为您可能不会收到任何回调。 - Darpan
你想完成你的LoginActivity - 是吗?那么怎么做呢?) - brabertaser19
我是这样做的:https://github.com/ddewaele/AndroidTwitterSample - brabertaser19
如果成功登录后重定向到LoginActivity,则我认为您可以覆盖onRestoreInstanceState方法并将this.finish()添加为其最后一条语句。或者,您仍然可以通过在onActivityResult回调方法中添加this.finish()来完成。 - Akah
显示剩余8条评论
2个回答

2

在处理返回结果的Activity中,您必须添加如下内容:

Intent returnIntent = new Intent();
returnIntent.putExtra("extras", extras); //This is just an example extra.
setResult(RESULT_OK, returnIntent); //This is the important part.
finish();

完成这一步骤后,在处理结果的前一个活动中,您必须执行以下操作:
@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode == RESULT_OK) {
            if (requestCode == YOUR_REQUEST_CODE) { 
            //Do something with "data"
}

希望能有所帮助,更多信息请参考文档

0

你的意思是当登录返回时,onNewIntent() 没有被调用?试着检查一下你的 AndroidManifest.xml 文件。你的 Activity 是否有 android:launchMode="singleTask" 标志?


所有这些工作都不在这个问题中!请查看http://chat.stackoverflow.com/rooms/64764/discussion-between-darpan-and-brabertaser1992。 - brabertaser19

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接