首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么文件访问方法getExternalStorageDirectory()在Android10上不起作用(API29)

在Android 10(API 29)及更高版本中,文件访问方法getExternalStorageDirectory()不再起作用,这是因为Android 10引入了一种新的存储访问模型,称为Scoped Storage(作用域存储)。Scoped Storage的目的是增强应用程序的隐私和安全性,并提供更好的文件管理。

在Scoped Storage模型下,每个应用程序都有自己的私有存储空间,无法直接访问其他应用程序的文件。这意味着getExternalStorageDirectory()方法返回的路径不再是外部存储的根目录,而是应用程序的私有目录。

这种变化对开发者来说有一些影响。以下是一些解决方案和替代方法:

  1. 使用Context#getExternalFilesDir()方法:该方法返回应用程序的私有目录,可以用于存储应用程序专用的文件。例如,可以使用以下代码获取应用程序的私有目录路径:
代码语言:txt
复制
File privateDir = context.getExternalFilesDir(null);
  1. 使用MediaStore API:Scoped Storage模型鼓励开发者使用MediaStore API来管理媒体文件(如照片、视频、音频)。通过MediaStore API,可以访问公共媒体文件集合,并将应用程序的媒体文件添加到媒体库中。这样可以确保文件的访问权限和安全性。
  2. 请求特殊权限:如果应用程序需要访问其他应用程序的文件或外部存储的根目录,可以请求特殊权限。例如,可以请求READ_EXTERNAL_STORAGE或WRITE_EXTERNAL_STORAGE权限。但是,需要注意的是,这些权限在Android 10及更高版本中已经变得更加严格,用户可能需要手动授予这些权限。

总之,Android 10引入的Scoped Storage模型对文件访问方式产生了变化,开发者需要适应新的存储访问模型,并使用替代方法来处理文件访问操作。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的沙龙

领券