Подтвердить что ты не робот

Как запустить службу, когда .apk установлен в первый раз

В моем приложении у меня нет части интерфейса, поэтому мне нужно запустить службу, как только Applicaton будет установлен на устройстве. Я видел много ссылок, из которых ответ заключался в том, что его невозможно, но я думаю, что это возможно. Просто посмотрите PlanB приложение на Android Market, которое выполняет мои требования. Ниже мой файл манифеста, как я пытался, но Служба не была вызвана вообще. Итак, дайте мне знать, что является наилучшим способом запуска Сервиса, когда приложение будет установлено.

UPDATE

Я также попытался использовать android.intent.action.PACKAGE_ADDED, он отлично работает для обнаружения пакета для других приложений, но не для себя.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.auto.start"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="8" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

    <application
        android:icon="@drawable/ic_launcher" >

        <service android:name=".MyService">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </service>

        <receiver android:name=".BootUpReceiver">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <action android:name="android.intent.action.PACKAGE_INSTALL" />
                <action android:name="android.intent.action.PACKAGE_ADDED" />
                <data android:scheme="package"/>
            </intent-filter>
        </receiver>
    </application>
</manifest>
4b9b3361

Ответ 1

К счастью, Plan B не работает на Android 3.1+, как проверено на XOOM и Galaxy Nexus.

В каком плане B используется уязвимость безопасности, которая может быть использована вредоносными программами на диске, и именно поэтому Android больше не предотвращает ее.


UPDATE

Чтобы уточнить: как опубликовал Иназарук, и я комментирую другие ответы, все приложения после установки находятся в состоянии "остановлено". Это то же самое состояние, что приложение завершается после того, как пользователь принудительно останавливает приложение из приложения "Настройки". Хотя в этом "остановленном" состоянии приложение не запускается по какой-либо причине, за исключением ручного запуска активности. Примечательно, что не будет вызываться BroadcastReceviers, независимо от события, для которого они зарегистрированы, до тех пор, пока пользователь не запустит приложение вручную.

Этот блок охватывает сценарий Plan B для удаленной установки и запуска, который они ранее использовали. В конце концов, любой, у кого есть взломанный аккаунт Google, будет подвержен риску заражения своего устройства, как бы свободным от рук.

Итак, когда OP говорит:

Мне нужно запустить службу, как только Applicaton будет установлен на устройстве

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

Ответ 2

Приложения, установленные на/системном разделе, не могут быть помещены в состояние "остановлено" после установки. Если у вас есть root, вы можете сделать,

$ adb root
$ adb remount
$ adb push your.apk /system/app

И он может сразу принимать трансляции. Это, конечно же, не дает общего решения, но я хотел упомянуть об этом для полноты.

Ответ 3

Я согласен с ответом CommonsWare на вопрос: Как запустить службу андроида при установке. Другими словами, вы не можете автоматически запускать свою службу после того, как вы только что были установлены.

Еще одна вещь о новых платформах Android: если у вас нет пользовательского интерфейса, у вас возникнут проблемы с запуском службы даже при использовании намерения BOOT_COMPLETE для Android 3.1+.

Это потому, что все установленные приложения находятся в состоянии остановки. В этом состоянии приложения не будут получать ЛЮБЫЕ широковещательные уведомления.

Чтобы активировать ваше приложение, необходимо, чтобы какое-либо другое приложение (или пользователь) запускало вашу службу или деятельность или поставщика контента. Обычный рабочий процесс - это когда пользователь нажимает на значок вашего приложения.

Я написал подробные объяснения об этом в своем сообщении .

Ответ 4

План B запускает этот запуск, слушая события, которые происходят в системе. Он использует приемник, который буквально слушает сотни событий, надеясь, что некоторые из них в конечном итоге начнут работать. Так вот как вы можете это сделать. В противном случае нет встроенных средств для запуска приложения сразу после его установки.

Ответ 5

Я не уверен, каковы ваши ограничения/цели, но если вы можете установить другое приложение, у которого есть активность, вы можете отправить его с флагом FLAG_INCLUDE_STOPPED_PACKAGES.

Это будет использовать ваше приложение для разрешения намерения, даже если оно находится в остановленном состоянии. Если действие намерения совпадает с одним из ваших фильтров, оно также выведет пакет из состояния остановки.

Ответ 6

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

Приложение сначала должно быть вызвано пользователем через какой-то Activity. Единственное, что вам нужно зарегистрировать в некотором Broadcast Receiver с соответствующими намерениями в манифесте, которые ссылаются на вас, когда что-то происходит на устройстве, но это повторение Версия Android 3.1.

EDIT:

После Android 3.1 + вы не можете использовать Broadcast для запуска своего приложения, потому что все приложение остается в неактивном состоянии после завершения загрузки устройства и запускает приложение, которое пользователь должен вызывать (Прикосновение к значку приложения).

Ответ 7

Как заявлено CommonsWare в ответе на этот вопрос (который, я полагаю, вы все готовы увидеть, но решили проигнорировать), запуск службы при установке невозможен - это просто не вещь, которая внедряется в платформу.

При этом возможно автоматическое начало следующей загрузки.

Как указано в Технических данных для PlanB:

План B попытается запустить, как только он загрузится, но в некоторых случаях вам нужно будет отправить SMS-сообщение, чтобы начать работу.

Я предполагаю, что на корневом телефоне вы можете запустить Service при установке, но нет гарантии, что телефон укоренен, поэтому PlanB потребует получить текст в некоторых случаях, потому что это может быть зарегистрированный IntentFilter приложения, а затем используемый для запуска Service.

Ответ 8

есть приложение для google play Android Lost, которые вызывают службу регистрации для push-сообщений Google через входящий sms без запуска приложения даже один раз для версии 3.0 +.

Ответ 9

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

Таким образом, несомненно, будет нажата иконка с текстом, таким как "Список паролей" или "Мои банковские счета", который неожиданно появился на главном экране. Посмотрите на успех всех видов фишинга, и здесь вы будете нацеливаться на вора, который уже мотивирован продолжать гнусную деятельность. Пусть вор начнет это для вас.:)

Ответ 10

ЭТО Я думаю, используя BroadcastRecivier для автоматического запуска приложения при перезагрузке устройства, поэтому он будет автоматически запускаться при запуске устройства. Надеюсь, это поможет