2013-08-21 27 views
2

我有一个奇怪的问题,在这里有一个应用程序,我发展。它使用Apache Codova 3.0.0和股票文件插件在Android 4.3的三星Galaxy Nexus的外部存储器上创建目录,并在其中添加一些文件。无法通过MTP可见,但显示亚行外壳

这里会发生什么事是,我竟然能够做到这一点,但是,包括文件的创建目录中没有显示出来,当我将设备连接到一台计算机作为大容量存储设备。所有其他文件夹正常显示,但我创建的一个。当我浏览与“亚行shell”的设备,我可以看到该文件夹​​,但是,从“LS -al”的目录模式是完全一样的,所有的其他人。 READ和WRITE权限授予应用程序。

我也试过在Android的代码相同,它的行为完全一样:

File f = new File(Environment.getExternalStorageDirectory().toString()+"/myFolder"); 
if (!f.isDirectory()) { 
    f.mkdir(); 
    Log.i("myApp", "Created directory: "+f); 
} 

此操作成功,但该文件夹再次不可见的,当我重新将设备连接到计算机上。要提到它:我从IDE运行应用程序 - 也许:有没有一个沙箱或者我不知道的,这可能导致使用adb shell在/ sdcard中显示内容,但在连接为外部存储时不会显示?

我想我必须在这里错过什么小学,希望你们对我有一个答案:)

谢谢!

+0

此答案可能会对您有所帮助:https://stackoverflow.com/a/12821924/4104167 https://stackoverflow.com/a/19934089/4104167 – amin

回答

4

新的文件和文件夹可能需要一些时间通过MTP露面。如果你可以通过adb看到你的文件夹,那么你的代码运行良好。

MTP索引时不时地被Android完成(我不确定是否有确切的时间延迟),因此新文件一旦创建就不会显示出来。您可以尝试通过代码强制运行MediaScanner来强制索引或重新启动设备。

+0

谢谢!但是,当我的MediaScannerConnection.scanFile文件我的目录时,它显示为常规文件,无法打开(不起作用)。你也有这个想法吗? :) – dcode

+0

明白了,我的错。谢谢,在这里你有道具:) – dcode

+0

@dcode请问你如何解决呢? – Forza

1

一定不要呼吁目录MediaScannerConnection.scanFile,只对文件。在这种情况下,我的Lg(Android 4.4.2)将MTP中的目录显示为常规文件!