android11 外部存储路径download 您所在的位置:网站首页 android11下载vivo android11 外部存储路径download

android11 外部存储路径download

2024-07-17 18:54| 来源: 网络整理| 查看: 265

Android 11 外部存储路径下载 引言

在Android开发中,访问和下载外部存储路径的文件是一项常见的任务。然而,在Android 11中,由于安全性和隐私的考虑,访问外部存储路径的方式发生了一些变化。本文将介绍如何在Android 11中使用新的API来下载外部存储路径的文件,并提供代码示例。

Android 11 外部存储路径的变化

在Android 11之前,我们可以直接访问和下载外部存储路径的文件,例如Download目录。但是,从Android 11开始,应用程序默认无法直接访问其他应用程序的私有目录和外部存储路径。

为了保护用户的隐私和数据安全,Android 11引入了Scoped Storage的概念。Scoped Storage将应用程序的文件隔离到私有目录和公共目录,并限制了对其他应用程序的访问。这意味着,我们不能再直接访问和下载外部存储路径的文件。

使用新的API下载外部存储路径的文件

为了在Android 11中下载外部存储路径的文件,我们需要使用新的API来请求访问权限,并使用新的文件访问方法。

1. 请求访问权限

首先,我们需要请求访问外部存储路径的权限。在AndroidManifest.xml文件中添加以下权限:

然后,在代码中使用以下代码请求访问权限:

if (Environment.isExternalStorageManager()) { // 已经获取了访问权限 } else { Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION); Uri uri = Uri.fromParts("package", getPackageName(), null); intent.setData(uri); startActivity(intent); }

这段代码首先检查应用程序是否已经获取了访问权限。如果已经获取,则可以进行文件下载操作。如果没有权限,则会跳转到系统设置界面,提示用户手动授予访问权限。

2. 下载文件

一旦我们获得了访问权限,就可以使用新的文件访问方法来下载外部存储路径的文件。在Android 11中,我们可以使用以下代码来下载文件:

String url = " String fileName = "file.pdf"; DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url)); request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE) .setTitle("Downloading") // 设置下载通知的标题 .setDescription("Downloading file") // 设置下载通知的描述 .setAllowedOverMetered(true) // 允许在计量网络连接情况下下载 .setAllowedOverRoaming(true) // 允许在漫游网络连接情况下下载 .setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, fileName); // 设置文件保存路径 DownloadManager downloadManager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE); long downloadId = downloadManager.enqueue(request);

这段代码使用DownloadManager来进行文件下载。我们需要提供文件的URL和文件名。代码中的setDestinationInExternalPublicDir方法指定了文件保存的路径,这里使用了外部公共目录的Download目录。

下载完成后,我们可以通过注册一个广播接收器来监听下载完成的事件:

BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { long id = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1); if (id == downloadId) { // 下载完成 } } }; registerReceiver(receiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));

这样,我们就可以在下载完成后进行相应的操作,例如显示一个通知或打开文件。

总结

在Android 11中,访问和下载外部存储路径的文件需要使用新的API,并请求访问权限。本文介绍了在Android 11中下载外部存储路径文件的步骤,并提供了相应的代码示例。通过了解和使用新的API,我们可以在Android 11中顺利地进行外部存储路径的文件下载操作。

参考资料 [Android Developers - Scoped Storage](


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有