Add software features for SIP and VOIP
and block SipService creation and SIP API if the feature is not available.
Change-Id: Icf780af1ac20dda4d8180cea3e5b20e21a8350bc
diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java
index 1a209e2..4a286e7 100644
--- a/services/java/com/android/server/SystemServer.java
+++ b/services/java/com/android/server/SystemServer.java
@@ -418,10 +418,13 @@
}
try {
- Slog.i(TAG, "Sip Service");
- ServiceManager.addService("sip", new SipService(context));
+ SipService sipService = SipService.create(context);
+ if (sipService != null) {
+ Slog.i(TAG, "Sip Service");
+ ServiceManager.addService("sip", sipService);
+ }
} catch (Throwable e) {
- Slog.e(TAG, "Failure starting DiskStats Service", e);
+ Slog.e(TAG, "Failure starting SIP Service", e);
}
}
diff --git a/services/java/com/android/server/sip/SipService.java b/services/java/com/android/server/sip/SipService.java
index 3dcaff6..626b488 100644
--- a/services/java/com/android/server/sip/SipService.java
+++ b/services/java/com/android/server/sip/SipService.java
@@ -53,8 +53,6 @@
import java.util.TreeSet;
import javax.sip.SipException;
-/**
- */
public final class SipService extends ISipService.Stub {
private static final String TAG = "SipService";
private static final int EXPIRY_TIME = 3600;
@@ -78,7 +76,16 @@
private ConnectivityReceiver mConnectivityReceiver;
- public SipService(Context context) {
+ /**
+ * Creates a {@code SipService} instance. Returns null if SIP API is not
+ * supported.
+ */
+ public static SipService create(Context context) {
+ return (SipManager.isApiSupported(context) ? new SipService(context)
+ : null);
+ }
+
+ private SipService(Context context) {
Log.v(TAG, " service started!");
mContext = context;
mConnectivityReceiver = new ConnectivityReceiver();