我正在开发一个推特集成的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
。因此,如果您知道如何执行此操作(使用fabric
或twitter 4j
),则会有所帮助。提前谢谢。
答案 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);