6

Javadoc for Environment.getExternalStoragePublicDirectory()中的示例提到Context.getExternalMediaDir()但此方法在我的 Android API 版本中不可用,我无法在任何版本的任何地方找到它的文档。这是一个错字还是从未发布的东西?

void createExternalStoragePublicPicture() {
    // Create a path where we will place our picture in the user's
    // public pictures directory.  Note that you should be careful about
    // what you place here, since the user often manages these files.  For
    // pictures and other media owned by the application, consider
    // Context.getExternalMediaDir().
    File path = Environment.getExternalStoragePublicDirectory(
            Environment.DIRECTORY_PICTURES);
4

2 回答 2

5

不,这不再是错字了,这是 Android L Preview 上的一种新方法

基本上,谷歌的天才们在 /Android/data/ 文件夹中放置了一个“.nomedia”文件,这使得在您的文件夹中使用 MediaScannerConnection scanFile() 方法的任何尝试都失败了。因此,如果您有一个创建或下载媒体的应用程序,您现在可能正在做一些杂技来扫描该媒体并将其提供给您的提供商,除非您有新的 API,我们没有,因为其他所有手机都在运行更老的安卓...

目前我们的解决方法是自己扫描文件并将它们插入匹配的内容提供程序中。

例如,对于图像,已经有一种方法可以使用 MediaStore.Images.Media.insertImage (ContentResolver cr, String imagePath, String name, String description)

我们今天在一次讨论中发布了这个解决方案,几分钟后,一位来自 Google 的工程师告诉我们 Context.getExternalMediaDir() 据称它将为您提供对 MediaScanning 友好的辅助外部存储(又名 Sd 卡)上的私有路径。

“新的 android.content.Context.getExternalMediaDirs() 返回所有共享存储设备上这些目录的路径。”

我的猜测(我没有测试过)是目录路径将类似于

/存储/extSdCard/Android/媒体/

开始管理 SD 卡使用开发决策的人真是个白痴,过去几周我们在 Google-Android 上看到的大量错误判断、糟糕的决策和他妈的让我想起了微软.

于 2014-07-10T18:47:51.230 回答
4

我相信它只是名称不正确;我想他们的意思是说“ Context.getExternalFilesDir()”。这可能是一个错字,或者该方法可能稍后被重命名。

根据评论中的解释(“应用程序拥有的图片和其他媒体”),它与getExternalFilesDir(String type)应用程序可以放置其拥有的持久文件的位置”的解释非常吻合。请注意,您可以传递nullto getExternalFilesDir,它返回根目录,或指定返回您要查找的文件夹类型。

我会说,我在这里有点推测。然而,这似乎是对这种看似不存在的方法最有可能的解释。

于 2012-08-10T20:01:50.293 回答