Активация многопользовательского режима на вашем смартфоне с Android 4

В комментариях к этому топику про Android 4.3 я увидел интерес к многопользовательскому режиму на планшете под управлением Android 4 и сожаления по поводу отсутствия оного на смартфоне.
Мне хочется рассказать хабросообществу о том, как, путем нехитрых манипуляций, вы сможете включить многопользовательский режим на вашем смартфоне на примере моего Samsung Galaxy Nexus (I9250) с установленным на нем CyanogenMod 10.1.

Что же дает нам многопользовательский режим?


  • Приложение, установленное в первом аккаунте, если оно не системное, не видно в другом;
  • Раздельные фотографии;
  • Раздельные Сообщения;
  • Раздельная История звонков;
  • У каждого пользователя свои настройки Рабочих столов, Экрана блокировки, Панели быстрых настроек, звуков и др.
  • У каждого пользователя свой набор синхронизируемых аккаунтов, т.е. раздельные телефонные книги (Контакты), календари, история поиска и др.
  • Подключив телефон по USB (MTP) под вторым пользователем вы увидите пустую папку;
  • В Android 4.3 возможно (у самого нет возможности это проверить) ограничить использования оплаты приложений в Play;
  • Раздельные достижения в Games.


Итак, что нам потребуется для осуществления задуманного?

  1. Смартфон с версией Android не ниже 4.2;
  2. Права суперпользователя;
  3. Терминал на смартфоне (я использую этот, т.к. он предустановлен в прошивке) или консоль + ADB (из состава Android SDK).
    Как верно заметил в комментариях хабраюзер agent0, если вы выбрали второй вариант, необходимо в Настройки — Для разработчиков включить Отладку по USB и предоставить Root-доступ по ADB.


Поехали!
Запускаем терминал, запрашиваем права Суперпользователя и смотрим количество возможных пользователей на устройстве (на смартфоне возвращаемое значение 1):

su
pm get-max-users

Установим максимальное количество пользователей равное двум (вы можете установить больше):

setprop fw.max_users 2

Создадим пользователя с именем test:

pm create-user test

Готово! Теперь в меню Параметры устройства, вызываемое удержанием кнопки блокировки вы можете переключаться между пользователями, а в Настройках появился пункт Пользователи (на втором скриншоте как раз это меню).



Если же у вас в меню Параметры устройства отсутствует выбор пользователей, проверьте установлен ли соответствующий флажок в меню Настройки — Кнопки — Меню кнопки питания.
Скриншот тут
image


Добавлю, что переключать пользователей можно из терминала командой:
am switch-user <user-id>

, где <user-id> вы получаете с помощью команды: pm list users

Для удаления пользователя воспользуйтесь командой:
pm remove-user <user-id>

В заключение хочу добавить, что после обновления прошивки (я обновляю «ночнушки» достаточно часто), свойство fw.max_users снова принимает значение 1 и в Настройках становится недоступным пункт Пользователи, хотя на созданного пользователя все еще можно переключиться.
Поделиться публикацией

Комментарии 11

    +3
    Я активно пользуюсь многопользовательским режимом в Nexus 7 и наблюдаю связанные с этим делом косяки. Просто упомяну самые яркие
    1) Нельзя выйти из профиля другого пользователя чтобы не активировались всякие будильники, аськи и прочее ничем кроме перезапуска (или я проглядел способ?)
    2) Отключенные системные приложения будут восстанавливаться при смене профиля, даже если в нём они тоже были отключены. т.е. одно переключение профиля и они снова на месте (меня гугл-медиа, например, бесит)
    3) Обновление приложения в одном профиле обновит его и в другом (например в профиле А игрулька не обновлялась т.к. обнаглела и стала требовать новых разрешений, в профиле Б её обновили — в профиле А она тоже обновится)
    4) Приложения из профиля А можно запихнуть в профиль Б только переустановкой или танцами с бубном (сторонний софт и т.п.) Например жена просит поставить такую же игрушку и ей и доче — значит нужно её найти, тыкнуть установку в каждом из профилей
    5) В списке приложений таки отображаются чужие приложения (во всяком случае на nexus 7 13)
      0
      Пункты 3 и 4 противоречат друг другу. Я так и не понял какого поведение вы все таки ожидаете/желаете.
      4) Попробуйте перенести приложение /sdcard/Android/obb/
        0
        Чем противоречат? Один пользователь обновляет приложения другого пользователя без спроса, однако не может установить себе чужое приложение, он должен взять то же приложение и установить его самостоятельно
          0
          Я хочу сказать, что в первом случае вы «ругаете» поведение системы, при котором игрушка установлена в одном экземпляре, а во втором случае «ругаете», что приходится устанавливать в нескольких экземплярах. Но ведь во втором случае и обновляться они будут по отдельности, не?
            +1
            Я не ругаю, а нахожу это странным. Если бы было что-то одно из двух, то было бы ок. Типа раздельные — ну и пусть будут раздельные. Но оно и не раздельное и не общее, а смесь какая-то странная, не подчиняющаяся логике. Я вот не могу установить приложение второго профиля, удалить его не могу, а обновить могу, разрешить ему что-то новое могу.
        0
        Предположу, что гугл медиа включает Google Partner Setup
        0
        Интересно, для iPad (пусть с jailbreak) когда-нибудь подобное сделают? Совсем давно iUsers был, но с iOS 6/7 не работает.
          +1
          на примере моего Samsung Galaxy Nexus (I9250) с установленным на нем CyanogenMod 10.1.

          Это работает только на цианогенах?
          Подключив телефон по USB (MTP) под вторым пользователем вы увидите пустую папку;

          Что имеется ввиду? У меня под другим пользователем видна ВСЯ внутренняя память, но только некоторые файлы на sd карте
          или консоль + ADB (из состава Android SDK)

          и не забыть включить рутовый доступ по adb в настройках. Я поначалу не понял, в чём проблема была. Все команды выполнились без разговоров. А я привык, что если команда молчит, значит всё ок.
          А чтобы получить прямой доступ к шеллу смартфона набрать команду adb shell.
          после обновления прошивки (я обновляю «ночнушки» достаточно часто), свойство fw.max_users снова принимает значение 1 и в Настройках становится недоступным пункт Пользователи

          У меня почему-то он самопроизвольно сбросился в единицу, хотя я никакими швейными делами не занимался. Возможно перезагружался только. Надо бы поймать этот момент.
          Теперь в меню «Параметры устройства», вызываемое удержанием кнопки блокировки вы можете переключаться между пользователями

          На моём смартфоне нет иконок пользователей, как на планшетах. Поэтому между ними просто так не переключиться… Чтобы переключаться кнопкой питания, нужно в настройках меню кнопки питания выставить соответствующую клавишу. Смотри скриншоты.
          Скриншоты


          А нет ли более удобного способа переключения? Я имею ввиду, как сделать выбор пользователей прямо с лок скрина, как это сделано на планшетах?

          И, кстати, почуму-то пропал пункт операции в приложениях у второго пользователя. Возможно он доступен только владельцу устройства (первому пользователю), либо просто рутовые операции недоступны никому кроме первого пользователя. Тоже хотелось бы уточнить этот момент.
          <user-id> вы получаете с помощью команды: pm list-users

          Нет. Командой pm list users. Без деша.

          И ещё одно. Вот нашел видео
          Тут можно посмотреть как переключение между пользователями идёт с локскрина (там просто круглые иконки пользователей), а также говорится о том, что нужно включить (разрешить) ограниченному аккаунту, для того, чтобы он не увидел просто чёрный экран вместо лаунчера. А то меня это тоже в ступор поначалу поставило. Подумал, что поддержка нескольких пользователей неполноценна. Нет, все ок =) Надеюсь, кому-то поможет.
            +1
            Это работает только на цианогенах?

            Нет, должно работать на любом рутованном Android, начиная с версии 4.2
            Что имеется ввиду? У меня под другим пользователем видна ВСЯ внутренняя память, но только некоторые файлы на sd карте

            Переключаемся на второго пользователя, подключаем к ПК по USB, видим чистый диск. У первого пользователя монтируется /storage/emulated/0, у второго — /storage/emulated/1. У вас не так? Какая версия Android?
            и не забыть включить рутовый доступ по adb в настройках.

            Дополню статью. Спасибо.
            просто рутовые операции недоступны никому кроме первого пользователя.

            Так и есть.
            Командой pm list users. Без деша.

            Исправил.
            Вот нашел видео

            Сейчас нет возможности посмотреть. Постараюсь дополнить позже.
              0
              Переключаемся на второго пользователя, подключаем к ПК по USB, видим чистый диск. У первого пользователя монтируется /storage/emulated/0, у второго — /storage/emulated/1. У вас не так? Какая версия Android?

              У меня андроид 4.4.2 KitKat CyanogenMod.
              Вот какая ситуация у меня:

              /external_sd — линк на /storage/sdcard1
              /extSdCard — линк на /storage/sdcard1
              /sdcard — линк на /storage/emulated/legacy. То есть это никакая не sd, а внутренняя память
              /usbdisk — линк на /storage/usbdisk
              /storage/emulated/0 — моя внутренняя память
              /storage/emulated/11 — пустые папки DCIM и т.д.
              /storage/emulated/clockworkmod — файл recovery_version
              /storage/emulated/legacy — внутренняя память (как понимаю, именно первого юзера)
              /storage/emulated/obb — кеши для игр
              /storage/sdcard0 — пустая папка (почему? Что здесь должно быть?)
              /storage/sdcard1 — моя sd карта
              /storage/usbdisk — пустая папка

              А при подключении смартфона по usb по протоколу MTP от другого пользователя вижу вообще странную картину. С виду всё как обычно: в проводнике вижу две точки: Внутренняя память и SD-карта.
              При обычном пользователе я захожу туда и вижу те точки, которые расположены в телефоне по путям /storage/emulated/0 для внутренней памати и /storage/sdcard1 для SD-карта.

              При втором же пользователе я вижу вот что:
              в точке «Внутренняя память» я вижу все свои файлы, лежащие на моей карте памяти,
              а в точке «SD-карта» я вижу только два файла apk тоже со флешки! Причем на флешке присутствуют как файлы другого типа, так и другие apk файлы, но здесь видны только два этих apk. Непонятно, по какому принципу отобраны для показа именно они.
              Ну а до /storage/emulated/11 в моём случае получается компу вообще не дотянуться, хотя это настоящая внутренняя память для другого пользователя.

            0
            Небольшое дополнение:
            Чтобы другие пользователи могли запрашивать права бога нужно зайти в Настройки / Суперпользователь / вызвать меню настройки / Многопользовательские настройки.
            Там есть три опции:
            1) только владелец
            2) одобренные владельцем
            3) все пользователи
            Выбираем нужный.

            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

            Самое читаемое