Download media files
The Nexconn SDK provides media file download with support for resumable downloads, pause, and cancel.
Supported media message types
- File messages (
FileMessage) - Image messages (
ImageMessage) - GIF messages (
GIFMessage) - High-quality voice messages (
HDVoiceMessage) - Short video messages (
ShortVideoMessage)
Download a media file
Use message.downloadMedia() to download media files. The SDK automatically reads the remote URL from the message object.
- Kotlin
- Java
kotlin
NCEngine.addMessageHandler("myHandler", object : MessageHandler {
override fun onMessageReceived(event: MessageReceivedEvent) {
when (event.message.content) {
is ImageMessage -> {
event.message.downloadMedia(object : DownloadMediaMessageHandler {
override fun onProgress(message: Message, progress: Int) {
Log.d("Download", "Progress: $progress%")
}
override fun onSuccess(message: Message) {
val localPath = (message.content as? ImageMessage)?.localPath
Log.d("Download", "Download complete, path: $localPath")
}
override fun onError(message: Message, error: NCError) {
Log.e("Download", "Failed: ${error.message}")
}
override fun onCanceled(message: Message) {
Log.d("Download", "Download canceled")
}
})
}
}
}
})
Java
NCEngine.addMessageHandler("myHandler", new MessageHandler() {
@Override
public void onMessageReceived(MessageReceivedEvent event) {
if (event.getMessage().getContent() instanceof ImageMessage) {
event.getMessage().downloadMedia(new DownloadMediaMessageHandler() {
@Override
public void onProgress(@NonNull Message message, int progress) {
Log.d("Download", "Progress: " + progress + "%");
}
@Override
public void onSuccess(@NonNull Message message) {
String localPath = ((ImageMessage) message.getContent()).getLocalPath();
Log.d("Download", "Download complete, path: " + localPath);
}
@Override
public void onError(@NonNull Message message, @NonNull NCError error) {
Log.e("Download", "Failed: " + error.getMessage());
}
@Override
public void onCanceled(@NonNull Message message) {
Log.d("Download", "Download canceled");
}
});
}
}
});
Cancel a download
Use message.cancelDownloadingMedia() to cancel an active download.
- Kotlin
- Java
kotlin
message.cancelDownloadingMedia { error ->
if (error == null) Log.d("Download", "Canceled")
}
Java
message.cancelDownloadingMedia(error -> {
if (error == null) Log.d("Download", "Canceled");
});
Pause a download
Use message.pauseDownloadingMedia() to pause an active download (supports resumable downloads).
- Kotlin
- Java
kotlin
message.pauseDownloadingMedia { error ->
if (error == null) Log.d("Download", "Paused")
}
Java
message.pauseDownloadingMedia(error -> {
if (error == null) Log.d("Download", "Paused");
});
Get download info
Use BaseChannel.getMediaDownloadInfo() to check the download status (only valid during an active download). Pass the media file's remote URL as the identifier.
- Kotlin
- Java
kotlin
val mediaUrl = (message.content as? ImageMessage)?.remoteUrl ?: return
BaseChannel.getMediaDownloadInfo(mediaUrl) { downloadInfo, error ->
if (error == null && downloadInfo != null) {
Log.d("Download", "Download info: $downloadInfo")
}
}
Java
String mediaUrl = ((ImageMessage) message.getContent()).getRemoteUrl();
BaseChannel.getMediaDownloadInfo(mediaUrl, (downloadInfo, error) -> {
if (error == null && downloadInfo != null) {
Log.d("Download", "Download info: " + downloadInfo);
}
});
Parameters
downloadMedia()
| Parameter | Type | Description |
|---|---|---|
handler | DownloadMediaMessageHandler? | The download lifecycle callback. |
DownloadMediaMessageHandler
| Method | Description |
|---|---|
onProgress(message, progress) | Called with download progress (0–100). |
onSuccess(message) | Called when download succeeds. The message.content local path is populated. |
onError(message, error) | Called when download fails. |
onCanceled(message) | Called when the download is canceled. |
Important notes
- Ensure storage permissions are granted before downloading.
- After download completes,
getMediaDownloadInfo()returns null. - Resumable downloads are supported — pause and call
downloadMedia()again to resume. - After canceling, you must restart the download from the beginning.