Доступ к изображениям и видео с внутреннего хранилища android с использованием Unity C# - PullRequest
0 голосов
/ 05 февраля 2020

Я пытаюсь получить доступ к папке Whatsapp из внутреннего хранилища android, но по какой-то причине этот код не работает, путь к файлу правильный, но это, если оператор никогда не становится истинным

вот код для проверки, если файл exixts

public static Texture2D LoadPNG()
{

    Texture2D tex = null;
    byte[] fileData;

    if (File.Exists(filePath))
    {
        Debug.Log("file exists");
        fileData = File.ReadAllBytes(filePath);
        tex = new Texture2D(2, 2);
        tex.LoadImage(fileData); //..this will auto-resize the texture dimensions.
    }
    return tex;
}

сейчас filepath = "/storage/emulated/0/Whatsapp/Media/.statuses

код, который делает этот путь

public static string GetDownloadFolder()
{
    string[] temp = (Application.persistentDataPath.Replace("Android", "")).Split(new string[] { "//" }, System.StringSplitOptions.None);
    filePath = temp[0]+"/WhatsApp/Media/.Statuses";
    return (temp[0] + "/WhatsApp/Media/.Statuses");

}

Теперь проблема в том, что на устройстве android эта папка .statuses содержит изображения и видеофайлы, но это, если оператор никогда не вызывается, почему я не понимаю, даже путь правильный

if (File.Exists(filePath))
{
    Debug.Log("file exists");
    fileData = File.ReadAllBytes(filePath);
    tex = new Texture2D(2, 2);
    tex.LoadImage(fileData); //..this will auto-resize the texture dimensions.
}

1 Ответ

0 голосов
/ 05 февраля 2020

Ваша проблема в том, что вы проверяете, существует ли файл по пути к папке. Решение состоит в том, чтобы проверить, является ли путь каталогом, и получить все файлы из него:

    if (Directory.Exists(path))
    {
        string filenames[] = Directory.GetFiles(path);
        foreach (var filename in filenames)
        {
            LoadPNG(filename);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...