|
14 | 14 |
|
15 | 15 | package com.google.firebase.ml.modeldownloader.internal;
|
16 | 16 |
|
| 17 | +import android.annotation.SuppressLint; |
17 | 18 | import android.app.DownloadManager;
|
18 | 19 | import android.app.DownloadManager.Query;
|
19 | 20 | import android.app.DownloadManager.Request;
|
|
23 | 24 | import android.content.IntentFilter;
|
24 | 25 | import android.database.Cursor;
|
25 | 26 | import android.net.Uri;
|
| 27 | +import android.os.Build; |
26 | 28 | import android.os.Build.VERSION;
|
27 | 29 | import android.os.Build.VERSION_CODES;
|
28 | 30 | import android.os.ParcelFileDescriptor;
|
@@ -207,12 +209,20 @@ private synchronized void removeDownloadTaskInstance(long downloadId) {
|
207 | 209 | this.receiverMaps.remove(downloadId);
|
208 | 210 | }
|
209 | 211 |
|
| 212 | + @SuppressLint("WrongConstant") |
210 | 213 | private Task<Void> registerReceiverForDownloadId(long downloadId, String modelName) {
|
211 | 214 | BroadcastReceiver broadcastReceiver = getReceiverInstance(downloadId, modelName);
|
212 | 215 | // It is okay to always register here. Since the broadcast receiver is the same via the lookup
|
213 | 216 | // for the same download id, the same broadcast receiver will be notified only once.
|
214 |
| - context.registerReceiver( |
215 |
| - broadcastReceiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE)); |
| 217 | + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { |
| 218 | + context.registerReceiver( |
| 219 | + broadcastReceiver, |
| 220 | + new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE), |
| 221 | + Context.RECEIVER_EXPORTED); |
| 222 | + } else { |
| 223 | + context.registerReceiver( |
| 224 | + broadcastReceiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE)); |
| 225 | + } |
216 | 226 |
|
217 | 227 | return getTaskCompletionSourceInstance(downloadId).getTask();
|
218 | 228 | }
|
|
0 commit comments