I’m trying to share a screenshot taken in Unity via the Android intent system.
Here’s my code for taking the screenshot:
Application.CaptureScreenshot ("Bla.png");
ShareImage (Application.persistentDataPath + "/Bla.png", subject, title, message);
Here’s my Android-Code for calling the sharing intent:
public static void ShareImage(string imageFileName, string subject, string title, string message)
{
#if UNITY_ANDROID
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);
#endif
}
The result is not was I was hoping for. The share-overlay opens fine, but the image is missing.
By using Android’s debug console I found the following error:
The file seems to exist (fileExist is true), but there is some kind of permission problem…
Can anyone help me out?
Thanks!