summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrad Ebinger <breadley@google.com>2017-02-15 01:34:17 +0000
committerandroid-build-merger <android-build-merger@google.com>2017-02-15 01:34:17 +0000
commit36bfb04582277af7c8daaab8eacfd5b5e6b0236a (patch)
treec9435acdba23130c739bce2327a425ab5a99b524
parent921cc3a850561fa950186c58b6c92be27e01ec14 (diff)
parent01e835687ead2bc237b90f9e60793b1b849327ac (diff)
downloadims-36bfb04582277af7c8daaab8eacfd5b5e6b0236a.tar.gz
Turn implicit RCS broadcast to startService instead am: d4d3d762a7 am: ee8176647d am: eafc81d8b1
am: 01e835687e Change-Id: Ieb7dc17ebe2cce3276c3e6480291cff64ec88e10
-rw-r--r--rcs/presencepolling/AndroidManifest.xml9
-rw-r--r--rcs/presencepolling/src/com/android/service/ims/presence/DeviceBoot.java15
-rw-r--r--rcs/presencepolling/src/com/android/service/ims/presence/PresenceBroadcastReceiver.java56
-rw-r--r--rcs/rcsservice/src/com/android/service/ims/RcsStackAdaptor.java18
4 files changed, 18 insertions, 80 deletions
diff --git a/rcs/presencepolling/AndroidManifest.xml b/rcs/presencepolling/AndroidManifest.xml
index 8d69796..e4f5dfb 100644
--- a/rcs/presencepolling/AndroidManifest.xml
+++ b/rcs/presencepolling/AndroidManifest.xml
@@ -73,7 +73,6 @@
<receiver android:name=".DeviceBoot" androidprv:systemUserOnly="true">
<intent-filter android:priority="103">
- <action android:name="com.android.ims.ACTION_PUBLISH_STATUS_CHANGED"/>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
@@ -94,14 +93,6 @@
</intent-filter>
</receiver>
- <receiver android:name=".PresenceBroadcastReceiver"
- androidprv:systemUserOnly="true"
- android:permission="com.android.ims.permission.PRESENCE_ACCESS">
- <intent-filter>
- <action android:name="com.android.ims.ACTION_PUBLISH_STATUS_CHANGED"/>
- </intent-filter>
- </receiver>
-
<service android:name=".PersistService"
android:exported="false"
android:permission="com.android.ims.permission.PRESENCE_ACCESS">
diff --git a/rcs/presencepolling/src/com/android/service/ims/presence/DeviceBoot.java b/rcs/presencepolling/src/com/android/service/ims/presence/DeviceBoot.java
index 7f7b438..ecab2e1 100644
--- a/rcs/presencepolling/src/com/android/service/ims/presence/DeviceBoot.java
+++ b/rcs/presencepolling/src/com/android/service/ims/presence/DeviceBoot.java
@@ -37,12 +37,11 @@ import com.android.ims.RcsPresence.PublishState;
import com.android.ims.internal.Logger;
/**
- * Device boot event receiver: automatically starts the RCS service
+ * Device boot event receiver: automatically starts the RCS service. Registered
+ * to receive BOOT_COMPLETED actions.
*/
public class DeviceBoot extends BroadcastReceiver {
- /**
- * The logger
- */
+
private Logger logger = Logger.getLogger("PresencePolling",
this.getClass().getName());
@@ -54,14 +53,6 @@ public class DeviceBoot extends BroadcastReceiver {
logger.debug("onReceive() in PresencePolling, intent: " +
intent + ", context: " + context);
- String action = intent.getAction();
- if (RcsPresence.ACTION_PUBLISH_STATE_CHANGED.equalsIgnoreCase(action)) {
- int state = intent.getIntExtra(
- RcsPresence.EXTRA_PUBLISH_STATE,
- RcsPresence.PublishState.PUBLISH_STATE_NOT_PUBLISHED);
- logger.debug("Publish state: " + state);
- }
-
if (!PollingService.isRcsSupported(context)) {
return;
}
diff --git a/rcs/presencepolling/src/com/android/service/ims/presence/PresenceBroadcastReceiver.java b/rcs/presencepolling/src/com/android/service/ims/presence/PresenceBroadcastReceiver.java
deleted file mode 100644
index 6d716bd..0000000
--- a/rcs/presencepolling/src/com/android/service/ims/presence/PresenceBroadcastReceiver.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (c) 2015, Motorola Mobility LLC
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * - Neither the name of Motorola Mobility nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MOTOROLA MOBILITY LLC BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
- * DAMAGE.
- */
-
-package com.android.service.ims.presence;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-
-import com.android.ims.RcsPresence;
-
-import com.android.ims.internal.Logger;
-
-public class PresenceBroadcastReceiver extends BroadcastReceiver {
- private Logger logger = Logger.getLogger(this.getClass().getName());
-
- @Override
- public void onReceive(Context context, Intent intent) {
- logger.print("onReceive(), intent: " + intent +
- ", context: " + context);
-
- String action = intent.getAction();
- if (RcsPresence.ACTION_PUBLISH_STATE_CHANGED.equals(action)) {
- intent.setClass(context, PersistService.class);
- context.startService(intent);
- } else {
- logger.debug("No interest in this intent: " + action);
- }
- }
-};
-
diff --git a/rcs/rcsservice/src/com/android/service/ims/RcsStackAdaptor.java b/rcs/rcsservice/src/com/android/service/ims/RcsStackAdaptor.java
index 450e692..151809f 100644
--- a/rcs/rcsservice/src/com/android/service/ims/RcsStackAdaptor.java
+++ b/rcs/rcsservice/src/com/android/service/ims/RcsStackAdaptor.java
@@ -85,6 +85,10 @@ import com.android.service.ims.presence.AlarmBroadcastReceiver;
public class RcsStackAdaptor{
private static final boolean DEBUG = true;
+ private static final String PERSIST_SERVICE_NAME =
+ "com.android.service.ims.presence.PersistService";
+ private static final String PERSIST_SERVICE_PACKAGE = "com.android.service.ims.presence";
+
// The logger
private Logger logger = Logger.getLogger(this.getClass().getName());
@@ -238,11 +242,12 @@ public class RcsStackAdaptor{
SystemProperties.set("rcs.publish.status",
String.valueOf(publishState));
- // broadcast publish state change intent
Intent publishIntent = new Intent(RcsPresence.ACTION_PUBLISH_STATE_CHANGED);
- publishIntent.putExtra(RcsPresence.EXTRA_PUBLISH_STATE,
- publishState);
+ publishIntent.putExtra(RcsPresence.EXTRA_PUBLISH_STATE, publishState);
+ // Start PersistService and broadcast to other receivers that are listening
+ // dynamically.
mContext.sendStickyBroadcast(publishIntent);
+ launchPersistService(publishIntent);
}
mPublishingState = publishState;
@@ -443,6 +448,13 @@ public class RcsStackAdaptor{
return ResultCode.SUCCESS;
}
+ private void launchPersistService(Intent intent) {
+ ComponentName component = new ComponentName(PERSIST_SERVICE_PACKAGE,
+ PERSIST_SERVICE_NAME);
+ intent.setComponent(component);
+ mContext.startService(intent);
+ }
+
private void createListeningThread() {
HandlerThread listenerThread = new HandlerThread("Listener",
android.os.Process.THREAD_PRIORITY_BACKGROUND);