2012-08-23 139 views
2

我开发了一个应用程序,用户可以从服务器下载.mp3文件。并预先定义了一个mnt/sdcard/foldername的路径来保存这些文件。我跑我的HTC计划,LG,三星完美的作品,但是当我在三星Galaxy S2运行同一程序得到一个的问题,不能能写(存储)在MNT/SD卡/文件夹名,并试图Android:下载到SD问题

Environment.getExternalStorageDirectory().getAbsolutePath() 

但它显示在给定路径中下载的文件名和每个文件属性的零字节。任何想法来解决这个问题?

回答

1

我终于找到了代码

public void download(String urlToDownload){ 

URLConnection urlConnection = null; 

try{ 

    URL url = new URL(urlToDownload); 

    //Opening connection of currrent url 

    urlConnection = url.openConnection(); 
    urlConnection.connect(); 

    //int lenghtOfFile = urlConnection.getContentLength(); 


String PATH = Environment.getExternalStorageDirectory() + "/1/"; 

File file = new File(PATH); 
file.mkdirs(); 
File outputFile = new File(file, "file.mp3"); 
FileOutputStream fos = new FileOutputStream(outputFile); 

InputStream is = url.openStream(); 


byte[] buffer = new byte[1024]; 

int len1 = 0; 

while ((len1 = is.read(buffer)) != -1) { 
    fos.write(buffer, 0, len1); 
} 

fos.close(); 
is.close(); 

System.out.println("downloaded"+urlToDownload); 

}catch (Exception e) { 
    // TODO: handle exception 
    e.printStackTrace(); 

} 

} 

来源:link

1

SG2通常没有SD卡,并使用内部闪存作为“外部”存储。我已经解决了这个问题,此代码:

private File initCacheDir() { 
     String sdState = android.os.Environment.getExternalStorageState(); 
      File imageCacheDir; 
      if (sdState.equals(android.os.Environment.MEDIA_MOUNTED)) { 
       File sdDir = android.os.Environment.getExternalStorageDirectory();  
       imageCacheDir = new File(sdDir, "Android/data/" + App.PACKAGE_NAME + "/files/imageCache"); 
      } 
      else 
       imageCacheDir = context.getCacheDir(); 

      if(!imageCacheDir.exists()) 
       imageCacheDir.mkdirs();   
      return imageCacheDir; 
} 

注意,这个代码给你的缓存目录,它通常位于SD卡在Android/data文件夹的位置。

你会发现更多的细节如何解决与SG2这里这个问题: How could i get the correct external storage on Samsung and all other devices?

+0

yup! thnx为您的答复,但我的意思是永久存储在外部卡,如果我使用/数据路径,它不能存储更多数量的文件或大间距的文件..也看起来像临时存储。谢谢! –

1

试试这个

if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) 
     cacheDir=new File(android.os.Environment.getExternalStorageDirectory(),"yourfile"); 
    else 
     cacheDir=context.getCacheDir(); 
    if(!cacheDir.exists()) 
     cacheDir.mkdirs(); 
+0

谢谢!仍然需要解决。我的问题不是制作目录,必须下载到SD卡。我试着用相同的代码下载一个图像,它的工作。如果我去寻找mp3,那就缺乏了。这个问题只发生在三星银河s2上。正如@bjorncs所说/它在使用闪存的地方挣扎着。 –