Я использую Android 4.3 Jelly Bean на Samsung Galaxy SIII.
Я пытаюсь выяснить, как настроить такие приложения, как Skype, для автоматического запуска после того, как система прошла процесс начальной загрузки, завершила загрузку и запустилась. Я хотел бы иметь возможность сделать это через приложение, которое не требует рутирования моего устройства, если это возможно. Когда я просматриваю информацию, относящуюся к Skype, в диспетчере приложений по умолчанию, я вижу, что приложение Skype использует разрешение «запускать при запуске», что означает, что должна быть возможность настроить это приложение для запуска при запуске, но я не смог найти флажок для этого ни на этом экране, ни в настройках приложения Skype. Аналогичная ситуация может иметь место и с другими приложениями.
В этом посте рассматривается предотвращение запуска приложений и упоминаются полезные сторонние приложения, такие как Autorun Manager , который, по-видимому, в основном связан с блокировкой запуска и перезапуска приложений после их уничтожения, или, по крайней мере, это то, что я понял из описания приложения. в магазине игр и Autostarts , который управляет тем, какие приложения запускаются событиями.
Итак, вот мои вопросы:
Почему на Android нет предустановленного собственного приложения Startup Manager для управления тем, какие приложения должны запускаться по умолчанию, а какие нет?
Если скайпу требуется разрешение «запускать при запуске», а в ОС или в приложении нет места для настройки автоматического запуска такого приложения, то что дает это разрешение?
Спасибо.
Было бы неплохо, если бы вместе с системой поставлялся менеджер запуска, который позволял бы пользователю решать, что запускать, а что нет. Но это не так, это работает немного по-другому:
Приложения с разрешением «запускать при запуске» могут регистрировать «слушателя» для трансляции, BOOT_COMPLETED
который система всегда выдает при этом событии. Таким образом, они получают уведомление об этом событии и могут решить выполнить какое-либо действие. Это может быть запуск какой-то фоновой службы, которая продолжает работать, но они также могут сделать что-то небольшое, а затем снова выйти.
ИМХО, в Skype есть возможность автоматического входа в систему после загрузки, чтобы вы были доступны для входящих звонков. AFAIR это даже поведение приложения по умолчанию. Если для этого не работает фоновая служба, тогда он может зарегистрироваться для обмена облачными сообщениями, что снова «разбудит его» для обработки входящих вызовов. Таким образом, приложению не нужно было постоянно работать в фоновом режиме. Действительно, приложение также объявляет com.google.android.c2dm.permission.RECEIVE
разрешение (C2DM означает «Обмен сообщениями устройств Cloud 2», который теперь является GCM = Google Cloud Messaging), так что это может быть объяснением.
ОБНОВЛЯТЬ:
Андрей Т. подтвердил это в комментариях:
Наконец-то я проверил манифест Skype для Android, открыв его APK-файл (
base.apk
), и действительно там естьcom.skype.android.push.DeviceBootReceiver
фильтр намеренийandroid.intent.action.BOOT_COMPLETED
. Хотя я не исследовал, что он делает. Кроме того, я забыл, что широковещательный приемник не указан в списке запущенных процессов, как упоминал Джон (я могу подтвердить, что это разработчик). Значит, вы правы в своих предположениях :)
com.google.android.c2dm.permission.RECEIVE
. Поскольку Skype не указан в списке, RUNNING
я предполагаю, что когда в фоновом режиме не работает процесс или служба, а разрешение «запускать при запуске» (android.permission.RECEIVE_BOOT_COMPLETED) позволяет Skype зарегистрировать широковещательный приемник для C2DM, и когда сообщение C2DM приходит с сервера, приемник вещания запускает активность Skype.RUNNING
в диспетчере приложений, поскольку они запускаются другой системной службой (имя которой я сейчас не могу вспомнить). Поправьте меня если я ошибаюсь. Спасибо.base.apk
), и действительно там есть com.skype.android.push.DeviceBootReceiver
фильтр намерений android.intent.action.BOOT_COMPLETED
. Хотя я не исследовал, что он делает. Кроме того, я забыл, что широковещательный приемник не указан в списке запущенных процессов, как упоминал Джон (я могу подтвердить, что это разработчик). Значит, вы правы в своих предположениях :)
Эндрю Т.
Джон Сондерсон
Джон Сондерсон
Эндрю Т.
Джон Сондерсон
Хоакин Юрчук
Джон Сондерсон