So starten Sie einen Dienst, wenn .apk zum ersten Mal installiert wird

Lesezeit: 8 Minuten

So starten Sie einen Dienst wenn apk zum ersten Mal
Lalit Poptani

In meiner Anwendung habe ich keinen UI-Teil, daher muss ich einen Dienst starten, sobald die Anwendung auf dem Gerät installiert wird. Ich habe viele Links gesehen, von denen die Antwort war, dass es nicht möglich ist, aber ich denke, es ist sicherlich möglich. Einfach mal anschauen Plan B Anwendung im Android Market, die meine Anforderung erfüllt. Unten ist meine Manifest-Datei, wie ich es versucht habe, aber der Dienst wurde überhaupt nicht aufgerufen. Lassen Sie mich also wissen, wie ein Dienst am besten gestartet werden kann, wenn die Anwendung installiert wird.

AKTUALISIEREN

Ich habe es auch mit versucht android.intent.action.PACKAGE_ADDED Es funktioniert gut, um das Paket für die anderen Anwendungen zu erkennen, aber nicht für sich selbst.

<?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>

  • Vielleicht hilft Ihnen dieser Beitrag: stackoverflow.com/questions/2227604/…?

    – Yahor10

    16. Dezember 2011 um 9:12 Uhr

  • @Lalit: Untersuchen Sie, was mit einer PUSH-Installation einer Anwendung aus dem Market passiert und was sie tun kann. Irgendetwas löst den Start von Plan B aus – er startet nicht automatisch. Ich habe es gerade installiert und frage mich, ob die Installation etwas an ihre Server gesendet hat, die dann eine E-Mail an mein Gerät gesendet haben. EIN BroadcastReceiver Das Abhören eingehender E-Mails von einer bestimmten E-Mail-Adresse könnte verwendet werden, um a zu starten Service. Danach verstehe ich nicht genug darüber, wie PUSH-Installationen aus dem Market funktionieren oder wie sie ohne Benutzereingaben installiert werden, sodass ich nicht weiter helfen kann.

    – Squonke

    16. Dezember 2011 um 10:11 Uhr


  • @Lalit: Hallo, hast du eine Möglichkeit gefunden, den Dienst zu starten, wenn apk zum ersten Mal installiert wird?

    – Mehul Joisar

    6. März 2013 um 7:26 Uhr

  • Nein, es ist ohne einen UI-Teil in der Anwendung nicht möglich.

    – Lalit Poptani

    6. März 2013 um 7:27 Uhr

  • Vielen Dank für die schnelle Antwort. Ich habe noch einen Zweifel. Ist es also möglich, eine Anwendung ohne ein App-Symbol zu erstellen? Das bedeutet, dass die Anwendung nur aus Rundfunkempfängern und -diensten besteht.

    – Mehul Joisar

    6. März 2013 um 7:33 Uhr

So starten Sie einen Dienst wenn apk zum ersten Mal
CommonsWare

Glücklicherweise funktioniert Plan B nicht auf Android 3.1+, wie auf einem XOOM und einem Galaxy Nexus getestet.

Was Plan B tut, ist eine Sicherheitslücke auszunutzen, die von Drive-by-Malware ausgenutzt werden könnte, weshalb Android genau das verhindert.


AKTUALISIEREN

Zur Verdeutlichung: Wie inazaruk gepostet und ich andere Antworten kommentiert habe, werden alle Anwendungen bei der Installation in einen “gestoppten” Zustand versetzt. Dies ist derselbe Zustand, in den die Anwendung gelangt, nachdem der Benutzer das Stoppen der App über die Anwendung „Einstellungen“ erzwungen hat. In diesem “angehaltenen” Zustand wird die Anwendung aus keinem Grund ausgeführt, außer durch einen manuellen Start einer Aktivität. Vor allem nein BroadcastReceviers werden unabhängig von der Veranstaltung, für die sie sich registriert haben, aufgerufen, bis der Benutzer die App manuell ausführt.

Dieser Block behandelt das Plan B-Szenario der Remote-Installation und -Ausführung, das sie zuvor genutzt haben. Denn damit würde jeder mit einem gehackten Google-Konto Gefahr laufen, sein Gerät zu infizieren, sozusagen freihändig.

Also, wenn das OP sagt:

Ich muss einen Dienst starten, sobald die Anwendung auf dem Gerät installiert wird

Das OP ist erfolglos und muss die Anwendung neu gestalten, um diese angebliche “Notwendigkeit” zu vermeiden.

  • „Insbesondere werden keine BroadcastReceviers aufgerufen, unabhängig von dem Ereignis, für das sie sich registriert haben, bis der Benutzer die App manuell ausführt“ oder die Hardwareaktion ausgeführt wird. Dies kann das Starten der Kamera oder einen Neustart beinhalten (wie der Autor auch in stackoverflow.com/a/2127179/461982 erwähnt). Beachten Sie, dass Ihre App dadurch leicht als Malware bei Google Play gekennzeichnet werden kann.

    – Verlassener Einkaufswagen

    21. Juni 2019 um 16:56 Uhr

1647266591 20 So starten Sie einen Dienst wenn apk zum ersten Mal
Jeffrey Blattmann

Anwendungen, die auf der /system-Partition installiert sind, werden nach der Installation nicht in den Zustand „gestoppt“ versetzt. Wenn Sie root haben, können Sie Folgendes tun:

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

Und es kann Broadcast-Intents sofort empfangen. Dies ist sicherlich keine Allzwecklösung, aber ich wollte es der Vollständigkeit halber erwähnen.

BEARBEITEN: Denken Sie daran, dass verschiedene Versionen von Android System-APKs an verschiedenen Orten finden. Android 8 legt sie beispielsweise unter /system/app//.apk ab. Shell in dein Gerät und stöbere herum und folge dem gleichen Schema, das für andere System-APKs verwendet wird.

  • ,Wenn er dies tut, kann er die Apps nicht aktualisieren ,,, jedes Mal muss er dasselbe Verfahren durchführen ….

    – Vipin Sahu

    15. Mai 2012 um 12:57 Uhr

  • Wie ich bereits erwähnt habe, ist dies keine Allzwecklösung.

    – Jeffrey Blattmann

    15. Mai 2012 um 20:22 Uhr

  • Natürlich wird er in der Lage sein, eine System-App zu aktualisieren. Solange Sie denselben Paketnamen und dieselbe Signatur haben, können Sie eine System-App aktualisieren. Das Update wird auf der Datenpartition platziert, hat aber immer noch den Status „System“, da eine frühere Version auf der Systempartition verfügbar ist.

    – Olle

    21. September 2012 um 10:39 Uhr

  • @JeffreyBlattman Ja, ich stimme deinen Punkten zu. Ich habe den Kommentar von Vipin kommentiert. Ich widersprach seiner Aussage, dass jedes Update über die adb-Befehle erfolgen müsse. Mein Punkt war, dass sie nur einmal gemacht werden müssen. Sobald sich die apk in /system/app befindet, kann die normale App-Installation/-Aktualisierung verwendet werden.

    – Olle

    27. September 2012 um 18:05 Uhr

  • Ich hatte meine App mit dem Plattformzertifikat signiert, aber “normal” mit adb installiert. Erst als ich die apk nach /system/app gepusht habe, startete der Dienst von selbst. Diese Antwort war sehr hilfreich.

    – Josh Feldmann

    13. September 2016 um 16:07 Uhr

1647266591 781 So starten Sie einen Dienst wenn apk zum ersten Mal
inazaruk

Ich stimme der Antwort von CommonsWare auf die Frage zu: So starten Sie den Android-Dienst bei der Installation. Mit anderen Worten, Sie können Ihren Dienst nicht automatisch starten, nachdem Sie gerade installiert wurden.

Noch etwas zu neueren Android-Plattformen: Wenn Sie überhaupt keine Benutzeroberfläche haben, werden Sie Probleme haben, Ihren Dienst zu starten, selbst wenn Sie ihn verwenden BOOT_COMPLETE Absicht auf Android 3.1+.

Das liegt daran, dass sich alle installierten Anwendungen im angehaltenen Zustand befinden. In diesem Status erhalten Anwendungen KEINE Broadcast-Benachrichtigungen.

Um Ihre Anwendung zu aktivieren, muss eine andere Anwendung (oder ein anderer Benutzer) Ihren Dienst oder Ihre Aktivität oder Ihren Inhaltsanbieter starten. Der übliche Arbeitsablauf ist, wenn der Benutzer auf das Symbol Ihrer Anwendung klickt.

Ich habe eine ausführliche Erklärung dazu in meinem geschrieben Blogeintrag.

  • Sie haben einen Link zum falschen Blog-Beitrag angegeben, der richtige ist Anwendungen „aktivieren“.. Prost 🙂

    – Alexander Malachow

    12. August 2013 um 3:54 Uhr


  • Links nicht gefunden @ inazaruk, Alexander Malakhov

    – Ajay Pandaya

    2. November 2015 um 5:47 Uhr


  • @inazaruk : Hast du einen neuen Link für deinen Blogbeitrag?

    – Kikiwa

    13. Mai 2016 um 14:44 Uhr

  • @AjayPandya, @Kikiwa, @AADTechnischzuletzt archiviert Verknüpfung.

    – Dennis T –Monica wieder einsetzen–

    16. Oktober 2017 um 21:43 Uhr

Plan B führt diesen Start durch, indem er auf die Ereignisse lauscht, die im System passieren. Es verwendet einen Empfänger, der buchstäblich Hunderte von Ereignissen abhört, in der Hoffnung, dass einige von ihnen schließlich ausgelöst werden. So können Sie es also tun. Andernfalls gibt es keine integrierte Möglichkeit, die Anwendung zu starten, sobald sie installiert ist.

Ich bin mir nicht sicher, was Ihre Einschränkungen / Ihr Zweck sind, aber wenn Sie eine andere Anwendung installieren können, die eine Aktivität hat, können Sie sie eine Absicht mit dem Flag senden lassen FLAG_INCLUDE_STOPPED_PACKAGES.

Dadurch wird Ihre Anwendung für die Absichtsauflösung verwendet, obwohl sie sich im angehaltenen Zustand befindet. Wenn die Aktion der Absicht mit einem Ihrer Filter übereinstimmt, wird das Paket auch aus dem angehaltenen Zustand geholt.

So starten Sie einen Dienst wenn apk zum ersten Mal
Parth Doshi

Ich glaube nicht. Sie können den Dienst sofort starten, nachdem Sie Ihre Anwendung auf dem Gerät installiert haben.

Die Anwendung muss zuerst vom Benutzer über eine Art aufgerufen werden Activity.Die einzigen Dinge, die Sie einige registrieren müssen Broadcast Receiver mit entsprechenden Absichten im Manifest, die Ihren Dienst aufrufen, wenn etwas auf dem Gerät passiert, aber dies bleibt bei der Android 3.1-Version.

BEARBEITEN:

Nach dem Android 3.1+ ab können Sie keine mehr verwenden Broadcast zum Starten Ihrer Anwendung, da alle Anwendungen nach Abschluss des Gerätestarts im inaktiven Zustand bleiben, und um die Anwendung zu starten, muss der Benutzer sie aufrufen (durch Berühren des App-Symbols).

1647266592 677 So starten Sie einen Dienst wenn apk zum ersten Mal
Gemeinschaft

Wie von CommonsWare in der Antwort auf diese Frage angegeben (die Sie vermutlich alle gesehen haben, aber ignoriert haben), ist das Starten eines Dienstes bei der Installation nicht möglich – es ist einfach keine Sache, die in die Plattform implementiert ist.

Ein automatischer Start beim nächsten Booten ist jedoch möglich.

Wie in den Technischen Details für PlanB angegeben:

Plan B wird versuchen zu starten, sobald es heruntergeladen ist, aber in einigen Fällen müssen Sie eine SMS senden, um es zu starten.

Meine Vermutung ist, dass Sie auf einem gerooteten Telefon sind könnte starten können Service bei der Installation – aber es gibt keine Garantie dafür, dass das Telefon gerootet ist, weshalb PlanB in einigen Fällen den Empfang einer SMS verlangt, da dies vom registriert werden kann IntentFilter der App und dann verwendet, um die zu starten Service.

  • Ja, das wurde überprüft, aber Sie können die PlanB-Anwendung überprüfen, die ich in der Frage verlinkt hatte.

    – Lalit Poptani

    16. Dezember 2011 um 9:34 Uhr

  • “Ein automatischer Start beim nächsten Booten ist aber möglich.” — nicht auf Android 3.1+. Der Benutzer muss zuvor manuell eine Aktivität aus der Anwendung starten BroadcastReceiver wird funktionieren.

    – CommonsWare

    16. Dezember 2011 um 13:42 Uhr

1001880cookie-checkSo starten Sie einen Dienst, wenn .apk zum ersten Mal installiert wird

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy