| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 | #if UNITY_EDITOR || UNITY_ANDROIDusing UnityEngine;namespace NativeGalleryNamespace{	public class NGMediaReceiveCallbackAndroid : AndroidJavaProxy	{		private readonly NativeGallery.MediaPickCallback callback;		private readonly NativeGallery.MediaPickMultipleCallback callbackMultiple;		private readonly NGCallbackHelper callbackHelper;		public NGMediaReceiveCallbackAndroid( NativeGallery.MediaPickCallback callback, NativeGallery.MediaPickMultipleCallback callbackMultiple ) : base( "com.yasirkula.unity.NativeGalleryMediaReceiver" )		{			this.callback = callback;			this.callbackMultiple = callbackMultiple;			callbackHelper = new GameObject( "NGCallbackHelper" ).AddComponent<NGCallbackHelper>();		}		public void OnMediaReceived( string path )		{			callbackHelper.CallOnMainThread( () => callback( !string.IsNullOrEmpty( path ) ? path : null ) );		}		public void OnMultipleMediaReceived( string paths )		{			string[] result = null;			if( !string.IsNullOrEmpty( paths ) )			{				string[] pathsSplit = paths.Split( '>' );				int validPathCount = 0;				for( int i = 0; i < pathsSplit.Length; i++ )				{					if( !string.IsNullOrEmpty( pathsSplit[i] ) )						validPathCount++;				}				if( validPathCount == 0 )					pathsSplit = new string[0];				else if( validPathCount != pathsSplit.Length )				{					string[] validPaths = new string[validPathCount];					for( int i = 0, j = 0; i < pathsSplit.Length; i++ )					{						if( !string.IsNullOrEmpty( pathsSplit[i] ) )							validPaths[j++] = pathsSplit[i];					}					pathsSplit = validPaths;				}				result = pathsSplit;			}			callbackHelper.CallOnMainThread( () => callbackMultiple( ( result != null && result.Length > 0 ) ? result : null ) );		}	}}#endif
 |