diff options
| -rw-r--r-- | api/current.txt | 9 | ||||
| -rw-r--r-- | core/java/android/content/pm/PackageManager.java | 7 | ||||
| -rw-r--r-- | telephony/java/android/telephony/MbmsDownloadSession.java | 49 | ||||
| -rw-r--r-- | telephony/java/android/telephony/mbms/ServiceInfo.java | 4 |
4 files changed, 45 insertions, 24 deletions
diff --git a/api/current.txt b/api/current.txt index b54f5bc487ca..c698c23be3f9 100644 --- a/api/current.txt +++ b/api/current.txt @@ -10846,6 +10846,7 @@ package android.content.pm { field public static final java.lang.String FEATURE_TELEPHONY = "android.hardware.telephony"; field public static final java.lang.String FEATURE_TELEPHONY_CDMA = "android.hardware.telephony.cdma"; field public static final java.lang.String FEATURE_TELEPHONY_GSM = "android.hardware.telephony.gsm"; + field public static final java.lang.String FEATURE_TELEPHONY_MBMS = "android.hardware.telephony.mbms"; field public static final deprecated java.lang.String FEATURE_TELEVISION = "android.hardware.type.television"; field public static final java.lang.String FEATURE_TOUCHSCREEN = "android.hardware.touchscreen"; field public static final java.lang.String FEATURE_TOUCHSCREEN_MULTITOUCH = "android.hardware.touchscreen.multitouch"; @@ -40162,19 +40163,19 @@ package android.telephony { } public class MbmsDownloadSession implements java.lang.AutoCloseable { - method public void cancelDownload(android.telephony.mbms.DownloadRequest); + method public int cancelDownload(android.telephony.mbms.DownloadRequest); method public void close(); method public static android.telephony.MbmsDownloadSession create(android.content.Context, android.telephony.mbms.MbmsDownloadSessionCallback, android.os.Handler); method public static android.telephony.MbmsDownloadSession create(android.content.Context, android.telephony.mbms.MbmsDownloadSessionCallback, int, android.os.Handler); - method public void download(android.telephony.mbms.DownloadRequest); + method public int download(android.telephony.mbms.DownloadRequest); method public int getDownloadStatus(android.telephony.mbms.DownloadRequest, android.telephony.mbms.FileInfo); method public java.io.File getTempFileRootDirectory(); method public java.util.List<android.telephony.mbms.DownloadRequest> listPendingDownloads(); - method public void registerStateCallback(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadStateCallback, android.os.Handler); + method public int registerStateCallback(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadStateCallback, android.os.Handler); method public void requestUpdateFileServices(java.util.List<java.lang.String>); method public void resetDownloadKnowledge(android.telephony.mbms.DownloadRequest); method public void setTempFileRootDirectory(java.io.File); - method public void unregisterStateCallback(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadStateCallback); + method public int unregisterStateCallback(android.telephony.mbms.DownloadRequest, android.telephony.mbms.DownloadStateCallback); field public static final java.lang.String DEFAULT_TOP_LEVEL_TEMP_DIRECTORY = "androidMbmsTempFileRoot"; field public static final java.lang.String EXTRA_MBMS_COMPLETED_FILE_URI = "android.telephony.extra.MBMS_COMPLETED_FILE_URI"; field public static final java.lang.String EXTRA_MBMS_DOWNLOAD_REQUEST = "android.telephony.extra.MBMS_DOWNLOAD_REQUEST"; diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java index ef8f84bd1690..89751dadd29d 100644 --- a/core/java/android/content/pm/PackageManager.java +++ b/core/java/android/content/pm/PackageManager.java @@ -2085,6 +2085,13 @@ public abstract class PackageManager { public static final String FEATURE_TELEPHONY_EUICC = "android.hardware.telephony.euicc"; /** + * Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device + * supports cell-broadcast reception using the MBMS APIs. + */ + @SdkConstant(SdkConstantType.FEATURE) + public static final String FEATURE_TELEPHONY_MBMS = "android.hardware.telephony.mbms"; + + /** * Feature for {@link #getSystemAvailableFeatures} and * {@link #hasSystemFeature}: The device supports connecting to USB devices * as the USB host. diff --git a/telephony/java/android/telephony/MbmsDownloadSession.java b/telephony/java/android/telephony/MbmsDownloadSession.java index a554c693ccdd..059a2d070ec3 100644 --- a/telephony/java/android/telephony/MbmsDownloadSession.java +++ b/telephony/java/android/telephony/MbmsDownloadSession.java @@ -502,8 +502,10 @@ public class MbmsDownloadSession implements AutoCloseable { * Asynchronous errors through the callback may include any error not specific to the * streaming use-case. * @param request The request that specifies what should be downloaded. + * @return {@link MbmsErrors#SUCCESS} if the operation did not encounter a synchronous error, + * and some other error code otherwise. */ - public void download(@NonNull DownloadRequest request) { + public int download(@NonNull DownloadRequest request) { IMbmsDownloadService downloadService = mService.get(); if (downloadService == null) { throw new IllegalStateException("Middleware not yet bound"); @@ -519,13 +521,16 @@ public class MbmsDownloadSession implements AutoCloseable { setTempFileRootDirectory(tempRootDirectory); } - writeDownloadRequestToken(request); try { - downloadService.download(request); + int result = downloadService.download(request); + if (result == MbmsErrors.SUCCESS) { + writeDownloadRequestToken(request); + } + return result; } catch (RemoteException e) { mService.set(null); sIsInitialized.set(false); - sendErrorToApp(MbmsErrors.ERROR_MIDDLEWARE_LOST, null); + return MbmsErrors.ERROR_MIDDLEWARE_LOST; } } @@ -565,8 +570,10 @@ public class MbmsDownloadSession implements AutoCloseable { * @param callback The callback that should be called when the middleware has information to * share on the download. * @param handler The {@link Handler} on which calls to {@code callback} should be enqueued on. + * @return {@link MbmsErrors#SUCCESS} if the operation did not encounter a synchronous error, + * and some other error code otherwise. */ - public void registerStateCallback(@NonNull DownloadRequest request, + public int registerStateCallback(@NonNull DownloadRequest request, @NonNull DownloadStateCallback callback, @NonNull Handler handler) { IMbmsDownloadService downloadService = mService.get(); if (downloadService == null) { @@ -583,16 +590,15 @@ public class MbmsDownloadSession implements AutoCloseable { if (result == MbmsErrors.DownloadErrors.ERROR_UNKNOWN_DOWNLOAD_REQUEST) { throw new IllegalArgumentException("Unknown download request."); } - sendErrorToApp(result, null); - return; + return result; } } catch (RemoteException e) { mService.set(null); sIsInitialized.set(false); - sendErrorToApp(MbmsErrors.ERROR_MIDDLEWARE_LOST, null); - return; + return MbmsErrors.ERROR_MIDDLEWARE_LOST; } mInternalDownloadCallbacks.put(callback, internalCallback); + return MbmsErrors.SUCCESS; } /** @@ -606,8 +612,10 @@ public class MbmsDownloadSession implements AutoCloseable { * * @param request The {@link DownloadRequest} provided during registration * @param callback The callback provided during registration. + * @return {@link MbmsErrors#SUCCESS} if the operation did not encounter a synchronous error, + * and some other error code otherwise. */ - public void unregisterStateCallback(@NonNull DownloadRequest request, + public int unregisterStateCallback(@NonNull DownloadRequest request, @NonNull DownloadStateCallback callback) { try { IMbmsDownloadService downloadService = mService.get(); @@ -617,6 +625,9 @@ public class MbmsDownloadSession implements AutoCloseable { InternalDownloadStateCallback internalCallback = mInternalDownloadCallbacks.get(callback); + if (internalCallback == null) { + throw new IllegalArgumentException("Provided callback was never registered"); + } try { int result = downloadService.unregisterStateCallback(request, internalCallback); @@ -624,12 +635,12 @@ public class MbmsDownloadSession implements AutoCloseable { if (result == MbmsErrors.DownloadErrors.ERROR_UNKNOWN_DOWNLOAD_REQUEST) { throw new IllegalArgumentException("Unknown download request."); } - sendErrorToApp(result, null); + return result; } } catch (RemoteException e) { mService.set(null); sIsInitialized.set(false); - sendErrorToApp(MbmsErrors.ERROR_MIDDLEWARE_LOST, null); + return MbmsErrors.ERROR_MIDDLEWARE_LOST; } } finally { InternalDownloadStateCallback internalCallback = @@ -638,6 +649,7 @@ public class MbmsDownloadSession implements AutoCloseable { internalCallback.stop(); } } + return MbmsErrors.SUCCESS; } /** @@ -647,8 +659,10 @@ public class MbmsDownloadSession implements AutoCloseable { * this method will throw an {@link IllegalArgumentException}. * * @param downloadRequest The download request that you wish to cancel. + * @return {@link MbmsErrors#SUCCESS} if the operation did not encounter a synchronous error, + * and some other error code otherwise. */ - public void cancelDownload(@NonNull DownloadRequest downloadRequest) { + public int cancelDownload(@NonNull DownloadRequest downloadRequest) { IMbmsDownloadService downloadService = mService.get(); if (downloadService == null) { throw new IllegalStateException("Middleware not yet bound"); @@ -660,16 +674,15 @@ public class MbmsDownloadSession implements AutoCloseable { if (result == MbmsErrors.DownloadErrors.ERROR_UNKNOWN_DOWNLOAD_REQUEST) { throw new IllegalArgumentException("Unknown download request."); } - sendErrorToApp(result, null); - return; + } else { + deleteDownloadRequestToken(downloadRequest); } + return result; } catch (RemoteException e) { mService.set(null); sIsInitialized.set(false); - sendErrorToApp(MbmsErrors.ERROR_MIDDLEWARE_LOST, null); - return; + return MbmsErrors.ERROR_MIDDLEWARE_LOST; } - deleteDownloadRequestToken(downloadRequest); } /** diff --git a/telephony/java/android/telephony/mbms/ServiceInfo.java b/telephony/java/android/telephony/mbms/ServiceInfo.java index 8529f525e06f..f78e7a6e54c4 100644 --- a/telephony/java/android/telephony/mbms/ServiceInfo.java +++ b/telephony/java/android/telephony/mbms/ServiceInfo.java @@ -51,8 +51,8 @@ public class ServiceInfo { /** @hide */ public ServiceInfo(Map<Locale, String> newNames, String newClassName, List<Locale> newLocales, String newServiceId, Date start, Date end) { - if (newNames == null || newNames.isEmpty() || TextUtils.isEmpty(newClassName) - || newLocales == null || newLocales.isEmpty() || TextUtils.isEmpty(newServiceId) + if (newNames == null || newClassName == null + || newLocales == null || newServiceId == null || start == null || end == null) { throw new IllegalArgumentException("Bad ServiceInfo construction"); } |