#android
Вопрос:
Похоже, Android 11 спроектирован таким образом, что либо приложение удаляет свои данные при удалении, либо приложение хранит данные на удаленном сервере.
Но мои требования к приложениям отличаются:
Мое приложение не хранит никаких данных на удаленном сервере, но оно хранит пользовательские данные на самом устройстве пользователя.
Итак, мое приложение создает некоторые файлы в каталоге общедоступных документов.
Когда приложение удалено, данные на устройстве не удаляются.
Когда пользователь снова устанавливает приложение, приложение видит, что в устройстве есть предыдущие данные, и, следовательно, пытается повторно использовать эти более ранние данные.
Но при попытке прочитать файл Android выдает ошибку/исключение, что файл не может быть прочитан.
Я попытался установить права доступа к файлу (когда он создается в первый раз), чтобы любой мог читать/писать/выполнять, но я не думаю, что это работает.
Итак, похоже, проблема в следующем: когда приложение устанавливается снова, это новый пользователь в системе, и поскольку он не является владельцем файлов, созданных в результате предыдущей установки приложения, Android выдает ошибку/исключение.
Итак, есть ли какое-нибудь решение?
Или, может быть, Android 11 спроектирован таким образом, что либо приложение удаляет свои данные при удалении, либо приложение хранит данные на удаленном сервере?
Ответ №1:
Но при попытке прочитать файл Android выдает ошибку/исключение, что файл не может быть прочитан.
Ваш вопрос не содержит никакого исходного кода. Мое предположение, основанное на вашем описании, состоит в том, что вы пытаетесь получить доступ к содержимому с помощью API файловой системы (например, File
). В этом случае такое поведение ожидается. По умолчанию входящие файлы Documents/
являются закрытыми для приложения, и Android считает «более старую установку» и «текущую установку» одного и того же идентификатора приложения разными приложениями.
Итак, есть ли какое-нибудь решение?
Для произвольных типов контента используйте Платформу доступа к хранилищу (например, ACTION_CREATE_DOCUMENT
, ACTION_OPEN_DOCUMENT
, ACTION_OPEN_DOCUMENT_TREE
) как для первоначального создания контента, так и для последующего доступа к нему. Позвольте пользователю решить, где на устройстве пользователя (или в облачном хранилище пользователя) ваше приложение должно размещать контент пользователя. Контент, созданный таким образом, также сохраняется после установки приложения, и пользователь может направить установку вашего нового приложения на работу с контентом из вашей старой установки приложения.