2012-02-09 2 views
1

У меня проблема с файлом,Cann't скачать файл в Android-телефоне - Android ..?

Я могу загрузить файл в эмуляторе, но он не работает с телефоном. Я определил разрешение на Интернет и напишу SD-карту.

У меня есть один файл документа на сервере, и если пользователь нажимает на загрузку. Он загружает файл. Это отлично работает в эмуляторе, но не работает в телефоне,

Plz поможет найти решение.

спасибо.

* Edit * Мой код для загрузки файла

public void downloadFile(String _url, String fileName) { 
     File PATH = Environment 
       .getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS); 
     try { 
      PATH.mkdirs(); 
      URL url = new URL(_url); // you can write here any link 
      File file = new File(PATH, fileName); 

      long startTime = System.currentTimeMillis(); 
      Log.d("Manager", "download begining"); 
      Log.d("DownloadManager", "download url:" + url); 
      Log.d("DownloadManager", "downloaded file name:" + fileName); 
      /* Open a connection to that URL. */ 
      URLConnection ucon = url.openConnection(); 

      /* 
      * Define InputStreams to read from the URLConnection. 
      */ 
      InputStream is = ucon.getInputStream(); 
      BufferedInputStream bis = new BufferedInputStream(is); 

      /* 
      * Read bytes to the Buffer until there is nothing more to read(-1). 
      */ 
      ByteArrayBuffer baf = new ByteArrayBuffer(50); 
      int current = 0; 
      while ((current = bis.read()) != -1) { 
       baf.append((byte) current); 
      } 

      /* Convert the Bytes read to a String. */ 
      FileOutputStream fos = new FileOutputStream(file); 
      fos.write(baf.toByteArray()); 
      fos.close(); 
      Log.d("ImageManager", 
        "download ready in" 
          + ((System.currentTimeMillis() - startTime)/1000) 
          + " sec"); 

     } catch (IOException e) { 
      Log.d("ImageManager", "Error: " + e); 
     } 
    } 
+1

любые ошибки в logcat? возможно, некоторые фрагменты кода? –

+1

Вставьте некоторый код, с этой информацией вам трудно помочь :) – oriolpons

+0

Nop, logcat не дает никаких ошибок. –

ответ

2

попробовать фрагменты кода, приведенные ниже ...

File PATH = Environment 
       .getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS); 
     try { 
      //set the download URL, a url that points to a file on the internet 
      //this is the file to be downloaded 
      _url = _url.replace(" ", "%20"); 
      URL url = new URL(_url); 

      //create the new connection 
      HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); 

      //set up some things on the connection 
      urlConnection.setRequestMethod("GET"); 
      urlConnection.setDoOutput(true); 


      //and connect! 
      urlConnection.connect(); 

      //create a new file, specifying the path, and the filename 
      //which we want to save the file as. 
      File file = new File(PATH,fileName); 

      //this will be used to write the downloaded data into the file we created 
      FileOutputStream fileOutput = new FileOutputStream(file); 

      //this will be used in reading the data from the internet 
      InputStream inputStream = urlConnection.getInputStream(); 

      //this is the total size of the file 
      int totalSize = urlConnection.getContentLength(); 
      Log.i("Download", totalSize+""); 
      //variable to store total downloaded bytes 
//   int downloadedSize = 0; 

      //create a buffer... 
      byte[] buffer = new byte[1024]; 
      int bufferLength = 0; //used to store a temporary size of the buffer 

      //now, read through the input buffer and write the contents to the file 
      while ((bufferLength = inputStream.read(buffer)) > 0) { 
        //add the data in the buffer to the file in the file output stream (the file on the sd card 
        fileOutput.write(buffer, 0, bufferLength); 
      } 
      //close the output stream when done 
      fileOutput.close(); 
      return true; 

    //catch some possible errors... 
    } catch (MalformedURLException e) { 
      e.printStackTrace(); 
    } catch (IOException e) { 
      e.printStackTrace(); 
    } 

убедитесь, что у вас есть вводит правильный путь загрузки (URL)

Смежные вопросы