- Home /
Can't access android mediastore
Hi all,
I'm trying to get an image I have saved to disk added to the device's gallery on Android. I've not really called into android native functions before so I may be doing something obviously wrong. I have a block of code doing this:
try
{
AndroidJavaClass jo = new AndroidJavaClass("android.provider.MediaStore.Images.Media");
AndroidJavaClass up = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject currentActivity = up.GetStatic<AndroidJavaObject>("currentActivity");
AndroidJavaObject contentResolver = currentActivity.Call<AndroidJavaObject>("getContentResolver");
jo.CallStatic<string>("insertImage ", contentResolver, destination, "Affermational Image", "AFFIRMATIVE");
}
catch (System.Exception ex)
{
Logging.LogError(ex.Message);
}
Which I cobbled together from a number of sources. However it's falling over on the first line generating this exception:
java.lang.ClassNotFoundException: android.provider.MediaStore.Images.Media
Any idea why it can't find that class?
Answer by Guy-Corbett · Jan 28, 2016 at 10:04 AM
I have found what I think is the solution to this. I'm now getting an exception from my callstatic line, saying it can't find the function;
"java.lang.NoSuchMethodError: no static method \"Landroid/provider/MediaStore$Images$Media;.insertImage (Landroid.app.ContextImpl$ApplicationContentResolver;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;\""
However I'll submit a separate question for that. For anyone whose interested here's how I fixed this;
try
{
AndroidJavaClass jo = new AndroidJavaClass("android.provider.MediaStore$Images$Media");//.MediaStore.Images.Media
AndroidJavaClass up = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject currentActivity = up.GetStatic<AndroidJavaObject>("currentActivity");
AndroidJavaObject contentResolver = currentActivity.Call<AndroidJavaObject>("getContentResolver");
jo.CallStatic<string>("insertImage ", contentResolver, destination, "Affermational Image", "AFFIRMATIVE");
Logging.LogToScreen("DONE", false);
}
catch (System.Exception ex)
{
Logging.LogError(ex.Message);
}
Your answer
Follow this Question
Related Questions
NoSuchMethodError calling android method 2 Answers
How to translate ArrayList to C# using AndroidJavaClass? 1 Answer
Get Phone number of android mobile device - Android native code to Unity c# 3 Answers
Exception when unbinding service 0 Answers
using shared libraries generated by Android project in Unity 0 Answers