【问题标题】:android twitter 4j integration get tweet entitiesandroid twitter 4j 集成获取推文实体
【发布时间】:2013-08-26 18:58:31
【问题描述】:

我正在使用 Twiitter4j 将 Twitter 与 android 集成。我正在尝试获取主页时间线及其工作正常。但是,当我希望将 url 包含在推文中时,没有任何功能。是否有获取 url 等推文实体的功能。

这里是代码

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);
    }

与 Sony 的代码配合得很好,之后我将代码移动到异步任务,它显示了一些错误

这是我编辑的代码

        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;
    }

【问题讨论】:

  • twitter.getHomeTimeline();显示错误:- 类型不匹配:无法从 ResponseList 转换为 ResponseList
  • ok 转到ResponseList&lt;Status&gt; statuses = twitter.getHomeTimeline(); 行,将光标保持在 Status 上,然后将其作为 AsysncTask 类的状态,而不是将其更改为 twitter4j
  • 喜欢这个ResponseList&lt;twitter4j.Status&gt; statuses = twitter.getHomeTimeline();
  • 太棒了。有用。我没注意到。

标签: java android twitter twitter4j


【解决方案1】:

您只需要在创建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());
                    }
}

【讨论】:

  • 谢谢。但是当我将代码移动到异步任务 doInBackground 时,它会显示一些错误。
  • 检查您是否在其中进行任何 UI 操作?..或者它是否给您带来更多麻烦..然后作为单独的问题提出。
  • 你能帮我使用 twitter 4j android 从 twitter 获取上传的图片吗?有什么功能吗?
  • 我还没有将图像上传到 twitter..但是在 SO 中已经有很多问题有很好的答案。如果你仍然遇到一些问题,你可以描述它并作为问题提出。 :)
猜你喜欢
  • 2015-05-12
  • 2011-10-22
  • 2013-12-14
  • 2019-04-27
  • 1970-01-01
  • 1970-01-01
  • 2015-10-14
  • 2016-02-16
  • 1970-01-01
相关资源
最近更新 更多