Android 使用Twitter4j-4.0.2消费和过滤推文
我试图根据用户输入字符串获取Tweets并解析tweet文本,从tweet中提取web链接(忽略没有web链接的Tweets),并通过下一步按钮解析它以显示在WebView对话框中(因此,当单击以移动到下一个WebView(显示从tweet解析的链接的下一个内容))。我得到了tweets结果(没有过滤),我如何过滤它们并获得URL,以便为WebView解析它 以下是我在后台线程上运行的代码:Android 使用Twitter4j-4.0.2消费和过滤推文,android,twitter,webview,twitter4j,Android,Twitter,Webview,Twitter4j,我试图根据用户输入字符串获取Tweets并解析tweet文本,从tweet中提取web链接(忽略没有web链接的Tweets),并通过下一步按钮解析它以显示在WebView对话框中(因此,当单击以移动到下一个WebView(显示从tweet解析的链接的下一个内容))。我得到了tweets结果(没有过滤),我如何过滤它们并获得URL,以便为WebView解析它 以下是我在后台线程上运行的代码: @Override protected WebView doInBackgro
@Override
protected WebView doInBackground(String... strings) {
//Get userInput
String searchTerm = strings[0];
//Initialize Twitter Connection
ConfigurationBuilder builder = new ConfigurationBuilder();
builder.setDebugEnabled(true);
builder.setOAuthConsumerKey(sharedPreferences.getString(TwitterConstants.getPrefConsumerKey(), ""));
builder.setOAuthConsumerSecret(sharedPreferences.getString(TwitterConstants.getPrefConsumerSecret(), ""));
AccessToken accessToken = new AccessToken(sharedPreferences.getString(TwitterConstants.getPrefAccessToken(), ""), sharedPreferences.getString(TwitterConstants.getPrefAccessTokenSecret(), ""));
Twitter twitter = new TwitterFactory(builder.build()).getInstance(accessToken);
try {
//Query object
Query query = new Query(searchTerm);
//The number of tweets to return per page [max:100]
query.count(2);
//Return only the most recent results in the response
query.resultType(Query.ResultType.recent);
QueryResult result = twitter.search(query);
Log.e("Twitter QueryResult", result.toString());
}catch(TwitterException e){
e.printStackTrace();
}
return null;
}
如果您使用的是twitter4j库,则可以通过调用
Status.getURLEntities(),从twitter4j.Status
获取URLEntity
类
这将返回一个URLEntity
数组。现在,您可以检查tweet中是否包含urlEntity,您可以通过调用urlEntity.getURL()获取tweet中提到的url代码>
编辑
关于包含代码的答案,请查看下面@hrskrs的答案。好,如果有人有相同的问题,这里是答案:
@Override
protected WebView doInBackground(String... strings) {
//Get userInput
String searchTerm = strings[0];
//Initialize Twitter Connection
ConfigurationBuilder builder = new ConfigurationBuilder();
builder.setDebugEnabled(true);
builder.setOAuthConsumerKey(sharedPreferences.getString(TwitterConstants.getPrefConsumerKey(), ""));
builder.setOAuthConsumerSecret(sharedPreferences.getString(TwitterConstants.getPrefConsumerSecret(), ""));
AccessToken accessToken = new AccessToken(sharedPreferences.getString(TwitterConstants.getPrefAccessToken(), ""), sharedPreferences.getString(TwitterConstants.getPrefAccessTokenSecret(), ""));
//Gets Twitter instance with default credentials
Twitter twitter = new TwitterFactory(builder.build()).getInstance(accessToken);
try {
//Query object
Query query = new Query(searchTerm);
//The number of tweets to return per page [max:100]
query.count(2);
//Return only the most recent results in the response
query.resultType(Query.ResultType.recent);
//Get all results
QueryResult result = twitter.search(query);
//Fetch only tweets from the results
List<twitter4j.Status> tweets = result.getTweets();
for(twitter4j.Status tweet : tweets){
//Get single tweet
String singleTweet = tweet.getText();
Log.e("Twitter Tweet", singleTweet);
//Get URLs (it returns an array of Urls)
URLEntity[] urlEntity = tweet.getURLEntities();
//If the UrlEntity array is not empty
if(urlEntity != null){
for(int i=0; i<urlEntity.length; i++){
//Get URL from the tweet
String tweetUrl = urlEntity[i].getURL();
Log.e("Tweet URL", tweetUrl);
}
}else{
return null;
}
}
}catch(TwitterException e){
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(WebView webView) {
progressDialog.hide();
}
}
@覆盖
受保护的WebView doInBackground(字符串…字符串){
//获取用户输入
字符串搜索项=字符串[0];
//初始化Twitter连接
ConfigurationBuilder=新的ConfigurationBuilder();
builder.setDebugEnabled(true);
setOAuthConsumerKey(SharedReferences.getString(TwitterConstants.getPrefConsumerKey(),“”);
setOAuthConsumerCret(SharedReferences.getString(TwitterConstants.GetPrefConsumerCret(),“”);
AccessToken AccessToken=new AccessToken(SharedReferences.getString(TwitterConstants.getPrefAccessToken(),“”),SharedReferences.getString(TwitterConstants.getPrefAccessTokenSecret(),“”);
//获取具有默认凭据的Twitter实例
Twitter=newTwitterFactory(builder.build()).getInstance(accessToken);
试一试{
//查询对象
查询=新查询(searchTerm);
//每页返回的推文数[最大值:100]
查询。计数(2);
//仅返回响应中最近的结果
query.resultType(query.resultType.recent);
//获得所有结果
QueryResult result=twitter.search(查询);
//仅从结果中获取推文
List tweets=result.getTweets();
对于(twitter4j.Status tweet:tweets){
//获得一条tweet
String singleTweet=tweet.getText();
Log.e(“Twitter Tweet”,singleTweet);
//获取URL(它返回URL数组)
URLEntity[]URLEntity=tweet.getURLEntities();
//如果UrlEntity数组不是空的
如果(urlEntity!=null){
对于(inti=0;我的答案与我的答案相同。这只是你添加的代码。你需要接受它作为正确答案。