2012-03-23 57 views
4

我正在与使用Twiitter4j的android整合twitter。我正在尝试获取主页时间表并且工作正常。但是当我正在寻找包含在推文中的网址时,没有功能。是否有functon获得评论的entites像URL等android twitter 4j整合获取推文实体

这里是代码

cb = new ConfigurationBuilder(); 
    cb.setDebugEnabled(true).setOAuthConsumerKey(Constants.CONSUMER_KEY) 
      .setOAuthConsumerSecret(Constants.CONSUMER_SECRET) 
      .setOAuthAccessToken(accessToken).setOAuthAccessTokenSecret(
        accessSecret); 

    try { 
     TwitterFactory factory = new TwitterFactory(cb.build()); 
     // gets Twitter instance with default credentials 
     Twitter twitter = factory.getInstance(); 
     User user = twitter.verifyCredentials(); 
     List<Status> statuses = twitter.getHomeTimeline(); 
     System.out.println("Showing @" + user.getScreenName() + "'s home timeline."); 
     for (Status status : statuses) { 

      System.out.println("@" + status.getUser().getScreenName() + " - " + status.getText() + "--"+status.getURLs()+ "--"+status.getURLEntities()); 
     } 
    } catch (TwitterException te) { 
     te.printStackTrace(); 
     System.out.println("Failed to get timeline: " + te.getMessage()); 
     System.exit(-1); 
    } 

与索尼的代码工作得很好,之后我提出我的代码以异步任务,它显示了一些错误

这是我编辑的代码

 protected String doInBackground(Void... args) { 
     String response = null; 

     try { 
      TwitterFactory factory = new TwitterFactory(cb.build()); 
      // gets Twitter instance with default credentials 
      Twitter twitter = factory.getInstance(); 
      User user = twitter.verifyCredentials(); 
      ResponseList<Status> statuses = twitter.getHomeTimeline(); 


      System.out.println("Showing @" + user.getScreenName() + "'s home timeline."); 
      for (Status status : statuses) { 

       System.out.println("@" + status.getUser().getScreenName() + " - " + status.getText() + "--"+status.getUser().getProfileImageURL()); 
       URLEntity[] uent = status.getURLEntities(); 
       if (uent != null) { 
        for (int k = 0; k < uent.length; k++) { 
         Log.i("URL Entity", "Dp Url " + uent[k].getDisplayURL() 
           + " URL " + uent[k].getURL() + " start " 
           + uent[k].getStart() + " end " 
           + uent[k].getEnd()); 
        } 
} 
      } 

     } catch (TwitterException te) { 
      te.printStackTrace(); 
      System.out.println("Failed to get timeline: " + te.getMessage()); 
      System.exit(-1); 
     } 
     return response; 
    } 
+0

为您提供了错误,行? – MKJParekh 2012-03-23 07:15:27

+0

twitter.getHomeTimeline();显示错误: - 类型不匹配:无法从ResponseList 转换为ResponseList 2012-03-23 07:15:52

+0

确定转到行'ResponseList statuses = twitter.getHomeTimeline(); '那里保持光标状态和其作为AsysncTask类的状态,而不是像这样''ResponseList status = twitter.getHomeTimeline();' – MKJParekh 2012-03-23 07:18:12

回答

2

你只需要添加,而CRE下一行ConfigurationBuilder

cb.setIncludeEntitiesEnabled(true);

的阿婷对象(提示下一个代码),您将得到实体然后,

ResponseList<Status> list = twitter.getHomeTimeline(); 
URLEntity[] uent = list.get(0).getURLEntities(); 
if (uent != null) { 
        for (int k = 0; k < uent.length; k++) { 
         Log.i("URL Entity", "Dp Url " + uent[k].getDisplayURL() 
           + " URL " + uent[k].getURL() + " start " 
           + uent[k].getStart() + " end " 
           + uent[k].getEnd()); 
        } 
} 
+0

谢谢。但是当我将代码移动到异步任务doInBackground时,它显示一些错误。 – 2012-03-23 07:05:01

+0

检查你是否在做任何UI操作?或者如果它让你更麻烦..然后问作为单独的问题。 – MKJParekh 2012-03-23 07:07:18

+0

我已经发布代码作为编辑 – 2012-03-23 07:12:52