【问题标题】:Android Fabric Twitter share listenerAndroid Fabric Twitter 分享监听器
【发布时间】:2015-10-17 08:39:26
【问题描述】:

我使用 Fabric SDK 从我的应用程序发送推文。

我构建了一个分享对话框并从活动中发送推文。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    TwitterAuthConfig authConfig = new TwitterAuthConfig(CONSUMER_KEY, CONSUMER_SECRET);
    Fabric.with(this, new TwitterCore(authConfig), new TweetComposer());

    Bundle bundle = getIntent().getExtras().getBundle(SHARE_DATA);
    String description = bundle.getString(SHARE_DESCRIPTION);
    String title = bundle.getString(SHARE_TITLE);
    String picture = bundle.getString(SHARE_PICTURE_LINK);
    String link = bundle.getString(SHARE_LINK);

    TweetComposer.Builder builder = null;
    try {
        InputStream in = new java.net.URL(picture).openStream();
        Bitmap bitmap = BitmapFactory.decodeStream(in);
        Uri yourUri = getImageUri(this,bitmap);
        builder = new TweetComposer.Builder(this)
                .text(title + "\n" + description)
                .url(new URL(link))
                .image(yourUri);
        //??? IS THERE ANY LISTENER ???
        builder.show();
    } catch (IOException e1) {
        e1.printStackTrace();
    }
}

我想知道分享的状态,比如成功与否,但我找不到任何此操作的监听器。

我错过了什么?

【问题讨论】:

  • 你找到解决方案了吗?
  • @ssh : 我也有同样的问题。你解决了吗?

标签: android twitter twitter-fabric


【解决方案1】:

您应该使用 builder.createIntent() 而不是使用 builder.show():

Intent intent = new TweetComposer.Builder(getActivity())
        .text("TEXT")
        .url("URL")
        .createIntent();

startActivityForResult(intent, TWEET_COMPOSER_REQUEST_CODE);

在 onActivityResult() 中获取结果反馈:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if(requestCode == TWEET_COMPOSER_REQUEST_CODE) {

        if(resultCode == Activity.RESULT_OK) {

            onTwitterSuccess();

        } else if(resultCode == Activity.RESULT_CANCELED) {

            onTwitterCancel();
        }
    }

}

【讨论】:

    【解决方案2】:

    使用下面的方法通过 rest 服务进行 twitt 并将媒体 ID 传递为 null。我成功地从我的应用发布推文

    public void postToTwitter(ArrayList<String>mediaIds) {
            String message;
            if(Validator.isNotNull(preferences.getFbShareMessage())){
                message=preferences.getFbShareMessage()+" "+com.aimdek.healthwel.network.Request.HOST_URL + "/user-history/" + userHistory.getUserId() + "/" + userHistory.getId();
            }
            else {
                message = getString(R.string.google_status, HWUtil.getFullName(preferences.getUserInfo().getFirstName(), preferences.getUserInfo().getLastName()), userHistory.getSportName(), HWUtil.secondToTime(userHistory.getDuration()))+" "+com.aimdek.healthwel.network.Request.HOST_URL + "/user-history/" + userHistory.getUserId() + "/" + userHistory.getId();
            }
            String mediaId;
            if (Validator.isNotNull(mediaIds) && mediaIds.size() > 0) {
                mediaId="";
                for (int i = 0; i < mediaIds.size(); i++) {
                    if (i == 0) {
                        mediaId = mediaIds.get(i);
                    } else {
                        mediaId += "," + mediaIds.get(i);
                    }
                }
            }
            else {
                mediaId=null;
            }
            StatusesService statusesService = twitterApiClient.getStatusesService();
            statusesService.update(message, null, null, null, null, null, null, null, mediaId, new Callback<Tweet>() {
                @Override
                public void success(Result<Tweet> result) {
                    dismissProgressDialog();
                    if(Validator.isNotNull(preferences.getImagePath()) && !preferences.getImagePath().isEmpty()) {
                        preferences.getImagePath().clear();
                    }
                    com.aimdek.healthwel.network.Request.getRequest().sendRequest(com.aimdek.healthwel.network.Request.SHARE_USER_HISTORY, TwitterIntegration.this, TwitterIntegration.this, RequestParameterBuilder.buildMapForShareUserHistory(userHistory.getId(), TwitterIntegration.this));
                }
    
                @Override
                public void failure(TwitterException exception) {
                    if(Validator.isNotNull(preferences.getImagePath()) && !preferences.getImagePath().isEmpty()) {
                        preferences.getImagePath().clear();
                    }
                    dismissProgressDialog();
                    finish();
                    HWUtil.showToast(TwitterIntegration.this,exception.getMessage());
                }
            });
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-19
      • 1970-01-01
      • 1970-01-01
      • 2020-12-30
      • 2012-09-20
      • 2012-11-17
      • 2010-12-19
      相关资源
      最近更新 更多