https://developer.android.com/reference/android/provider/E2eeContactKeysManager Ещё не изучал подробно, но пока выглядит интересно. Новая апишка в #android 15.
Сначала объяснение проблемы. Если вы создаёте средство общение (IM, почтовый клиент, может что-то ещё) между пользователями и ваш продукт должен быть с честным E2EE, то будет проблема с тем, как хранить ключи собеседников.
Впервые вы создадите общий секрет, используя Диффи-Хеллмана. Далее будете использовать AES или что-то иное с ключом от общего секрета - это тоже понятно. Но что делать, если пользователь удалил приложение?
Вообще, обычный путь - обязывать пользователя создавать резервные копии, которые нужны не только для хранения переписок, но и для хранения секретов с этим пользователем. Переустановил приложение, не сделав резервную копию секрета - ССЗБ. Разные приложения по-разному вас "накажут". Кто-то сохранит переписку (не у вас, разумеется, а у дяди где-то, пусть и зашифрованную), но сбросит доверие, предупредив собеседника о смене ключа. Кто-то не сохранит ничего и вы будете начинать общение с чистого листа. Кто-то забекапит куда-то вообще всё и вы, как пользователь, ничего не заметите.
В общем, каждый использует свой подход.
Так вот суть новой апи, опять же, если я правильно понял, ещё не изучал подробно, в том, что ваше приложение может создать контакт и записать ему ключ. Тогда переустановка приложения повлияет только на потерю переписки в случает, если нет резервной копии, но ключ сохранится. При этом одно приложение, имеющее несколько учётных записей, может надиктовать одному контакту несколько разных ключей - каждой учётке свой.
Пока надо ещё будет разобраться, есть ли защита от сторонних приложений. Если доступ проверяется по паре "имя пакет + подпись", то этого, в целом, достаточно.
Ещё не смотрел, будет ли контакт в записной книге, или это скрытый контакт. Будет ли он попадать в резервную копию самого Гугла (только для телефонов с GPS).
@umnik Но ведь всё равно надо городить свою систему для семи предыдущих версий Андроида.