以编程方式在android上分享图像

时间:2017-11-02 15:12:03

标签: android session twitter upload

在我的应用程序中我通过Twitter登录它给了我会话并通过使用此会话我可以在Twitter上发布图像, 但问题是重启后我已经通过Twitter登录我的应用程序,但会话无法使用。我必须再次登录才能获得会话。 原生Twitter应用程序安装在我的设备上我只是通过Twitter获得已经登录到Twitter应用程序和我的应用程序的用户的会话。有没有办法得到这个。

我正在使用此代码在Twitter上分享位图图像

public void shareOnTwitter(Bitmap bitmap){
        final TwitterSession session = TwitterCore.getInstance().getSessionManager()
                .getActiveSession();
        ByteArrayOutputStream bytes = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
        byte[] byteArray = bytes.toByteArray();
        Twitter.getInstance().getTwitterAuthConfig();
        if(session != null) {
            TwitterApiClient twitterApiClient = new TwitterApiClient(session);

            MediaType mediaType = MediaType.parse("image/*");
            RequestBody body = RequestBody.create(mediaType, byteArray);

            Call<Media> mediaCall = twitterApiClient.getMediaService().upload(body, null, null);
            mediaCall.enqueue(new Callback<Media>() {
                @Override
                public void success(Result<Media> result) {
                    String mediaIdString = result.data.mediaIdString;

                }

                @Override
                public void failure(TwitterException exception) {
                    AppUtil.log("Twitter", "Twitter media failed");
                }
            });
        }
    }

注意:我不想通过意图分享图像作为链接

1 个答案:

答案 0 :(得分:0)

您还需要从success方法中调用以下方法:

void uploadTweetWithMedia(TwitterApiClient客户端,TwitterSession会话,字符串文本,字符串mediaId){         client.getStatusesService()。update(text,null,null,null,null,null,null,true,mediaId)                 .enqueue(                         new Callback(){                             @覆盖                             public void success(结果){                                 Log.v(“update”,“success”+ result.data.idStr);                             }

                        @Override
                        public void failure(TwitterException exception) {
                            Log.v("update", "failure " + exception.getMessage());
                        }
                    });
}