android – 在Twitter OAuth结束后返回活动

我使用我的清单中的intent-filter在我的应用程序中使用Twitter OAuth.我是如何实现它的,一旦用户点击按钮通过Twitter发布我就开始一个新的Activity(让我们称之为TwitterLoginActivity),新的TwitterLoginActivity创建一个新的Intent与authUrl,如下所示:

Intent oauthIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl));

这将打开一个浏览器,我授权我的应用程序,并返回TwitterLoginActivity的onResume()函数.在这一点上,我发布到Twitter很好,并在此活动上完成().

所有这一切都像一个冠军,但在调用这个完成()它返回到我刚刚授权的Twitter.com网页.我不太了解活动堆栈是如何工作的,但是无论如何要移除我看到的所有Twitter.com的WebViews并在那里完成()它只返回到我的应用程序中用户的原始点点击了帖子按钮?

解决方法:

我不知道你是否解决了你的问题,但昨天我遇到了同样的问题,我这样解决了:

1)为了让Webbrowser在Twitter上登录,添加一个标志:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl));
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.addFlags(Intent.FLAG_FROM_BACKGROUND);
startActivity(intent); 

2)在Manifest中,您声明启动intent的TwitterLoginActivity,添加属性

android:launchMode="singleTask"

3)当使用Twitter登录完成后,Webbrowser完成并返回到TwitterLoginActivity但由于singleTask启动模式而未调用onCreate,而是调用onNewIntent.要保存令牌和令牌密钥,您必须将代码从onResume移动到OnNewIntent.

现在,如果您按下后退按钮或完成TwitterLoginActivity,它将转到上一个活动,Webbrowser将再次显示.

我希望这有帮助!

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...