in my app i logged in via Twitter it gives me session and by using this session i can post image on Twitter, but the problem is that after restart i am already logged in to my app via Twitter but session is not available. i have to log in again to get session. Native Twitter app is installed on my device i simply get the session of that user which is already logged in to Twitter app and my App via Twitter. is there any way to get this.
i am using this code to share bitmap image on 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");
}
});
}
}
Note: i don't want to share image via intent as Link
You further need to call the following method from success method:
void uploadTweetWithMedia(TwitterApiClient client, TwitterSession session, String text, String mediaId) { client.getStatusesService().update(text, null, null, null, null, null, null, true, mediaId) .enqueue( new Callback() { @Override public void success(Result result) { Log.v("update", "success " + result.data.idStr); }
@Override
public void failure(TwitterException exception) {
Log.v("update", "failure " + exception.getMessage());
}
});
}