3

这个问题与这个问题无关。我已经看到了,但它是特定的 Android 4.4.2 问题,因为代码在其他版本的 Android 上运行良好。

final File path = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/MY_Downloads");

        if (!path.exists()) {
            path.mkdir(); // also tried it with path.mkdirs();
            context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(path)));
        }

我正在使用此代码,它在 Android 4.4.2 上创建一个文件而不是文件夹。请帮助我已经阅读了这篇文章

我已授予以下权限

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
 <uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE" />
 <uses-permission android:name="android.permission.WRITE_USER_DICTIONARY" />
 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

我知道如何访问 SD 卡以及有关公共目录的最新更改,但我想创建一个文件夹而不是文件

4

2 回答 2

1

前几代 Android 设备总是使用 SD 卡进行存储,访问这只是使用 SDK 方法提供的路径的问题

Environment.getExternalStorageDirectory().

很快,更新的设备开始出现,其内部存储分区很大,这些分区映射为外部存储,以便调用环境等方法。

getExternalStoragePublicDirectory(String)

现在指向这个内部存储而不是物理 SD 卡。

一些最新的设备,例如三星 Galaxy Nexus,甚至没有 SD 卡插槽。

参考这个博客

我希望这会有所帮助。

于 2014-03-05T03:58:55.457 回答
0

我在 Android 4.4.2 上遇到了同样的问题(这不是斜线问题)。

例如,如果我想创建这个目录:

myRep/things/logs 

它将创建前 2 个目录,但“日志”将是一个文件,而不是一个目录。

我通过在日志之后添加另一个目录来解决,例如:

myRep/things/logs/tmp

现在 tmp 是一个文件,但 logs 最终是一个目录。

同样重要的是,在某些设备上,您需要在创建文件后执行其他操作,这对我有用:

File directory = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + '/' + pathToDirectory + "/tmp");    
directory.mkdirs();
directory.setExecutable(true);
directory.setReadable(true);
directory.setWritable(true);
MediaScannerConnection.scanFile(context, new String[] {directory .toString()}, null, null);
于 2017-12-16T11:53:33.457 回答