start service on boot

Daniel Gultsch created

Change summary

AndroidManifest.xml                                    | 35 +++++++----
src/eu/siacs/conversations/services/EventReceiver.java | 17 +++++
src/eu/siacs/conversations/ui/XmppActivity.java        |  2 
3 files changed, 41 insertions(+), 13 deletions(-)

Detailed changes

AndroidManifest.xml 🔗

@@ -9,28 +9,39 @@
         android:targetSdkVersion="19" />
 
     <uses-permission android:name="android.permission.READ_CONTACTS" />
-    <uses-permission android:name="android.permission.READ_PROFILE"/>
+    <uses-permission android:name="android.permission.READ_PROFILE" />
     <uses-permission android:name="android.permission.INTERNET" />
-    <uses-permission android:name="android.permission.WAKE_LOCK"/>
-    
+    <uses-permission android:name="android.permission.WAKE_LOCK" />
+    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
+
     <application
         android:allowBackup="true"
         android:icon="@drawable/ic_launcher"
         android:label="@string/app_name"
         android:theme="@android:style/Theme.Holo.Light" >
-        <service android:name="eu.siacs.conversations.services.XmppConnectionService"/>
+        <service android:name="eu.siacs.conversations.services.XmppConnectionService" />
+
+        <receiver android:name="eu.siacs.conversations.services.EventReceiver" >
+            <intent-filter>
+                <action android:name="android.intent.action.BOOT_COMPLETED" />
+            </intent-filter>
+        </receiver>
+
         <activity
             android:name="eu.siacs.conversations.ui.ConversationActivity"
+            android:configChanges="orientation|screenSize"
             android:label="Conversations"
-            android:windowSoftInputMode="stateHidden"
-            android:configChanges="orientation|screenSize">
+            android:windowSoftInputMode="stateHidden" >
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
+
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
-             <intent-filter>
+            <intent-filter>
                 <action android:name="android.intent.action.SENDTO" />
+
                 <category android:name="android.intent.category.DEFAULT" />
+
                 <data android:scheme="imto" />
                 <data android:host="jabber" />
             </intent-filter>
@@ -45,25 +56,25 @@
             android:label="Manage Accounts"
             android:parentActivityName="eu.siacs.conversations.ui.ConversationActivity" >
         </activity>
-         <activity
+        <activity
             android:name="eu.siacs.conversations.ui.MucDetailsActivity"
             android:label="Conference Details"
-            android:windowSoftInputMode="stateHidden">
+            android:windowSoftInputMode="stateHidden" >
         </activity>
         <activity
             android:name="eu.siacs.conversations.ui.ContactDetailsActivity"
             android:label="Contact Details"
-            android:windowSoftInputMode="stateHidden">
+            android:windowSoftInputMode="stateHidden" >
         </activity>
         <activity
             android:name="eu.siacs.conversations.ui.NewConversationActivity"
             android:label="@string/title_activity_new_conversation"
             android:parentActivityName="eu.siacs.conversations.ui.ConversationActivity"
-            android:windowSoftInputMode="stateHidden">
+            android:windowSoftInputMode="stateHidden" >
             <meta-data
                 android:name="android.support.PARENT_ACTIVITY"
                 android:value="de.gultsch.chat.ui.ConversationActivity" />
         </activity>
     </application>
 
-</manifest>
+</manifest>

src/eu/siacs/conversations/services/EventReceiver.java 🔗

@@ -0,0 +1,17 @@
+package eu.siacs.conversations.services;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+
+public class EventReceiver extends BroadcastReceiver {
+	@Override
+    public void onReceive(Context context, Intent intent) {
+		Intent mIntentForService = new Intent(context, XmppConnectionService.class);
+		if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {
+        	
+        }
+		context.startService(mIntentForService);
+    }
+	
+}

src/eu/siacs/conversations/ui/XmppActivity.java 🔗

@@ -37,9 +37,9 @@ public abstract class XmppActivity extends Activity {
 	
 	@Override
 	protected void onStart() {
-		startService(new Intent(this, XmppConnectionService.class));
 		super.onStart();
 		if (!xmppConnectionServiceBound) {
+			startService(new Intent(this, XmppConnectionService.class));
 			Intent intent = new Intent(this, XmppConnectionService.class);
 			bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
 		}