unity android sharing failing in facebook/instagram/twitter

Hello Dears,
I am having a problem in the regular sharing code of unity , its only working in messenger , but failing in instagram/twitter/facebook
as below
Facebook : Nothing is appearing , no text nor image.
Twitter : Only text appearing , no image.
Whatsapp : Sharing failed / try again.
Instagram : Unfortunately , instagram has stopped.
Snapchat : The app opens without anything .

This is my code.

	if (rayCast.collider != null && rayCast.transform.gameObject.tag == "share")
					Debug.Log ("Capture SCreen");
					Application.CaptureScreenshot ("Bla.png");
					Debug.Log ("screen captured");
					ShareImage (Application.persistentDataPath + "/sceenshot.png", "How many balloons you can tap in Yellow Hunter! ", "xx", "xx");
					Debug.Log ("Sharing done");

    public static void ShareImage(string imageFileName, string subject, string title, string message)

        AndroidJavaClass intentClass = new AndroidJavaClass("android.content.Intent");
        AndroidJavaObject intentObject = new AndroidJavaObject("android.content.Intent");

        intentObject.Call<AndroidJavaObject>("setAction", intentClass.GetStatic<string>("ACTION_SEND"));
        intentObject.Call<AndroidJavaObject>("setType", "image/*");
        intentObject.Call<AndroidJavaObject>("putExtra", intentClass.GetStatic<string>("EXTRA_SUBJECT"), subject);
        intentObject.Call<AndroidJavaObject>("putExtra", intentClass.GetStatic<string>("EXTRA_TITLE"), title);
        intentObject.Call<AndroidJavaObject>("putExtra", intentClass.GetStatic<string>("EXTRA_TEXT"), message);

        AndroidJavaClass uriClass = new AndroidJavaClass("android.net.Uri");
        AndroidJavaObject fileObject = new AndroidJavaObject("java.io.File", imageFileName);
        AndroidJavaObject uriObject = uriClass.CallStatic<AndroidJavaObject>("fromFile", fileObject);

        bool fileExist = fileObject.Call<bool>("exists");
        Debug.Log("File exist : " + fileExist);
        // Attach image to intent
        if (fileExist)
            intentObject.Call<AndroidJavaObject>("putExtra", intentClass.GetStatic<string>("EXTRA_STREAM"), uriObject);
        AndroidJavaClass unity = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        AndroidJavaObject currentActivity = unity.GetStatic<AndroidJavaObject>("currentActivity");
        currentActivity.Call("startActivity", intentObject);



I made this tutorial where you can share screenshoots of the game in all Social Media (Facebook, Twitter, Whatsapp, Instagram, Gmail and so on) in less than 20 lines of code just with one single button: