【问题标题】:Android finish activity after callback is done回调完成后Android完成活动
【发布时间】:2014-11-11 07:32:11
【问题描述】:

在我的 android 应用程序中,我使用 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 回调 - 我的意思是路标打开 webbrowser,并在成功登录后重定向到活动登录(此 webbrowser 被触发的位置以及 onNewIntent 的位置)
  • 表示当您成功登录 twitter 后,您会看到“登录成功”屏幕。您希望在那里完成您的LoginActivity。 PS - 在“登录成功”时,我认为您可能不会在 android 中收到任何回调。
  • 您希望在此处完成 LoginActivity - 是的。那么该怎么做呢? )
  • 你的 uri *** 里写了什么?我想应该是(uri != null && uri.getScheme().equals(Constants.OAUTH_CALLBACK_SCHEME)),这样它才能识别callBack。

标签: android android-intent android-activity twitter callback


【解决方案1】:

从处理返回结果的活动中,您必须添加类似这样的内容;

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

完成此操作后,在前一个 Activity(将处理结果的那个)上,您必须执行以下操作;

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode == RESULT_OK) {
            if (requestCode == YOUR_REQUEST_CODE) { 
            //Do something with "data"
}

希望对您有所帮助,更多信息请访问The Documentation

【讨论】:

    【解决方案2】:

    您的意思是登录返回时永远不会调用 onNewIntent() ? 尝试检查您的 AndroidManifest.xml。您的 Activity 是否有 android:launchMode="singleTask" 标志?

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-10
    • 2011-06-13
    相关资源
    最近更新 更多