Android: Start Service on boot?
Ich bin reaaaaally neue zu Java, sondern ein erfahrener C#-coder.
Habe ich einen Dienst, den ich starten/stoppen einer Aktivität.
Meine Frage ist, wie kann ich "installieren" dieses service, so dass der start beim Hochfahren von meinem Gerät?
Fand ich dies:
Versuch zum starten eines Dienstes beim Booten auf Android
Ich habe versucht, umgesetzt wird dies wie folgt:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="james.jamesspackage" android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="7" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<application android:icon="@drawable/icon" android:label="@string/app_name"
android:debuggable="true">
<activity android:name=".jamessActivity" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:enabled="true" android:name=".MyService">
<intent-filter>
<action android:name="james.jamesspackage.MyService" />
</intent-filter>
</service>
<receiver android:name="james.jamesspackage.MyBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.HOME" />
</intent-filter>
</receiver>
</application>
</manifest>
Was ist falsch? Kann ich eine Aktivität haben, und ein service - /Empfänger in einem manifest?
Dank
James
Was meinst du mit installieren? Die postthat Sie sind likning zu erklären, was Sie brauchen, um hinzuzufügen, um Ihre manifest-beim kompilieren der app.
Aktualisiert meine Frage
Aktualisiert meine Frage
InformationsquelleAutor user758945 | 2011-05-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
How to start service an-Gerät neu starten(autorun-app, etc.)
Zum ersten: seit der version Android 3.1+, die Sie nicht erhalten BOOT_COMPLETE, wenn der Benutzer nie angefangen, Ihre app mindestens einmal oder Benutzer "force closed" - Anwendung.
Dies wurde getan, um zu verhindern, dass malware automatisch register service. Diese Sicherheitslücke wurde geschlossen, die in neueren Versionen von Android.
Lösung:
App erstellen, die mit der Tätigkeit. Wenn der Benutzer es ausführen, sobald die app empfangen können BOOT_COMPLETE broadcast-Nachricht.
Zur zweiten: BOOT_COMPLETE gesendet wird, bevor externe Speicher montiert. wenn die app installiert ist, um externen storage-Sie erhalten keine BOOT_COMPLETE broadcast-Nachricht.
In diesem Fall gibt es zwei Lösungen:
Wenn Ihre app bereits installiert auf dem internen Speicher dann der code unten kann Ihnen helfen, zu verstehen, wie start-service auf dem Gerät boot.
In Manifest.xml
Erlaubnis:
Registrieren Sie Ihr BOOT_COMPLETED-Empfänger:
Registrieren Sie Ihr service:
In reciever OnBoot.java:
Für HTC, die Sie vielleicht benötigen auch add-in-Manifest dieser code wenn Gerät nicht fangen RECEIVE_BOOT_COMPLETED:
Reciever nun wie folgt Aussehen:
Wie test BOOT_COMPLETED ohne Neustart emulator oder auf einem echten Gerät?
Es ist ganz einfach. Versuchen Sie dies:
How to get device id? Abrufen der Liste der angeschlossenen Geräte mit der id ' s:
adb in ADT standardmäßig finden Sie in:
Genießen! )
InformationsquelleAutor user3439968
Sieht aus wie die Namen in das Empfänger-Abschnitt ist falsch. Dies ist, was meine Anwendung den Eintrag in die AndroidManifest.xml sieht aus wie:
Beachten Sie, dass die Namen sind relativ zum package in der manifest-Erklärung. Ihre Empfänger-name sollte ".MyBroadcastReceiver", da das Paket, das manifest enthält james.jamesspackage
InformationsquelleAutor Kaj