aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdnan Begovic <adnan@cyngn.com>2016-03-24 17:34:54 -0700
committerAdnan Begovic <adnan@cyngn.com>2016-03-24 17:34:54 -0700
commitc4062110451335c123c3c36db8a1eadae1b163ad (patch)
tree33fbf913938243f4d216f63700378e50f4d80276
parentfe7fd1d489108d8278dd1a4a0e8d2b3bc0617cd3 (diff)
downloadvendor_cmsdk-c4062110451335c123c3c36db8a1eadae1b163ad.zip
vendor_cmsdk-c4062110451335c123c3c36db8a1eadae1b163ad.tar.gz
vendor_cmsdk-c4062110451335c123c3c36db8a1eadae1b163ad.tar.bz2
cmsdk: Mandate telephony feature xml's for service implementation.
The feature xml plays two roles: 1) To allow sdk interface (constructor) to throw when system service is unavailable. This allows for clearer platform development debugging. 2) To allow for simpler disambiguation of what services to instrument in a modular environment. Change-Id: Ib8e41130f143f784088b4566589a4ddc58aa2ace TICKET: CYNGNOS-2291
-rw-r--r--cm/lib/main/java/org/cyanogenmod/platform/internal/CMTelephonyManagerService.java9
-rw-r--r--src/java/cyanogenmod/app/CMContextConstants.java8
-rw-r--r--src/java/cyanogenmod/app/CMTelephonyManager.java9
3 files changed, 24 insertions, 2 deletions
diff --git a/cm/lib/main/java/org/cyanogenmod/platform/internal/CMTelephonyManagerService.java b/cm/lib/main/java/org/cyanogenmod/platform/internal/CMTelephonyManagerService.java
index 739722e..35e5395 100644
--- a/cm/lib/main/java/org/cyanogenmod/platform/internal/CMTelephonyManagerService.java
+++ b/cm/lib/main/java/org/cyanogenmod/platform/internal/CMTelephonyManagerService.java
@@ -186,8 +186,13 @@ public class CMTelephonyManagerService extends SystemService {
if (localLOGD) {
Log.d(TAG, "CM telephony manager service start: " + this);
}
- publishBinderService(CMContextConstants.CM_TELEPHONY_MANAGER_SERVICE, mService);
-
+ if (mContext.getPackageManager().hasSystemFeature(
+ CMContextConstants.Features.TELEPHONY)) {
+ publishBinderService(CMContextConstants.CM_TELEPHONY_MANAGER_SERVICE, mService);
+ } else {
+ Log.wtf(TAG, "CM telephony service started by system server but feature xml not" +
+ " declared. Not publishing binder service!");
+ }
mTelephonyManager = (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE);
}
diff --git a/src/java/cyanogenmod/app/CMContextConstants.java b/src/java/cyanogenmod/app/CMContextConstants.java
index 8cfa04b..e82c60b 100644
--- a/src/java/cyanogenmod/app/CMContextConstants.java
+++ b/src/java/cyanogenmod/app/CMContextConstants.java
@@ -149,5 +149,13 @@ public final class CMContextConstants {
*/
@SdkConstant(SdkConstant.SdkConstantType.FEATURE)
public static final String APP_SUGGEST = "org.cyanogenmod.appsuggest";
+
+ /**
+ * Feature for {@link PackageManager#getSystemAvailableFeatures} and
+ * {@link PackageManager#hasSystemFeature}: The device includes the cm telephony service
+ * utilized by the cmsdk.
+ */
+ @SdkConstant(SdkConstant.SdkConstantType.FEATURE)
+ public static final String TELEPHONY = "org.cyanogenmod.telephony";
}
}
diff --git a/src/java/cyanogenmod/app/CMTelephonyManager.java b/src/java/cyanogenmod/app/CMTelephonyManager.java
index 35466c9..4285f44 100644
--- a/src/java/cyanogenmod/app/CMTelephonyManager.java
+++ b/src/java/cyanogenmod/app/CMTelephonyManager.java
@@ -26,6 +26,8 @@ import android.util.Slog;
import java.util.List;
+import cyanogenmod.app.CMContextConstants;
+
/**
* The CMTelephonyManager allows you to view and manage the phone state and
* the data connection, with multiple SIMs support.
@@ -55,6 +57,13 @@ public class CMTelephonyManager {
mContext = context;
}
sService = getService();
+
+ if (context.getPackageManager().hasSystemFeature(CMContextConstants.Features.TELEPHONY)
+ && sService == null) {
+ throw new RuntimeException("Unable to get CMTelephonyManagerService. " +
+ "The service either crashed, was not started, or the interface has been " +
+ "called to early in SystemServer init");
+ }
}
/**