Android中的文件介绍 mdash  mdash DownLoadManager

1. 文件介绍:

Android中的文件系统由多个文件夹组成,每个文件夹存储不同类型的文件。其中一些最常用的文件夹包括data、cache、files、assets、res和raw。这些文件夹的主要目的是为应用程序提供不同类型的存储区域。例如:

- data文件夹存储应用程序的数据和缓存;

- cache文件夹可用于保存应用程序下载的临时文件;

- files文件夹用于保存应用程序创建的文件;

- assets文件夹是应用程序打包在APK中的静态资源,包括音频、视频、图像和HTML页面;

- res文件夹存储应用程序的资源文件,如布局文件、字符串资源和图片资源;

- raw文件夹存储应用程序的原始资源,如视频和音频文件。

2. DownloadManager 介绍:

DownloadManager是Android系统提供的一个下载管理器类,用于管理长时间运行的HTTP下载。DownloadManager负责计划、启动和跟踪下载,并且在下载完成时通知应用程序。使用DownloadManager,应用程序可以进行以下操作:

- 下载大型文件时可以暂停和恢复下载;

- 可以通过文件类型、文件名和MIME类型进行过滤和排序;

- 可以通过发送通知、广播和服务让应用程序在下载完成时做出响应。

3. DownloadManager 使用方法:

使用DownloadManager进行文件下载需要遵循以下步骤:

3.1 构建下载请求

在构建下载请求之前,需要通过DownloadManager.Request指定下载文件的URL、本地存储路径和可选的其他信息,例如描述、MIME类型和请求头。使用setAllowedNetworkTypes()方法可以指定下载网络类型,例如WIFI或移动数据。可以使用setVisibleInDownloadsUi()方法控制下载管理器UI中的可见性。

3.2 启动下载

启动下载需要调用DownloadManager.enqueue()方法,将下载请求传递给下载管理器。DownloadManager会将任务加入下载队列,并在下载完成时向应用程序发送通知。

3.3 跟踪下载进度

可以使用DownloadManager.Query查询下载进度,并且可以使用DownloadManager.STATUS_RUNNING、DownloadManager.STATUS_PAUSED、DownloadManager.STATUS_SUCCESSFUL和DownloadManager.STATUS_FAILED等常量来获取下载状态。如果需要跟踪下载进度,可以通过查询下载进度以及在下载管理器UI中显示通知来实现。

4. DownloadManager 应用案例:

以下是DownloadManager的一个简单示例,展示了如何在Android应用程序中使用DownloadManager进行文件下载:

```java

public class MainActivity extends AppCompatActivity {

private DownloadManager downloadManager;

private long downloadID;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

downloadManager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);

Button downloadButton = findViewById(R.id.download_button);

downloadButton.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

downloadFile("https://www.example.com/file.pdf", "MyFile.pdf");

}

});

}

private void downloadFile(String url, String filename) {

Uri downloadUri = Uri.parse(url);

DownloadManager.Request request = new DownloadManager.Request(downloadUri);

request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE)

.setTitle(filename)

.setDescription("Downloading file")

.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED)

.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, filename);

downloadID = downloadManager.enqueue(request);

}

@Override

protected void onResume() {

super.onResume();

registerReceiver(downloadCompleteReceiver,

new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));

}

@Override

protected void onPause() {

super.onPause();

unregisterReceiver(downloadCompleteReceiver);

}

BroadcastReceiver downloadCompleteReceiver = new BroadcastReceiver() {

@Override

public void onReceive(Context context, Intent intent) {

long id = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1);

if (id == downloadID) {

DownloadManager.Query query = new DownloadManager.Query();

query.setFilterById(downloadID);

Cursor cursor = downloadManager.query(query);

if (cursor.moveToFirst()) {

int downloadedBytes = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR));

int totalBytes = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_TOTAL_SIZE_BYTES));

Log.d("Download Status", "Downloaded bytes: " + downloadedBytes + " Total bytes: " + totalBytes);

}

}

}

};

}

```

在此示例中,下载器将文件下载到公共的下载文件夹中。指定本地存储路径以便于跟踪下载进度,并在下载完成时访问下载进度。另外,还在下载开始和完成时注册和取消广播接收器,以便在下载完成时获取下载进度并作出响应。

总结:

Android中的文件系统由多个文件夹组成,每个文件夹存储不同类型的文件。DownloadManager是Android系统提供的一个下载管理器类,用于管理长时间运行的HTTP下载。使用DownloadManager,应用程序可以进行以下操作:下载大型文件时可以暂停和恢复下载;可以通过文件类型、文件名和MIME类型进行过滤和排序;可以通过发送通知、广播和服务让应用程序在下载完成时做出响应。以上是DownloadManager的使用方法和一个简单的应用案例。

壹涵网络我们是一家专注于网站建设、企业营销、网站关键词排名、AI内容生成、新媒体营销和短视频营销等业务的公司。我们拥有一支优秀的团队,专门致力于为客户提供优质的服务。

我们致力于为客户提供一站式的互联网营销服务,帮助客户在激烈的市场竞争中获得更大的优势和发展机会!

点赞(42) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部