Андроид после удаления и повторной установки приложения заполняет поля данными при запуске, почему?
Ну в общем суть проблемы такова - на некоторых смартфонах обнаружилось странное поведение приложения. Опишу алгоритм обнаружения проблемы.
1) Впервые установил приложение и запустил - первое что видим это форма ввода логина и пароля, они пустые. Вбиваем, входим в приложение, выходим без удаления логина и пароля. При следующем запуске приложения логин и пароль подтянутся из базы данных и заполнят форму входа.
2) Удаляем приложение - соответственно с ним должны удалиться и база данных и всё остальное и после переустановки всё должно пройти так же как описано в первом шаге.
3) Тут две альтеративные ветви, тестировались два различных варианта:
----- 3.1) Устанавливаем ту же самую версию приложения, запускаем и видим что поля логина и пароля заполнены, хотя по идее не должны, потому что приложение было удалено и установлено, значит файл базы пересоздался и он должен быть пуст. Более того хоть логин и правильный, вывод пароля в логи показывает что по количеству символов он совпадает с правильным паролем, но содержимое не то - вместо 4 букв и 4 цифр подставился набор единиц и двоек (примерно 11212122).
----- 3.2) Устанавливаем обновленную версию приложения, в котором вообще используется другая база данных - имя файла другое, структура другая, логика работы с бд абсолютно другая (внутри это по большей части другое приложение, но все активити те же что и в предыдущей версии). Наблюдаем такую же картину что и в случае 3.1 - логин и пароль в этот раз тоже вставились в соответствующие поля, хотя логика внутри этой активити другая - другая база, иной вариант извлечения данных из бд, иной вариант заполнения полей, да и база ПУСТАЯ, так как совершенно новая, даже если считать, что старая база могла бы при удалении приложения не удалиться.
Вопрос: откуда могут браться эти данные для заполнения полей? Активити где-то кешируется? Я так понимаю, вместо пароля какая-то белиберда это типа кодовые обозначения точек в кодировке, которая юзается в поле пароля (ну те точки, которыми закрывается пароль). Конкретно проблема наблюдается на SAMSUNG J7 с андроидом седьмым, но на других аппаратах запусках с разными версиями андроида 4,5,6,7,8 - мейзу, сяоми, Le2, вроде и самсунги тоже попадались ещё, на эмуляторах назапускал - ни где повторить проблему не могу, но сказали, что ещё на одном аппарате
была проблема, о нём, увы инфы нет. Я пока предполагаю проблема может возникать из-за какого-то механизма в оболочке от производителя. Нагуглить ни чего не получается, да и не понимаю что именно гуглить надо. Есть какие соображения? На форумы обращаюсь редко, только когда не могу справиться и нагуглить. Плиз, народ, прошу помощи.
Потому, что данные приложения не удаляются автоматически, а сохраняются, на случай, если пользователь захочет вернутся. Это можно запретить в манифесте android:allowBackup="false", очищать кэш и данные можно самостоятельно, слушая android.intent.action.QUERY_PACKAGE_RESTART.
Ещё лучше, использовать AccountManager, а не хранить всё подряд в БД.