Я пытаюсь реализовать функцию загрузки изображений в моем приложении Android с помощью Twitter API.Я видел много примеров, таких как:
private void uploadImage(File imagefile, final String tweettext){
TypedFile typedFile = new TypedFile("image/*", imagefile);
TwitterApiClient twitterApiClient = new TwitterApiClient(twitterSession);
MediaService mediaservice = twitterApiClient.getMediaService();
mediaservice.upload(typedFile, null, null, new Callback<Media>() {
@Override
public void success(Result<Media> result) {
postTweet(tweettext, result.data.mediaIdString);
tweetMediaFile = null;
iv1.setImageDrawable(null);
}
@Override
public void failure(TwitterException e) {
Toast.makeText(MainActivity.this, "Medienupload fehlgeschlagen. Bitte erneut versuchen.", Toast.LENGTH_SHORT).show();
}
});
}
Но, поскольку в новой версии Twitter API появились другие параметры для MediaService.upload (RequestBody, RequestBody, RequestBody), я пытаюсь сделать так:
private void uploadImage(File imagefile, final String tweettext) throws IOException {
RequestBody rb = RequestBody.create(MediaType.parse("image/*"), imagefile);
TwitterApiClient twitterApiClient = new TwitterApiClient(twitterSession);
MediaService mediaservice = twitterApiClient.getMediaService();
Response<Media> uploadResponse = mediaservice.upload(rb, null, null).execute();
if (uploadResponse.isSuccessful()) {
postTweet(tweettext, uploadResponse.body().mediaIdString);
tweetMediaFile = null;
iv1.setImageDrawable(null);
} else {
Toast.makeText(TweetPostActivity.this, "Medienupload fehlgeschlagen. Bitte erneut versuchen.",
Toast.LENGTH_SHORT).show();
}
}
Это не работает для меня - mediaIdString
из ответа (uploadResponse.body().mediaIdString
) пусто.Есть идеи, где я ошибся?Спасибо за помощь.