Files
Bachelor-Arbeit-Adrian-Haefner/Assets/Plugins/NativeFilePicker/Android/FPResultCallbackAndroid.cs
adriadri6972 d3d9c5f833 upload project
2025-07-31 15:21:08 +02:00

71 lines
2.1 KiB
C#

#if UNITY_EDITOR || UNITY_ANDROID
using UnityEngine;
namespace NativeFilePickerNamespace
{
public class FPResultCallbackAndroid : AndroidJavaProxy
{
private readonly NativeFilePicker.FilePickedCallback pickCallback;
private readonly NativeFilePicker.MultipleFilesPickedCallback pickCallbackMultiple;
private readonly NativeFilePicker.FilesExportedCallback exportCallback;
private readonly FPCallbackHelper callbackHelper;
public FPResultCallbackAndroid( NativeFilePicker.FilePickedCallback pickCallback, NativeFilePicker.MultipleFilesPickedCallback pickCallbackMultiple, NativeFilePicker.FilesExportedCallback exportCallback ) : base( "com.yasirkula.unity.NativeFilePickerResultReceiver" )
{
this.pickCallback = pickCallback;
this.pickCallbackMultiple = pickCallbackMultiple;
this.exportCallback = exportCallback;
callbackHelper = FPCallbackHelper.Create( true );
}
[UnityEngine.Scripting.Preserve]
public void OnFilePicked( string path )
{
callbackHelper.CallOnMainThread( () => pickCallback( !string.IsNullOrEmpty( path ) ? path : null ) );
}
[UnityEngine.Scripting.Preserve]
public void OnMultipleFilesPicked( 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( () => pickCallbackMultiple( ( result != null && result.Length > 0 ) ? result : null ) );
}
[UnityEngine.Scripting.Preserve]
public void OnFilesExported( bool result )
{
callbackHelper.CallOnMainThread( () => exportCallback( result ) );
}
}
}
#endif