2015-01-19 4 views
0

Я работаю над android multi-user. Поэтому мне нужно преобразовать свой существующий проект в проект поддержки нескольких пользователей.Хотите знать startForeground() как пользователь для многопользовательских

Мое приложение будет работать у владельца. Если я переключусь на пользователя, любые связанные с ним действия пользовательского интерфейса должны отображаться у владельца или пользователя, Я использую Context.startActivityAsUser (намерение, UserHandle.Current); , поэтому действие будет запущено на соответствующем пользователе или владельцу. так же, как и запуск вещательных событий.

В моем приложении я использую уведомление как часть службы, как показано ниже: startForeground (int id, уведомление об уведомлении);

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

, как мне известно, нет startForeground (...), как пользователь (я имею в виду, как startForegroundAsUser()), поэтому я преобразовал уведомления материал для NotificationManager.notifyAsUser (нуль, APPID, уведомление, UserHandle.CURRENT) ; .... Когда я переключаюсь с владельца на пользователя, мое приложение разбивается, и журналы также не ясны, чтобы найти проблему. Logcat просто говорит как I/ActivityManager (421): процесс com.example.test (pid 5833) умер W/ActivityManager (421): Планирование перезапуска разбившегося сервиса com.example.test/com.example.test.testservice в 1000 мс ..... ..... .....

но сервис не запускается, так как верхний профиль ТЕКУЩИЙ.

Позвольте мне узнать другой подход, чтобы достичь этого.

ответ

0

Короткий ответ: вы не можете это сделать. Каждый пакет приложений устанавливается на устройстве с отдельной областью данных и процессом для каждого пользователя. Они намеренно хранятся в памяти и пространстве файловой системы через UID/GID Linux и разрешения. В Android 5.0 это дополнительно применяется с использованием SE Linux для Android. Поэтому, когда вы переключаете (людей), ваши приложения запускаются как отдельные экземпляры для этого человека.

Смежные вопросы