Android获取应用程序的"主页"数据目录

Pau*_*ega 50 android home-directory android-context

一个简单的问题,与应用程序写入内部存储器时的默认"主页"目录有关.默认情况下,创建的所有文件都由OS(2.2)放置在:

/data/data/your.package/files
Run Code Online (Sandbox Code Playgroud)

在读取文件时,使用相同的默认值,通过openFileInput(),保持适当的上下文openFileOutput().但是如果我需要检查文件存在,例如,使用File类,我需要在构造函数中指定整个路径.

我看到有Environment.getDataDirectory()(返回/data),Environment.getRootDirectory()(返回/system)等,但没有任何东西与获取应用程序的'home'目录有关.

这不是一个大问题,但我宁愿不硬编码我的App for File使用的完整路径(比如包名称更改,比如未来操作系统版本中的路径更改),如果有某种方法可以引用应用程序的"主页"目录以编程方式.

Pau*_*ega 94

当然,永远不会失败.在发布上述问题后约一分钟找到解决方案...解决方案可能有同样的问题:

ContextWrapper.getFilesDir()
Run Code Online (Sandbox Code Playgroud)

这里找到.

  • 这会返回`/ data/data/<homeAppDir>/files`,但如何获取这个"文件"的路径? (10认同)
  • @Prizoff使用Context.getApplicationInfo().dataDir,根据[Kevin的答案如下](http://stackoverflow.com/a/12792520/80425) (7认同)
  • 正确的方法是:context.getApplicationContext().getFilesDir() (4认同)
  • 引用:"当然,永远不会失败"并非完全如此.他们修复了Android 4.4中的一些竞争条件...(请参阅https://code.google.com/p/android/issues/detail?id=8886) (2认同)

Lea*_* ES 35

Context.getApplicationInfo().dataDir 如果需要包的持久数据文件夹,可以尝试.

getFilesDir() 返回此子根.

  • 这是在我的Google Nexus 6上返回“ / data / user / 0 / &lt;homeAppDir&gt;”的错误文件夹。 (3认同)

Ali*_*ran 14

获取应用程序包中的文件路径;

ContextWrapper c = new ContextWrapper(this);
Toast.makeText(this, c.getFilesDir().getPath(), Toast.LENGTH_LONG).show();
Run Code Online (Sandbox Code Playgroud)