123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- #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
|