Un-hide the MBMS streaming APIs

Unhides the MBMS streaming APIs and modifies the vendor base classes to
no longer pass raw AIDLs to the vendor code.

Test: builds
Change-Id: I56030d646c2a1160277d85779c6ed431cda4efa7
diff --git a/telephony/java/android/telephony/MbmsStreamingManager.java b/telephony/java/android/telephony/MbmsStreamingManager.java
index 911f83f..d69562c 100644
--- a/telephony/java/android/telephony/MbmsStreamingManager.java
+++ b/telephony/java/android/telephony/MbmsStreamingManager.java
@@ -16,6 +16,8 @@
 
 package android.telephony;
 
+import android.annotation.SdkConstant;
+import android.annotation.SystemApi;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.ServiceConnection;
@@ -37,10 +39,17 @@
 
 /**
  * This class provides functionality for streaming media over MBMS.
- * @hide
  */
 public class MbmsStreamingManager {
     private static final String LOG_TAG = "MbmsStreamingManager";
+
+    /**
+     * Service action which must be handled by the middleware implementing the MBMS streaming
+     * interface.
+     * @hide
+     */
+    @SystemApi
+    @SdkConstant(SdkConstant.SdkConstantType.SERVICE_ACTION)
     public static final String MBMS_STREAMING_SERVICE_ACTION =
             "android.telephony.action.EmbmsStreaming";
 
@@ -203,13 +212,23 @@
                             return;
                         } catch (RuntimeException e) {
                             Log.e(LOG_TAG, "Runtime exception during initialization");
-                            mCallbackToApp.error(
-                                    MbmsException.InitializationErrors.ERROR_UNABLE_TO_INITIALIZE,
-                                    e.toString());
+                            try {
+                                mCallbackToApp.error(
+                                        MbmsException.InitializationErrors
+                                                .ERROR_UNABLE_TO_INITIALIZE,
+                                        e.toString());
+                            } catch (RemoteException e1) {
+                                // ignore
+                            }
                             return;
                         }
                         if (result != MbmsException.SUCCESS) {
-                            mCallbackToApp.error(result, "Error returned during initialization");
+                            try {
+                                mCallbackToApp.error(
+                                        result, "Error returned during initialization");
+                            } catch (RemoteException e) {
+                                // ignore
+                            }
                             return;
                         }
                         mService.set(streamingService);