diff --git a/res/raw-sw600dp/linphonerc_default b/res/raw-sw600dp/linphonerc_default
index ec26f80bb..8ee2fbaba 100644
--- a/res/raw-sw600dp/linphonerc_default
+++ b/res/raw-sw600dp/linphonerc_default
@@ -14,6 +14,7 @@ size=vga
[app]
sharing_server=https://www.linphone.org:444/lft.php
tunnel=disabled
+push_notification=1
[tunnel]
host=
diff --git a/res/raw/linphonerc_default b/res/raw/linphonerc_default
index f1e2c9ff2..27dcac0ab 100644
--- a/res/raw/linphonerc_default
+++ b/res/raw/linphonerc_default
@@ -14,6 +14,7 @@ size=qvga
[app]
sharing_server=https://www.linphone.org:444/lft.php
tunnel=disabled
+push_notification=1
[tunnel]
host=
diff --git a/res/values/non_localizable_custom.xml b/res/values/non_localizable_custom.xml
index 4e144a698..18ac3ec9c 100644
--- a/res/values/non_localizable_custom.xml
+++ b/res/values/non_localizable_custom.xml
@@ -73,7 +73,6 @@
false
true
false
-
false
false
@@ -91,5 +90,6 @@
linphone-android-photo-%s.jpg
true
+ true
diff --git a/src/org/linphone/LinphoneService.java b/src/org/linphone/LinphoneService.java
index 18b0b48a2..2b5ec9c7b 100644
--- a/src/org/linphone/LinphoneService.java
+++ b/src/org/linphone/LinphoneService.java
@@ -35,6 +35,7 @@ import org.linphone.core.LinphoneProxyConfig;
import org.linphone.mediastream.Log;
import org.linphone.mediastream.Version;
+import android.annotation.TargetApi;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.Notification;
@@ -553,6 +554,17 @@ public final class LinphoneService extends Service {
public IBinder onBind(Intent intent) {
return null;
}
+
+ @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
+ @Override
+ public void onTaskRemoved(Intent rootIntent) {
+ if (getResources().getBoolean(R.bool.kill_service_with_task_manager)) {
+ Log.d("Task removed, stop service");
+ LinphoneManager.getLc().setNetworkReachable(false);
+ stopSelf();
+ }
+ super.onTaskRemoved(rootIntent);
+ }
@Override
public synchronized void onDestroy() {
diff --git a/src/org/linphone/gcm/GCMService.java b/src/org/linphone/gcm/GCMService.java
index 1018fb569..59906ef77 100644
--- a/src/org/linphone/gcm/GCMService.java
+++ b/src/org/linphone/gcm/GCMService.java
@@ -18,8 +18,11 @@ along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+import static android.content.Intent.ACTION_MAIN;
+
import org.linphone.LinphoneManager;
import org.linphone.LinphonePreferences;
+import org.linphone.LinphoneService;
import org.linphone.R;
import org.linphone.UIThreadDispatcher;
import org.linphone.mediastream.Log;
@@ -47,7 +50,9 @@ public class GCMService extends GCMBaseIntentService {
@Override
protected void onMessage(Context context, Intent intent) {
Log.d("Push notification received");
- if (LinphoneManager.isInstanciated() && LinphoneManager.getLc().getCallsNb() == 0) {
+ if (!LinphoneService.isReady()) {
+ startService(new Intent(ACTION_MAIN).setClass(this, LinphoneService.class));
+ } else if (LinphoneManager.isInstanciated() && LinphoneManager.getLc().getCallsNb() == 0) {
UIThreadDispatcher.dispatch(new Runnable(){
@Override
public void run() {