Android 使用Twitter4j-4.0.2消费和过滤推文

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

我试图根据用户输入字符串获取Tweets解析tweet文本,从tweet中提取web链接(忽略没有web链接的Tweets),并通过下一步按钮解析它以显示在WebView对话框中(因此,当单击以移动到下一个WebView(显示从tweet解析的链接的下一个内容))。我得到了tweets结果(没有过滤),我如何过滤它们并获得URL,以便为WebView解析它

以下是我在后台线程上运行的代码:

 @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;我的答案与我的答案相同。这只是你添加的代码。你需要接受它作为正确答案。