Search code examples
androidtwitter4j

I want to upload image on twitter using twitter4j in android


while uploading an image on twitter using twitter4j, it works good for all the mobiles excepts Lollipop versions. Can you please help me, I am using AsyncTask for it

ConfigurationBuilder configurationbuilder = new ConfigurationBuilder();
        configurationbuilder.setDebugEnabled(true);
        configurationbuilder.setOAuthConsumerKey(twitter_consumer_key);
        configurationbuilder.setOAuthConsumerSecret(twitter_secret_key);
        configurationbuilder.setOAuthAccessToken(token);
        configurationbuilder.setOAuthAccessTokenSecret(secret);
        configurationbuilder.setMediaProviderAPIKey(twitpic_api_key);
        twitter4j.conf.Configuration configuration = configurationbuilder
                .build();

        Twitter twitter = new TwitterFactory(configuration).getInstance();
    //  Log.d("ImageUploader", "Start sending image...");
        try {
            StatusUpdate status = new StatusUpdate(editTweet.getText()
                    .toString());
            status.setMedia(new File(mPath));
            twitter.updateStatus(status);
            // url = imageupload.upload(new File(mPath));
            //result = 1;
            //System.out.println("URL Is : " + url);

        } catch (TwitterException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            e.getStatusCode();
            e.getCause();
            e.getMessage();
        }

but it didn't upload any image on twitter while i am using this for lollipop version


Solution

  • For API >= 19 Use this code

    private String getRealPathFromURI_API19(Context context,
            Uri mImageCaptureUri2) {
        String filePath = "";
        String wholeID = DocumentsContract.getDocumentId(mImageCaptureUri2);
    
        // Split at colon, use second item in the array
        String id = wholeID.split(":")[1];
    
        String[] column = { MediaStore.Images.Media.DATA };
    
        // where id is equal to
        String sel = MediaStore.Images.Media._ID + "=?";
    
        Cursor cursor = context.getContentResolver().query(
                MediaStore.Images.Media.EXTERNAL_CONTENT_URI, column, sel,
                new String[] { id }, null);
    
        int columnIndex = cursor.getColumnIndex(column[0]);
    
        if (cursor.moveToFirst()) {
            filePath = cursor.getString(columnIndex);
        }
        cursor.close();
        return filePath;
    }
    

    For API < 19 Use this code

    public String getRealPathFromURI(Uri contentUri) {
        String[] proj = { MediaStore.Images.Media.DATA };
        Cursor cursor = getContentResolver().query(contentUri, proj, null,
                null, null);
        if (cursor == null)
            return null;
    
        int column_index = cursor
                .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    
        cursor.moveToFirst();
    
        return cursor.getString(column_index);
    }