2015-02-01 4 views
-1

Что у меня есть:Как загрузить файл в Android

  1. Я загрузил файл .json в Dropbox моего счета у меня есть сделал это публичное

Что я пытаюсь сделать:

  1. Я хочу, чтобы загрузить файл на мой RAW folder моего андроид проекта

  2. Я знаком с AsyncTask и HttpClient но что методологии (шаги) я должен следовать, чтобы загрузить файл?

Я попытался найти подобный вопрос в StackOverflow, но не мог найти так опубликовав вопрос сам

+0

Что вы подразумеваете под «RAW folder»? Вы хотите загрузить файл, а затем поместить его в свой APK? Просто загрузите его в каталог файлов приложений. –

+0

@JaredRummler ....... RAW-папка - это папка, которую я создал в моем проекте, например ... Это тоже может быть папка с ресурсами ... я просто хочу знать, чтобы обрабатывать, чтобы выполнить загрузку с dropbox :) – Devrath

ответ

1

Вы не можете загрузить файл в «активы» или «/ RES/сырье ». Они собираются в ваш APK.

Вы можете загрузить файл в свои внутренние каталоги данных ваших приложений. См. Saving Files | Android Developers.

Существует множество примеров и библиотек, которые помогут вам скачать. Ниже статический фабричный метод можно использовать в проекте:

public static void download(String url, File file) throws MalformedURLException, IOException { 
    URLConnection ucon = new URL(url).openConnection(); 
    HttpURLConnection httpConnection = (HttpURLConnection) ucon; 
    int responseCode = httpConnection.getResponseCode(); 
    if (responseCode == HttpURLConnection.HTTP_OK) { 
     BufferedInputStream bis = new BufferedInputStream(ucon.getInputStream()); 
     ByteArrayBuffer baf = new ByteArrayBuffer(50); 
     int current = 0; 
     while ((current = bis.read()) != -1) { 
      baf.append((byte) current); 
     } 
     FileOutputStream fos = new FileOutputStream(file); 
     fos.write(baf.toByteArray()); 
     fos.close(); 
     bis.close(); 
    } 
} 

Затем, чтобы загрузить файл из Dropbox:

String url = "https://dl.dropboxusercontent.com/u/27262221/test.txt"; 
File file = new File(getFilesDir(), "test.txt"); 
try { 
    download(url, file); 
} catch (MalformedURLException e) { 
    // TODO handle error 
} catch (IOException e) { 
    // TODO handle error 
} 

Пожалуйста, обратите внимание, что приведенный выше код должен быть запущен из фонового потока или вы получите NetworkOnMainThreadException.

Вы также должны объявить следующее разрешение в вашем AndroidManifest:

<uses-permission android:name="android.permission.INTERNET" /> 

Вы можете найти некоторые полезные библиотеки здесь: https://android-arsenal.com/free

Я лично рекомендую http-request. Вы можете загрузить свой файл Dropbox с помощью HttpRequest следующим образом:

HttpRequest.get("https://dl.dropboxusercontent.com/u/27262221/test.txt").receive(
    new File(getFilesDir(), "test.txt")); 
+0

Спасибо за приятное объяснение ........ еще один вопрос ..... мы можем сделать вышеупомянутый процесс, не используя учетные данные для входа из Dropbox? .... только если у меня есть ссылка на местоположение ... это достаточно? – Devrath

+1

Для загрузки общедоступного файла на DropBox вам не нужно входить в систему. Я не использовал его в сборке (хотя не уверен, что с DropBox связано с трафиком). Если у вас нет сервера, я бы порекомендовал разместить JSON-файл в Github. –

+0

Спасибо :) ....да, у меня нет сервера ...... если я размещаю его на github ....... это процессы, которые вы описали выше? .... (Только для моих знаний) – Devrath

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