diff options
author | Meng Wang <mewan@google.com> | 2016-06-30 18:28:02 -0700 |
---|---|---|
committer | Meng Wang <mewan@google.com> | 2016-07-06 17:04:59 -0700 |
commit | 7011540781e2e683ed34bc970f2f9ac3e248f092 (patch) | |
tree | 926e9a004a5e6d713743b5d78d31d3767a962fa4 /rcs | |
parent | 13f168870c11d7ab0e96bbe44d066c4d684f08fd (diff) | |
download | ims-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.java | 7 | ||||
-rw-r--r-- | rcs/presencepolling/src/com/android/service/ims/presence/PollingService.java | 35 |
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; } } - |