在Android中通过user_mention(@user)从Twitter获取推文

时间:2015-07-24 07:46:17

标签: java android twitter twitter4j twitter-fabric

我正在开发一个推特集成的Android应用程序。我想从Twitter获取user_mention的推文。我在twitter dev http://docs.fabric.io/android/twitter/show-timelines.html上看到了这个文档。

以下是代码的一部分: -

 public class TimelineActivity extends ListActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.timeline);

        TwitterAuthConfig authConfig =  new TwitterAuthConfig("xxxxxxbbbbwdqddq", "eieuhquifhioqhfiohqoifhoi");
        Fabric.with((this), new TwitterCore(authConfig), new TweetUi());

        UserTimeline userTimeline = new UserTimeline.Builder().screenName("fabric").build();

使用这种方法我按照screen name得到时间表。但是我希望所有提到特定用户的推文(前 - @user而不是时间轴。我已经尝试了fabric,但我也可以尝试twitter4j。因此,如果您知道如何执行此操作(使用fabrictwitter 4j),则会有所帮助。提前谢谢。

2 个答案:

答案 0 :(得分:1)

根据您的要求,Twitter搜索API是最佳解决方案。如果是Twitter Fabric,您可以使用SearchService。您可以从Fabric的Twitter客户端获取SearchService。如下:

    Fabric.with(this, new Twitter(authConfig));
   TwitterSession currentSession = Twitter.getSessionManager().getActiveSession();
   TwitterApiClient twitterApiClient = new TwitterApiClient(currentSession); 
   SearchService searchService       = twitterApiClient.getSearchService();
//Other services in Fabric Twitter
   AccountService accountService     =twitterApiClient.getAccountService();
   StatusesService statusesService   = twitterApiClient.getStatusesService();
   FavoriteService favoriteService   = twitterApiClient.getFavoriteService();

以下是搜索服务的请求模板:

public interface SearchService {
@GET("/1.1/search/tweets.json")
void tweets(@Query("q") String var1, @EncodedQuery("geocode") Geocode var2, @Query("lang") String var3, @Query("locale") String var4, @Query("result_type") String var5, @Query("count") Integer var6, @Query("until") String var7, @Query("since_id") Long var8, @Query("max_id") Long var9, @Query("include_entities") Boolean var10, Callback<Search> var11);
}

在这里,您必须输入您的查询来代替&#34; q&#34; 。输入所需的查询,您将获得结果。您可以在Twitter的开发者控制台Twitter Developer Console中尝试查询。

使用它的示例代码:

searchService.tweets("@ladygaga", null, null, null, SEARCH_RESULT_TYPE, SEARCH_COUNT, null, null,
        maxId, true, new Callback<Search>() {
            @Override
            public void success(Result<Search> searchResult) {
                final List<Tweet> tweets = searchResult.data.tweets;
                // Use tweets as you like
            }

            @Override
            public void failure(TwitterException error) {

            }
        }

);

例如,搜索所有提及 ladygaga 的推文,您的查询将为 https://twitter.com/search?q=%40ladygaga&src=typd 。这里的q是&#34;%40ladygaga&#34; 。您也可以使用您的Twitter帐户进行试用。检查地址栏中的网址。它给出了应该查询什么的提示。

有关如何构建查询的更多信息,请查看 How to Build Twitter Search Queries 希望它有所帮助。

答案 1 :(得分:1)

你可以尝试一下!我的应用程序用得非常好!

public class...
UserTimeline userTimeline;
String username;
TwitterSession session;
TweetTimelineListAdapter adapter;
..... oncreate()....
TwitterAuthConfig authConfig = new TwitterAuthConfig("Xcp2iipj28BMVda6OSxVAwwLz", "grZ1IJYIHUPQsrf8F8fsbA06O55bfRGENW8mPbDTspoVKcV1xS");
            Fabric.with(getActivity(), new TwitterCore(authConfig), new TweetUi());
            if (android.os.Build.VERSION.SDK_INT > 9) {
                StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
                StrictMode.setThreadPolicy(policy);
            }
            session = Twitter.getSessionManager().getActiveSession();
            username = session.getUserName();
            userTimeline = new UserTimeline.Builder()
                    .screenName(username)
                    .build();
            adapter = new TweetTimelineListAdapter.Builder(getActivity())
                    .setTimeline(userTimeline)
                    .build();
                    setListAdapter(adapter);