Android DownloadManager例子
封面图
•
2025-09-26
•
Android开发
171
0
0
0
在 Android 中,`DownloadManager` 是一个系统服务,用于管理后台下载任务。它非常适合用于下载大文件(如图片、视频等),因为它可以在应用关闭后继续下载,并且具有良好的错误处理和重试机制。 下面是一个使用 `DownloadManager` 的简单示例: --- ## ✅ 1. 添加权限 在 `AndroidManifest.xml` 中添加以下权限: ```xml <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> ``` > 注意:从 Android 10 开始,`WRITE_EXTERNAL_STORAGE` 权限可能不再需要,但为了兼容性,仍然可以保留。 --- ## ✅ 2. 使用 DownloadManager 下载文件 ### 示例代码: ```java import android.app.DownloadManager; import android.content.Context; import android.net.Uri; import android.os.Bundle; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 要下载的文件 URL String url = "https://example.com/file.zip"; // 创建 DownloadManager 请求 DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url)); // 设置通知栏显示 request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); // 设置允许的网络类型(仅 Wi-Fi 或 移动数据) request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE); // 设置文件保存路径(可选) request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "file.zip"); // 获取 DownloadManager 实例 DownloadManager downloadManager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE); // 执行下载任务 long downloadId = downloadManager.enqueue(request); } } ``` --- ## ✅ 3. 监听下载状态(可选) 如果你想要监听下载进度或完成状态,可以通过 `BroadcastReceiver` 来实现: ### 示例代码: ```java import android.app.DownloadManager; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.widget.Toast; public class DownloadReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { long id = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1); if (id != -1) { Toast.makeText(context, "Download completed: " + id, Toast.LENGTH_SHORT).show(); } } } ``` 然后在 `AndroidManifest.xml` 注册这个广播接收器: ```xml <receiver android:name=".DownloadReceiver" /> ``` 或者在代码中动态注册(推荐): ```java registerReceiver(new DownloadReceiver(), new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE)); ``` --- ## ✅ 4. 查看下载文件 下载完成后,文件会保存到设备的下载目录中(通常是 `/Download/` 文件夹)。你可以通过文件管理器查看。 --- ## 📝 注意事项: - `DownloadManager` 不支持断点续传(除非服务器支持)。 - 如果你希望在下载过程中获取进度信息,建议使用 `OkHttp` 或 `Retrofit` 等库进行更精细的控制。 - 对于 Android 10 及以上版本,建议使用 `MediaStore` 或 `Scoped Storage` 来管理文件存储。 --- 如果你需要一个完整的项目结构或想用 Kotlin 编写,我也可以提供相应版本。需要吗?
上一篇:
Android imageView图片按比例缩放
下一篇:
Android ActionBar-左上角icon设置和事件配置
标题录入,一次不能超过6条
返回顶部
留言
留言
评论