unity3d android 圖片插入相冊顯示 Insert Image To MediaStore

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
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章