gpt4 book ai didi

android - 从 getExternalCacheDir() 获取的/storage/emulated/0 生成 "no such file or directory"错误

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:25:27 24 4
gpt4 key购买 nike

在 Nexus 4 上运行,当我调用 getExternalCacheDir().getAbsolutePath() 时,我得到一个路径 /storage/emulated/0/Android/Data/com.example.myapp/缓存。问题是,如不同地方所述,/storage/emulated/0 生成“没有这样的文件或目录”错误。

我希望得到的是 /storage/emulated/legacy,因为我使用 System.getenv( “EXTERNAL_STORAGE”)

我将只使用 if 语句来检查和更正路径,以防它指向与我通过 getenv 获得的不同的东西,但我想了解为什么 getExternalCacheDir() 返回无效路径,或者该函数已被弃用。

补充说明:在 Xperia U 上运行 CM11 工作正常;使用 adb 定位 Nexus 4 我得到

ls /storage/emulated/0
/storage/emulated/0: No such file or directory

我有适当的访问权限,因为如果我打电话,例如,echo "hi!">>/storage/emulated/legacy/Android/Data/com.example.myapp/cache 我没有任何线索,同时调用 echo "hi!">>/storage/emulated/0/Android/Data/com.example.myapp/cache 导致错误。后者是我从 getExternalCacheDir 得到的。


我有兴趣将该路径与 shell 命令一起使用,而不仅仅是与 Android API 函数一起使用。

最佳答案

getExternalCacheDir给你一个有效的路径。
如果您的外部存储已正确安装并且您具有适当的访问权限,您可以对其进行读/写。

即:

if (MEDIA_MOUNTED.equals(Environment.getExternalStorageState()) // mounted
&& context.checkCallingOrSelfPermission("android.permission.WRITE_EXTERNAL_STORAGE") == PackageManager.PERMISSION_GRANTED) { // have permissions

File myTempDir = new File(getExternalCacheDir(), "tempDir");
myTempDir.mkdirs();

// create and write to files
}

希望对您有所帮助。

关于android - 从 getExternalCacheDir() 获取的/storage/emulated/0 生成 "no such file or directory"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26597245/

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