添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

在API29的时候就会提示API失效如下图:Environment.getExternalStoragePublicDirectory

代替方法也很简单,我们点进去看源码就会看到注释信息给我们的提示的替代方案:

然后我分别打印了下这些对应代码的目录如下图:

总体目录代表的是根目录/Android/data/包名/file

上面目录对应的代码如下:

File externalFilesDir1 = getExternalFilesDir(Environment.DIRECTORY_ALARMS);
        File externalFilesDir2 = getExternalFilesDir(Environment.DIRECTORY_AUDIOBOOKS);
        File externalFilesDir3 = getExternalFilesDir(Environment.DIRECTORY_DCIM);
        File externalFilesDir4 = getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS);
        File externalFilesDir5 = getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS);
        File externalFilesDir6 = getExternalFilesDir(Environment.DIRECTORY_MOVIES);
        File externalFilesDir7 = getExternalFilesDir(Environment.DIRECTORY_MUSIC);
        File externalFilesDir8 = getExternalFilesDir(Environment.DIRECTORY_NOTIFICATIONS);
        File externalFilesDir9 = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
        File externalFilesDir10 = getExternalFilesDir(Environment.DIRECTORY_PODCASTS);
        File externalFilesDir11 = getExternalFilesDir(Environment.DIRECTORY_RINGTONES);
        File externalFilesDir12 = getExternalFilesDir(Environment.DIRECTORY_SCREENSHOTS);
        File externalFilesDir13 = getExternalFilesDir(Environment.DIRECTORY_RINGTONES);
        File externalFilesDir14 = getExternalFilesDir(Environment.MEDIA_BAD_REMOVAL);
        File externalFilesDir15 = getExternalFilesDir(Environment.MEDIA_CHECKING);
        File externalFilesDir16 = getExternalFilesDir(Environment.MEDIA_EJECTING);
        File externalFilesDir17 = getExternalFilesDir(Environment.MEDIA_MOUNTED);
        File externalFilesDir18 = getExternalFilesDir(Environment.MEDIA_MOUNTED_READ_ONLY);
        File externalFilesDir19 = getExternalFilesDir(Environment.MEDIA_NOFS);
        File externalFilesDir20 = getExternalFilesDir(Environment.MEDIA_REMOVED);
        File externalFilesDir21 = getExternalFilesDir(Environment.MEDIA_SHARED);
        File externalFilesDir22 = getExternalFilesDir(Environment.MEDIA_UNKNOWN);
        File externalFilesDir23 = getExternalFilesDir(Environment.MEDIA_UNMOUNTABLE);
        File externalFilesDir24 = getExternalFilesDir(Environment.MEDIA_UNMOUNTED);
        Log.e("打印路径", externalFilesDir1.getAbsolutePath()
                + "\n" + externalFilesDir1.getAbsolutePath()
                + "\n" + externalFilesDir1.getAbsolutePath()
                + "\n" + externalFilesDir2.getAbsolutePath()
                + "\n" + externalFilesDir3.getAbsolutePath()
                + "\n" + externalFilesDir4.getAbsolutePath()
                + "\n" + externalFilesDir5.getAbsolutePath()
                + "\n" + externalFilesDir6.getAbsolutePath()
                + "\n" + externalFilesDir7.getAbsolutePath()
                + "\n" + externalFilesDir8.getAbsolutePath()
                + "\n" + externalFilesDir9.getAbsolutePath()
                + "\n" + externalFilesDir10.getAbsolutePath()
                + "\n" + externalFilesDir11.getAbsolutePath()
                + "\n" + externalFilesDir12.getAbsolutePath()
                + "\n" + externalFilesDir13.getAbsolutePath()
                + "\n" + externalFilesDir14.getAbsolutePath()
                + "\n" + externalFilesDir15.getAbsolutePath()
                + "\n" + externalFilesDir16.getAbsolutePath()
                + "\n" + externalFilesDir17.getAbsolutePath()
                + "\n" + externalFilesDir18.getAbsolutePath()
                + "\n" + externalFilesDir19.getAbsolutePath()
                + "\n" + externalFilesDir20.getAbsolutePath()
                + "\n" + externalFilesDir21.getAbsolutePath()
                + "\n" + externalFilesDir22.getAbsolutePath()
                + "\n" + externalFilesDir23.getAbsolutePath()
                + "\n" + externalFilesDir24.getAbsolutePath());
在API29的时候就会提示API失效如下图:Environment.getExternalStoragePublicDirectory代替方法也很简单,我们点进去看源码就会看到注释信息给我们的提示的替代方案:然后我分别打印了下这些对应代码的目录如下图:总体目录代表的是根目录/Android/data/包名/file上面目录对应的代码如下:File externalFilesDir1 = getExternalFilesDir(Environment.DIRECTORY_AL
Android 解决get External Storage Directory 29 废弃 问题 ,亲测能用 初衷:在安卓10之后相信大家都遇到了get External Storage Directory 废弃 问题 ,看了网上很多都根据官方用到了get External FilesDir但是保存图片至相册后的通知又成了一个 问题 ,所以我们还是不要走歪路,直接替代get External Storage Directory 废话不多说,直接上代码: // SDCard地址 / storage /emulated/0 File root = new File( Environment .get External Storage Directory () .getAbsolutePath()+File.separator+"lzy"); if (!root.exists()){
Android X版本SDK时,使用到以下相关方法: Environment .get External Storage Directory (), Environment .get External Storage Public Directory ()时,AS会提示该方法已 废弃 ,但是提供了Context的get External FilesDir(String)方法(其中一方面是为了安全性 考虑,感兴趣的可以查看一下文档),其他的还有MediaStore已经Intent的ACTION_OPEN_DOCUMENT方法 getEx
Environment .get External Storage Directory ()与 Environment .get External Storage Public Directory (String type)
Environment .get External Storage Directory ()是获得外部存储的第一层的对象,可以通过这个对象获得这一层的各个文件的名称,路径,以及建立其中一个文件的抽象对象。 代码如下: File files = Environment .get External Storage Directory ();//获得外部存储器的第一层的文件对象 File fil
最近在 开发 时,需要下载一个文件,但是 Android 上的get external storage public directory 显示已过期(deprecated)。于是谷歌了一下,搜到了这篇文章从共享存储空间访问文档和其他文件。 原来,现在的 Android 系统,将文件系统划分为下面几项: 应用专属存储空间 具体可以查看数据和文件存储概览,文章里有非常详细的介绍。这里主要看应用共享存储空间与共享存储。其中应用专属存储空间无需申请权限,在应用卸载的时候会移除文件。如果文件存储在外部存储空
内部存储是指系统内部存储空间,**在逻辑上用 目录 来区分的话就是data 目录 下的文件夹** 除此之外data 目录 下有app 目录 存放系统下载的apk信息,有data 目录 存放各种文件 sharedPreferenced存储的文件在 /data/data/<packagename>/shared_prefs/ 目录 下。 Sqlite存储的文件在 /data/data/<packagename>/database/ 目录 下。
Android 1.0开始,写操作受权限WRITE_ EXTERNAL _ STORAGE 保护。 从 Android 4.1开始,读操作受权限READ_ EXTERNAL _ STORAGE 保护。 从 Android 4.4开始,应用可以管理在它外部存储上的特定包名 目录 ,而不用 获取 WRITE_ EXTERNAL _ STORAGE 权限。 比如,一个包名为com.example.foo的应用,可以自...
本文参考地址:http://www.cnblogs.com/mengdd/p/3742623.html 上周老板的手机进行了一次插拔sd卡,app发图片到车友圈就罢工了,我调试了一下代码,我发现是路径的 问题 。 原来app路径是这样写的: Environment .get External Storage Directory ()+"/coolcar/CoolcarImg" 我觉得没有 问题 啊,于是我改了一
我在C-Sharp中尝试 获取 安卓手机Download 目录 时,尽管已经授予了权限,但是依旧报错:permission denied。这是我的代码: private async void GetButton_Clicked(object sender, EventArgs e) { PermissionStatus status = await Permissions.RequestAsync<Permissions. Storage Write>(); if (status != PermissionStatus.Granted) { Result.Text = "Permissiont DENIED!"; return; } List<string> filePaths = new(); #if WINDOWS filePaths = await GetFileNames(); #elif ANDROID string downloadPath = Android .OS. Environment .Get External Storage Public Directory ( Android .OS. Environment . Directory Downloads).AbsolutePath; filePaths = await GetFileNames(downloadPath); #endif Result.Text = string.Join(", ", filePaths); } static readonly string[] ends = { ".wav", ".wma", ".mp3", ".flac", ".aac", ".m4a" }; public static async Task<string> FilePicker() { PickOptions pickOptions = new() { PickerTitle = "选一个文件" }; FileResult result = await Microsoft.Maui. Storage .FilePicker.Default.PickAsync(pickOptions); return result.FullPath; } public static async Task<List<string>> GetFileNames(string rootPath = null) { if (rootPath == null) { rootPath = await FilePicker(); rootPath = Directory .GetParent(rootPath).FullName; if (string.IsNullOrEmpty(rootPath)) return null; } List<string> filePaths = GetFiles(rootPath); return filePaths; } private static List<string> GetFiles(string path) { List<string> filePaths = new(); try { foreach (string file in Directory .GetFiles(path)) { bool flag = false; foreach (string end in ends) { if (file.EndsWith(end)) { flag = true; } } if (!flag) { continue; } filePaths.Add(file); } string[] directories = Directory .GetDirectories(path); if (directories.Length >= 0) { foreach (string directory in directories) { filePaths.AddRange(GetFiles( directory )); } } } catch (Exception ex) { List<string> errors = new() { ex.Message }; return errors; } return filePaths; }
在 C# 中 获取 Android 手机的 Download 目录 并不是很容易,因为它需要通过 Xamarin 或其他方法来访问 Android 系统 API 。 为了解决权限 问题 ,你需要在 Android Manifest.xml 文件中声明你应用需要访问存储的权限: <uses-permission android :name=" android .permission.WRITE_ EXTERNAL _ STORAGE " /> 如果你在代码中已经请求了这个权限,你应该检查下你的请求代码是否正确,并且要确保在调用前已经获得了权限。 关于 获取 Android 手机的 Download 目录 ,你可以使用以下代码: string downloadPath = Android .OS. Environment .Get External Storage Public Directory ( Android .OS. Environment . Directory Downloads).AbsolutePath; 但是,你需要注意,在 Android 10 中,Google 已经更改了存储访问权限模型。现在,应用只能访问其自己的存储区域,不能直接访问其他应用的存储区域。 如果你想要访问其他应用的存储区域,你需要使用 Android 系统的文件选择器来请求用户授权。你可以使用 Xamarin.Essentials 库中的 FilePicker 类来实现这个功能。 FilePicker.PickAsync(new string[] { "image/*" }, new Platform.OnPickFileResultEventArgs File = async (file) => // Use file xiayiye5: 电鳗版本下载地址:https://r2---sn-ni5een7l.gvt1.com/edgedl/android/studio/install/2022.1.1.21/android-studio-2022.1.1.21-windows.exe?cms_redirect=yes&mh=D5&mip=111.61.116.196&mm=28&mn=sn-ni5een7l&ms=nvh&mt=1679537540&mv=m&mvi=2&pl=22&rmhost=r1---sn-ni5een7l.gvt1.com&shardbypass=sd&smhost=r3---sn-ni5een7z.gvt1.com