81 lines
3.0 KiB
C#
81 lines
3.0 KiB
C#
|
#if UNITY_ANDROID && !UNITY_EDITOR
|
|||
|
using System;
|
|||
|
using System.Collections;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.IO;
|
|||
|
using UnityEngine;
|
|||
|
|
|||
|
namespace TriLibCore.SFB
|
|||
|
{
|
|||
|
public class StandaloneFileBrowserAndroidListener : AndroidJavaProxy
|
|||
|
{
|
|||
|
private Action<IList<ItemWithStream>> _multipleFilesCallback;
|
|||
|
|
|||
|
public StandaloneFileBrowserAndroidListener(Action<IList<ItemWithStream>> onMultipleFilesSelected) : base("com.sfb.standalonefilebrowser.StandaloneFileBrowserAndroidListener")
|
|||
|
{
|
|||
|
_multipleFilesCallback = onMultipleFilesSelected;
|
|||
|
}
|
|||
|
|
|||
|
public void onFilesSelected(string filenames)
|
|||
|
{
|
|||
|
if (_multipleFilesCallback != null) {
|
|||
|
var files = filenames.Split('|');
|
|||
|
var itemsWithStream = new ItemWithStream[files.Length];
|
|||
|
for (var i = 0; i < itemsWithStream.Length; i++) {
|
|||
|
itemsWithStream[i] = new ItemWithStream() {
|
|||
|
Name = files[i]
|
|||
|
};
|
|||
|
}
|
|||
|
_multipleFilesCallback(itemsWithStream);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public class StandaloneFileBrowserAndroid : IStandaloneFileBrowser<ItemWithStream>
|
|||
|
{
|
|||
|
private AndroidJavaClass _standaloneFileBrowser;
|
|||
|
private AndroidJavaObject _activity;
|
|||
|
|
|||
|
public StandaloneFileBrowserAndroid()
|
|||
|
{
|
|||
|
using (AndroidJavaObject unityClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
|
|||
|
{
|
|||
|
_activity = unityClass.GetStatic<AndroidJavaObject>("currentActivity");
|
|||
|
_standaloneFileBrowser = new AndroidJavaClass("com.sfb.standalonefilebrowser.StandaloneFileBrowser");
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public IList<ItemWithStream> OpenFilePanel(string title, string directory, ExtensionFilter[] extensions, bool multiselect)
|
|||
|
{
|
|||
|
throw new NotSupportedException();
|
|||
|
}
|
|||
|
|
|||
|
public void OpenFilePanelAsync(string title, string directory, ExtensionFilter[] extensions, bool multiselect, Action<IList<ItemWithStream>> cb)
|
|||
|
{
|
|||
|
var listener = new StandaloneFileBrowserAndroidListener(cb);
|
|||
|
var args = new object[] {_activity, title, multiselect, listener};
|
|||
|
_standaloneFileBrowser.CallStatic("showOpenFileDialog", args);
|
|||
|
}
|
|||
|
|
|||
|
public IList<ItemWithStream> OpenFolderPanel(string title, string directory, bool multiselect)
|
|||
|
{
|
|||
|
throw new NotSupportedException();
|
|||
|
}
|
|||
|
|
|||
|
public void OpenFolderPanelAsync(string title, string directory, bool multiselect, Action<IList<ItemWithStream>> cb)
|
|||
|
{
|
|||
|
throw new NotSupportedException();
|
|||
|
}
|
|||
|
|
|||
|
public ItemWithStream SaveFilePanel(string title, string directory, string defaultName, ExtensionFilter[] extensions)
|
|||
|
{
|
|||
|
throw new NotSupportedException();
|
|||
|
}
|
|||
|
|
|||
|
public void SaveFilePanelAsync(string title, string directory, string defaultName, ExtensionFilter[] extensions, Action<ItemWithStream> cb)
|
|||
|
{
|
|||
|
throw new NotSupportedException();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
#endif
|