Получение имени пользователя любого пользователя

В настоящее время я использую следующий код для получения текущего имени пользователя:

        String username;
        {
            Cursor c = ctx.getContentResolver().query(Profile.CONTENT_URI,
                new String[]{Profile.DISPLAY_NAME}, null, null, null);
            if (c.getCount() > 0)
            {
                c.moveToFirst();
                username = c.getString(0);
            }

На моем тестовом устройстве (Samsung Galaxy Tab Pro) с правильными разрешениями это работает хорошо как для пользователя-владельца, так и для других пользователей без ограничений. Тем не менее, вещи, кажется, рушатся для ограниченных профилей пользователей:

  • Код всегда возвращает нулевые строки курсора. Я надеялся, что включение доступа к приложению "Контакты" позволит ему работать, но это не имеет никакого эффекта.
  • В любом случае, в отличие от неограниченных профилей, профиль ограниченной учетной записи пользователя, кажется, не связан с именем, отображаемым на экране блокировки, поэтому даже если бы я мог заставить этот код работать, я не уверен, насколько он полезен было бы.

Пожалуйста, прости вопрос из нескольких частей, но:

  • Это особенность планшета Samsung, или это поведение одинаково на разных устройствах?
  • Есть ли способ прочитать профиль ограниченного пользователя?
  • Есть ли лучший способ получить текущее имя пользователя?

Любое понимание приветствуется.

1 ответ

Я пытался найти информацию об этом и могу сказать, что невозможно получить подробную информацию о "Ограниченный профиль (пользователь)".

В фоновом режиме, когда вы пытаетесь прочитать детали для "Ограниченный профиль пользователя", они пытаются изменить в базе данных и выбрасывают SQLiteexception : delete then re-write existing database throws SQLiteReadOnlyDatabaseException on getWritableDatabase, из-за этого исключения я не думаю, что есть шанс прочитать имя пользователя.

Без использования вышеуказанного кода вы можете напрямую позвонить getUsername() класса UserManager.[Уровень API 17]

Другие вопросы по тегам