在我的安卓应用中,我正在尝试在SD卡上创建以下文件夹:
这里是代码:
我在android清单文件的manifest标签下拥有WRITE_STORAGE_PERMISSION。我可以在SD卡上创建其他文件夹和文件而没有问题。 该应用程序在以下手机上运行良好: 1. Nexus S(已root)运行Gingerbread(2.3) 2. Nexus S(未root)运行Jelly Bean(4.1.2) 3. HTC Desire(已root)运行Froyo(2.2) 4. HTC Desire(未root)运行Froyo(2.2)
然而,在运行Ice Cream Sandwich(4.0.4)的三星Galaxy Nexus手机上,目录被创建为零大小的文件,在Astro中可以看到。exists()调用返回false。
如您从文件夹名称中所见,我正在使用Apache Felix。 Felix如果不存在则会自动创建缓存目录。在Galaxy Nexus上,它总是抱怨无法创建缓存目录。 Astro显示一个0字节的文件而不是文件夹。这就是为什么我决定尝试在初始化Felix之前自己创建缓存文件夹的原因。
所以,我自己创建了缓存文件夹。应用程序第一次正常工作,我可以在Astro中看到文件夹。如果我关闭应用程序,然后在Astro中删除文件夹,然后重新启动应用程序,即使我的代码神秘地不能创建缓存目录,Astro也会显示0字节的文件。
在Astro中无法删除0字节的文件。但是,当我重启手机时,文件夹就神奇地出现了并且可以正常工作。
我使用FileInstall来监视OSGiComponents / install文件夹。当我将bundle jar放入该文件夹中时,除Galaxy Nexus(应用程序第一次工作时)外,所有手机都能检测到它并安装成功。有关无法监视目录的FileInstall的日志/错误。
我已在2台Galaxy Nexus手机上进行了测试,发现相同的问题。
我怀疑这是一个权限问题,但不确定是什么,并且为什么exists()返回false时会创建0字节的文件。在代码的其他地方我没有创建此文件。
任何关于可能存在的问题的建议?
谢谢:)
更新:我认为我已经确定了问题,请查看我发布的答案。
/mnt/sdcard/OSGiComponents/admin/felix-cache/
这里是代码:
File cacheDir =
new File( Environment.getExternalStorageDirectory().getAbsolutePath() +
"/OSGiComponents/admin/felix-cache/" );
// Create the folder
cacheDir.mkdirs();
// Check if it exists
if ( ! cacheDir.exists() ) {
Log.e ( "Debug" , "Cache directory cannot be created" );
}
我在android清单文件的manifest标签下拥有WRITE_STORAGE_PERMISSION。我可以在SD卡上创建其他文件夹和文件而没有问题。 该应用程序在以下手机上运行良好: 1. Nexus S(已root)运行Gingerbread(2.3) 2. Nexus S(未root)运行Jelly Bean(4.1.2) 3. HTC Desire(已root)运行Froyo(2.2) 4. HTC Desire(未root)运行Froyo(2.2)
然而,在运行Ice Cream Sandwich(4.0.4)的三星Galaxy Nexus手机上,目录被创建为零大小的文件,在Astro中可以看到。exists()调用返回false。
如您从文件夹名称中所见,我正在使用Apache Felix。 Felix如果不存在则会自动创建缓存目录。在Galaxy Nexus上,它总是抱怨无法创建缓存目录。 Astro显示一个0字节的文件而不是文件夹。这就是为什么我决定尝试在初始化Felix之前自己创建缓存文件夹的原因。
所以,我自己创建了缓存文件夹。应用程序第一次正常工作,我可以在Astro中看到文件夹。如果我关闭应用程序,然后在Astro中删除文件夹,然后重新启动应用程序,即使我的代码神秘地不能创建缓存目录,Astro也会显示0字节的文件。
在Astro中无法删除0字节的文件。但是,当我重启手机时,文件夹就神奇地出现了并且可以正常工作。
我使用FileInstall来监视OSGiComponents / install文件夹。当我将bundle jar放入该文件夹中时,除Galaxy Nexus(应用程序第一次工作时)外,所有手机都能检测到它并安装成功。有关无法监视目录的FileInstall的日志/错误。
我已在2台Galaxy Nexus手机上进行了测试,发现相同的问题。
我怀疑这是一个权限问题,但不确定是什么,并且为什么exists()返回false时会创建0字节的文件。在代码的其他地方我没有创建此文件。
任何关于可能存在的问题的建议?
谢谢:)
更新:我认为我已经确定了问题,请查看我发布的答案。