0

我正在使用 Twitter4J 从不是应用程序启动活动的活动中向 Twitter 授权。到目前为止,我有一个名为“AuthorisationActivity”的单独活动,它返回一个带有有效 Twitter4j twitter 对象的意图,然后可以由调用活动“CallAuthorisationActivity”使用。
来自 twitter 的回调工作正常,我最终在 AuthorisationActivity 中得到了一个授权的 twitter 对象,但现在我发现自己处于 catch22 情况:1 - 如果我没有将 AuthorisationActivity 的启动模式设置为“singleTask”,回调将不会返回到 AuthorisationActivity 的 onNewIntent() 方法,但到它的 onCreate() 方法并尝试在无限循环中进行身份验证。2 - 如果我确实将 AuthorisationActivity 的启动模式设置为“singleTask”,它将返回到 onNewIntent() 但由于它现在处于单独的任务中,它不会返回到调用活动的 onActivityResult() 方法。

我只是 Android 开发的初学者,并且由于身份验证有效,我认为这个问题更多地与活动的管理方式有关。以下是清单的简化摘录:

<activity 
    android:name=".MainActivity">
<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" /> 
</intent-filter>
</activity>

<activity
    android:name=".CallAuthorisationActivity">
</activity>

<activity 
    android:name=".AuthorisationActivity"
    android:label="@string/title_activity_authorisation">  
    <intent-filter>
    <action android:name="android.intent.action.VIEW" /> 
    <category android:name="android.intent.category.DEFAULT"/>  
    <category android:name="android.intent.category.BROWSABLE"/>  
    <data android:scheme="tweetree" android:host="callback" />
    </intent-filter>
</activity> 

在代码中,CallAuthorisationActivity 只是将带有 startActivityForResult(...) 的意图发送到 AuthorisationActivity 并按照标准在 onActivityResult(...) 中捕获结果。任何帮助将不胜感激,谢谢

4

1 回答 1

0

经过几个小时的研究,我发现了这个链接http://gtware.blogspot.com.au/2012/07/tweeting-from-android-apps-using.html#comment-form 经过一些更改后,它为我提供了一个优雅的解决方案。

正如我在该页面上评论的那样:使用 WebView 可以更轻松地处理回调,因为浏览器集成在应用程序中。所以根本不需要意图过滤器。

我只是更改了一些您可能感兴趣的内容:

1 - 我使用的是 Twitter 对象而不是 AsyncTwitter。Twitter 对象似乎更容易从 twitter 获取数据,例如从用户搜索 API 获取数据,并且它不需要 TwitterListener。

2 - 我的虚拟设备在调用 twitter.getOAuthRequestToken() 和 twitter.getOAuthAccessToken() 时崩溃,即使使用 AsyncTwitter 对象也是如此,因此我将它们封装在它们自己的 AsyncTask 线程中。

希望这可能会有所帮助...

于 2013-01-01T12:04:41.813 回答