Разрешение на чтение памяти Android в Unity игре

В моей Unity игре с недавних пор появилась возможность устанавливать модификации из архивов прямо через игру. На Windows и Linux всё работает безупречно, архив распаковывается по нужному пути и модификации работают, для установки достаточно перетянуть архив на exe игры, либо же просто открыть файл с помощью того же exe (и аналогично на Linux), а на Android для установки модификаций достаточно в любом файловом менеджере нажать по архиву и из списка приложений выбрать игру. Это работает. Но есть одно НО: игра не запрашивала доступ на чтение и запись внутренней памяти, поэтому при открытии архива просто вылазит сообщение о том, что нет доступа к файлу (access denied). Подробностей, как высвечивается ошибка, я писать не буду, так как это реализовано в C# коде игры через try catch. Перерыл тонну информации, сделал почти всё, что только можно было, но игра по прежнему просто не запрашивает доступ к файлам, даже в свойствах игры в разрешениях ничего нет. введите сюда описание изображения

В чём может быть дело? Вот код AndroidManifest.xml:

<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="pub.SoprotivlenieBespolezno.MTS"
xmlns:tools="http://schemas.android.com/tools">

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />

<application>
    <activity android:name="com.unity3d.player.UnityPlayerActivity" android:theme="@style/UnityThemeSelector">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.PICK" />
            <category android:name="android.intent.category.OPENABLE" />
            <data android:mimeType="*/*" />
        </intent-filter>
        <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
    </activity>
</application>

Ещё для "принудительного" запроса написал такой код:

async void RequestPermission()
{
    AndroidRuntimePermissions.Permission[] result = 
        await AndroidRuntimePermissions.RequestPermissionsAsync(
            "android.permission.READ_EXTERNAL_STORAGE", 
            "android.permission.WRITE_EXTERNAL_STORAGE",
            "android.permission.MANAGE_EXTERNAL_STORAGE");

    Debug.Log($"Запрос разрешения 'READ_EXTERNAL_STORAGE', результат: '{result[0]}'");
    Debug.Log($"Запрос разрешения 'WRITE_EXTERNAL_STORAGE', результат: '{result[1]}'");
    Debug.Log($"Запрос разрешения 'MANAGE_EXTERNAL_STORAGE', результат: '{result[2]}'");
}

Но, как вы уже могли догадаться, в консоли я получаю следующее:

Запрос разрешения 'READ_EXTERNAL_STORAGE', результат: Denied
Запрос разрешения 'WRITE_EXTERNAL_STORAGE', результат: Denied
Запрос разрешения 'MANAGE_EXTERNAL_STORAGE', результат: Denied

Эту проблему вообще можно ли как-то решить?


Ответы (0 шт):