Merge "Add feature flag and EMBMS bug fixes"
This commit is contained in:
@@ -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";
|
||||
|
||||
@@ -2084,6 +2084,13 @@ public abstract class PackageManager {
|
||||
@SdkConstant(SdkConstantType.FEATURE)
|
||||
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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user