Я искал решения во многих местах (Протестируйте программно, если в Android 10+ отключен доступ к устаревшему внешнему хранилищу, https://developer.android.com/google/play/expansion-files.html#Downloading и т. д.), но не знаю точной причины ошибки. Если приложение загружается из Google Play только в случае устройств с Android 10, выдает следующую ошибку:
Caused by: java.lang.IllegalArgumentException: Couldn't get OBB info for /storage/emulated/0/Android/obb/packageName/main.package_version.packageName.obb
Программа может найти файл obb (даже на устройствах с android 10)
File mainFile = new File(Environment.getExternalStorageDirectory() + "/Android/obb/" + packageName + "/" + "main." + packageVersion + "." + packageName + ".obb")
mainFile.getAbsolutpath()
также получает путь к файлу. Однако, когда диспетчер хранилища используется для приложения, загруженного из магазина Google Play
sm.mountObb(mainFile.getAbsolutePath(), null, mainObbStateChangeListener );
он не может получить доступ к файлу расширения obb и завершает работу приложения с указанной выше ошибкой.
Приложение можно загрузить из Google Play, но оно работает только для устройств с Android 9 и ниже. Если я создам apk и установлю его на устройстве Android 10, приложение сможет без проблем получить доступ к файлу obb. Что мне не хватает, чтобы запустить приложение на устройствах Android 10, когда оно загружено из магазина Google Play? Помощь будет оценена.
Обновлять:
Я нашел причину ошибки на устройстве Android 10, но до сих пор не знаю ответа:
Если код версии apk (код версии в приложении gradle) совпадает с кодом версии в имени файла obb (что должно быть, если я хорошо понял (https://developer.android.com/google/play/extension-files), затем в классе obbexpansionmanager строка
sm.mountObb(mainFile.getAbsolutePath(), null, mainObbStateChangeListener );
выдает эту ошибку:
Caused by: java.lang.IllegalArgumentException: Couldn't get OBB info for /storage/emulated/0/Android/obb/packageName/main.package_version.packageName.obb.
Если я изменю загруженный файл obb приложения на другой код версии (проверенный с кодом версии 8, 1, 10, когда код версии apk был 9), приложение запускается, и вышеуказанная ошибка не возникает. Однако я не могу использовать другой код версии в имени файла obb, кроме кода версии apk, чтобы иметь возможность загружать apk с obb из магазина Google Play. Кроме того, файлы мультимедиа не могут быть доступны из файла obb, если он не соответствует кодам версии. Если устройство находится под Android 10, приложение работает с одним и тем же кодом версии в apk и в файле расширения obb.