我可以通过onNewIntent()方法以任何其他方式获取我的Android应用中的Twitter API响应吗?

时间:2013-03-19 21:47:30

标签: android twitter twitter4j

我对Android的开发经验不多。我正在开发应用程序,可以与Facebook,Twitter,LinkedIn和Google+进行通信。

每个社交网络都有自己的包装器,用于处理Android应用和社交网络之间的通信。 Facebook的沟通已经完成。我有Twitter通讯的问题。我在互联网上找到的实施使用twitter4j库和互联网浏览器进行日志记录。然后,您必须从浏览器中读取响应数据。

例如:Twitter Test App

我的问题是从浏览器中读取此响应数据。在浏览器中记录和授权没有问题。像我上面提到的教程通常使用onNewIntent()Activity方法来处理浏览器响应。但我不能使用这种方法,因为它用于不同的目的。我不知道除了MainActivity之外没有任何其他活动是否可行,或者我需要在包装器中创建另一个Activity,它将处理整个Twitter通信。

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

我真的不确定为什么互联网上的twitter4j这么多例子会通过意图和自定义方案来处理回调网址。我发现大多数情况都很尴尬。我也不喜欢让应用程序去浏览器登录。

相反,请尝试使用WebView加载页面。然后,您可以附加可以检测回调URL的WebViewClient。您也不必处理更改清单等问题。您可以在onCreateView

中的DialogFragment内进行此类操作
mWebView = new WebView(context);
mWebView.setWebViewClient(new WebViewClient() {
    @Override
    public void onLoadResource(WebView view, String url) {
        if (url.startsWith(CALLBACK_URL)) {
            Uri uri = Uri.parse(url);
            String denied = uri.getQueryParameter("denied");
            if (denied != null) {
                // handle denied
            } else {
                // handle authenticated
            }
        }
        super.onLoadResource(view, url);
    }
});

然后您可以在onViewCreated中加载身份验证网址(如果您在DialogFragment中执行此操作):

    Twitter twitter = new TwitterFactory().getInstance();
    twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET);
    RequestToken reqToken = twitter.getOAuthRequestToken();
    mWebView.loadUrl(reqToken.getAuthenticationURL());