summaryrefslogtreecommitdiff
path: root/rcs
diff options
context:
space:
mode:
authorMeng Wang <mewan@google.com>2016-06-30 18:28:02 -0700
committerMeng Wang <mewan@google.com>2016-07-06 17:04:59 -0700
commit7011540781e2e683ed34bc970f2f9ac3e248f092 (patch)
tree926e9a004a5e6d713743b5d78d31d3767a962fa4 /rcs
parent13f168870c11d7ab0e96bbe44d066c4d684f08fd (diff)
downloadims-7011540781e2e683ed34bc970f2f9ac3e248f092.tar.gz
Disable PresencePolling w/o carrier support
If CarrierConfigManager use_rcs_presence_bool is false, PresencePolling doesn't start. Bug: 29061605 Bug: 29636852 Change-Id: I76ccb0879e076a88c57bd38b2b8c83851d22a824
Diffstat (limited to 'rcs')
-rw-r--r--rcs/presencepolling/src/com/android/service/ims/presence/DeviceBoot.java7
-rw-r--r--rcs/presencepolling/src/com/android/service/ims/presence/PollingService.java35
2 files changed, 29 insertions, 13 deletions
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 096d342..7f7b438 100644
--- a/rcs/presencepolling/src/com/android/service/ims/presence/DeviceBoot.java
+++ b/rcs/presencepolling/src/com/android/service/ims/presence/DeviceBoot.java
@@ -31,7 +31,6 @@ package com.android.service.ims.presence;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
-import android.os.SystemProperties;
import com.android.ims.RcsPresence;
import com.android.ims.RcsPresence.PublishState;
@@ -63,13 +62,11 @@ public class DeviceBoot extends BroadcastReceiver {
logger.debug("Publish state: " + state);
}
- String rcsSupported = SystemProperties.get("persist.rcs.supported");
- logger.info("persist.rcs.supported: " + rcsSupported);
- if (! "1".equals(rcsSupported)) {
+ if (!PollingService.isRcsSupported(context)) {
return;
}
- if (! sServiceStarted) {
+ if (!sServiceStarted) {
sServiceStarted = LauncherUtils.launchPollingService(context);
}
diff --git a/rcs/presencepolling/src/com/android/service/ims/presence/PollingService.java b/rcs/presencepolling/src/com/android/service/ims/presence/PollingService.java
index d6e4410..7977d2e 100644
--- a/rcs/presencepolling/src/com/android/service/ims/presence/PollingService.java
+++ b/rcs/presencepolling/src/com/android/service/ims/presence/PollingService.java
@@ -29,9 +29,12 @@
package com.android.service.ims.presence;
import android.app.Service;
+import android.content.Context;
import android.content.Intent;
+import android.telephony.CarrierConfigManager;
import android.os.Handler;
import android.os.IBinder;
+import android.os.PersistableBundle;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.SystemProperties;
@@ -57,7 +60,7 @@ public class PollingService extends Service {
public void onCreate() {
logger.debug("onCreate()");
- if (isEabSupported()) {
+ if (isEabSupported(this)) {
mCapabilityPolling = CapabilityPolling.getInstance(this);
mCapabilityPolling.start();
}
@@ -68,7 +71,7 @@ public class PollingService extends Service {
logger.debug("onStartCommand(), intent: " + intent +
", flags: " + flags + ", startId: " + startId);
- if (!isRcsSupported()) {
+ if (!isRcsSupported(this)) {
stopSelf();
return START_NOT_STICKY;
}
@@ -95,7 +98,7 @@ public class PollingService extends Service {
public IBinder onBind(Intent intent) {
logger.debug("onBind(), intent: " + intent);
- if (!isRcsSupported()) {
+ if (!isRcsSupported(this)) {
return null;
}
@@ -103,16 +106,32 @@ public class PollingService extends Service {
return null;
}
- private boolean isRcsSupported() {
+ static boolean isRcsSupported(Context context) {
+ return isRcsSupportedByDevice() && isRcsSupportedByCarrier(context);
+ }
+
+ private static boolean isEabSupported(Context context) {
+ return isEabSupportedByDevice() && isRcsSupportedByCarrier(context);
+ }
+
+ private static boolean isRcsSupportedByCarrier(Context context) {
+ CarrierConfigManager configManager = context.getSystemService(CarrierConfigManager.class);
+ if (configManager != null) {
+ PersistableBundle b = configManager.getConfig();
+ if (b != null) {
+ return b.getBoolean(CarrierConfigManager.KEY_USE_RCS_PRESENCE_BOOL, false);
+ }
+ }
+ return true;
+ }
+
+ private static boolean isRcsSupportedByDevice() {
String rcsSupported = SystemProperties.get("persist.rcs.supported");
- logger.info("persist.rcs.supported: " + rcsSupported);
return "1".equals(rcsSupported);
}
- private boolean isEabSupported() {
+ private static boolean isEabSupportedByDevice() {
String eabSupported = SystemProperties.get("persist.eab.supported");
- logger.info("persist.eab.supported: " + eabSupported);
return ("0".equals(eabSupported)) ? false : true;
}
}
-