gpt4 book ai didi

android - getExternalStoragePublicDirectory 传递的路径在 Android 5.0 上不起作用

转载 作者:太空宇宙 更新时间:2023-11-03 10:43:37 24 4
gpt4 key购买 nike

我想在设备的照片目录中存储一张图片。我用

path = Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES);

调用此方法后,在我的 S3 (Android 4.3) 上,路径包含“/storage/emulated/0/Pictures”。当我尝试在此目录中创建一个文件时,它起作用了。我用

File.createTempFile(
imageFileName, ".jpg", path);

为此。我在 Galaxy S5 和模拟器上进行了测试,两者均使用 Android 5.0。在模拟器上,路径包含“/storage/sdcard/Pictures”。当我尝试在其中创建文件时,出现“java.io.IOException:打开失败:ENOENT(没有这样的文件或目录)”。我的模拟器启用了 SD 卡支持。 S5 没有 SD 卡。也许这就是设备出现问题的原因。我在 list 中使用 WRITE_EXTERNAL_STORAGE 权限。我什至尝试使用 file.mkdirs() 来确保路径存在。但这也行不通。

最佳答案

我终于找到了解决办法:在我的 AndroidManifest.xml 中,我使用了:

  <uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="18"/>

因为 doku 中的信息:

For example, beginning with Android 4.4 (API level 19), it's no longer necessary for your app to request the WRITE_EXTERNAL_STORAGE permission when your app wants to write to its own application-specific directories on external storage (the directories provided by getExternalFilesDir()). However, the permission is required for API level 18 and lower.

我误解了这样一个事实,即如果我想写入图片目录,我仍然需要这个权限,即使在 API > 19 中也是如此。所以我删除了这个标签并且它有效。

关于android - getExternalStoragePublicDirectory 传递的路径在 Android 5.0 上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29076465/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com