unity3d android 圖片插入相冊顯示
廢話不多直接上代碼
public static void InsertImageToMediaStore(string filePath, string fileName)
{
if (string.IsNullOrEmpty(filePath) || string.IsNullOrEmpty(fileName))
{
return;
}
#if (UNITY_ANDROID && !UNITY_EDITOR) || ANDROID_CODE_VIEW
try
{
using (AndroidJavaClass UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
{
using (AndroidJavaObject currentActivity = UnityPlayer.GetStatic<AndroidJavaObject>("currentActivity"))
{
using (AndroidJavaObject contentResolver = currentActivity.Call<AndroidJavaObject>("getContentResolver"))
{
using (AndroidJavaObject file = new AndroidJavaObject("java.io.File", filePath))
{
using (AndroidJavaClass Media = new AndroidJavaClass("android.provider.MediaStore$Images$Media"))
{
string newFilePath = Media.CallStatic<string>("insertImage", contentResolver, file.Call<string>("getAbsolutePath"), fileName, null);
SendBroadcastWithFilePath("MEDIA_SCANNER_SCAN_FILE", filePath);
}
}
}
}
}
}
catch (System.Exception e)
{
}
#endif
}
public static void SendBroadcastWithFilePath(string actionName, string filePath)
{
if (string.IsNullOrEmpty(actionName))
{
return;
}
#if (UNITY_ANDROID && !UNITY_EDITOR) || ANDROID_CODE_VIEW
try
{
using (AndroidJavaClass UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
{
using (AndroidJavaObject currentActivity = UnityPlayer.GetStatic<AndroidJavaObject>("currentActivity"))
{
using (AndroidJavaObject intent = new AndroidJavaObject("android.content.Intent", "android.intent.action." + actionName))
{
if (!string.IsNullOrEmpty(filePath))
{
using (AndroidJavaClass uri = new AndroidJavaClass("android.net.Uri"))
{
if ("獲取VersionCode()" >= 24)
{
string fileProviderName = "app包名" + ".fileprovider";
using (AndroidJavaObject file = new AndroidJavaObject("java.io.File", filePath))
{
using (AndroidJavaClass fileProvider = new AndroidJavaClass("android.support.v4.content.FileProvider"))
{
using (AndroidJavaObject fileUri = fileProvider.CallStatic<AndroidJavaObject>("getUriForFile", currentActivity, fileProviderName, file))
{
intent.Call<AndroidJavaObject>("setData", fileUri);
currentActivity.Call("sendBroadcast", intent);
}
}
}
}
else
{
using (AndroidJavaObject fileUri = uri.CallStatic<AndroidJavaObject>("parse", filePath))
{
intent.Call<AndroidJavaObject>("setData", fileUri);
currentActivity.Call("sendBroadcast", intent);
}
}
}
}
else
{
currentActivity.Call("sendBroadcast", intent);
}
}
}
}
}
catch (System.Exception e)
{
}
#endif
}