70 lines
2.1 KiB
C#
70 lines
2.1 KiB
C#
|
|
namespace Unity.RenderStreaming
|
||
|
|
{
|
||
|
|
#if UNITY_ANDROID && !UNITY_EDITOR
|
||
|
|
public class AndroidImagePicker : MonoBehaviour
|
||
|
|
{
|
||
|
|
private static AndroidImagePicker _instance;
|
||
|
|
private Action<Texture2D> _callback;
|
||
|
|
private AndroidJavaObject _activity;
|
||
|
|
private bool _waitingForResult;
|
||
|
|
private string _pickedImagePath;
|
||
|
|
|
||
|
|
public static AndroidImagePicker Instance
|
||
|
|
{
|
||
|
|
get
|
||
|
|
{
|
||
|
|
if (_instance == null)
|
||
|
|
{
|
||
|
|
var go = new GameObject(nameof(AndroidImagePicker));
|
||
|
|
DontDestroyOnLoad(go);
|
||
|
|
_instance = go.AddComponent<AndroidImagePicker>();
|
||
|
|
}
|
||
|
|
return _instance;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
public void PickImage(Action<Texture2D> onImagePicked)
|
||
|
|
{
|
||
|
|
_callback = onImagePicked;
|
||
|
|
|
||
|
|
using (AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
|
||
|
|
{
|
||
|
|
_activity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
|
||
|
|
}
|
||
|
|
|
||
|
|
_activity.Call("runOnUiThread", new AndroidJavaRunnable(() =>
|
||
|
|
{
|
||
|
|
using (AndroidJavaObject intent = new AndroidJavaObject("android.content.Intent",
|
||
|
|
"android.intent.action.PICK"))
|
||
|
|
{
|
||
|
|
intent.Call<AndroidJavaObject>("setType", "image/*");
|
||
|
|
using (AndroidJavaObject i = intent.Call<AndroidJavaObject>("createChooser",
|
||
|
|
_activity, "选择头像"))
|
||
|
|
{
|
||
|
|
_activity.Call("startActivity", i);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}));
|
||
|
|
|
||
|
|
_waitingForResult = true;
|
||
|
|
}
|
||
|
|
|
||
|
|
private void Update()
|
||
|
|
{
|
||
|
|
if (!_waitingForResult) return;
|
||
|
|
|
||
|
|
try
|
||
|
|
{
|
||
|
|
if (_activity == null) return;
|
||
|
|
using (AndroidJavaClass uriClass = new AndroidJavaClass("android.net.Uri"))
|
||
|
|
{
|
||
|
|
}
|
||
|
|
}
|
||
|
|
catch
|
||
|
|
{
|
||
|
|
// ignored
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
#endif
|
||
|
|
}
|