2013-07-30 2 views
1

Я разработчик iOS, но мне также было поручено также обновлять приложения для Android нашей компании (так что у меня мало опыта работы с Android). В настоящее время приложение android загружает PDF-файлы из raw, а затем отображает их в другое приложение для чтения PDF, также установленное на андроиде ... однако я хотел бы вместо этого получить pdf-файлы из Интернета.Как открыть pdf-файл из определенного URL-адреса в android

это код, используемый для отображения pdf-файла, хранящегося локально.

  if (mExternalStorageAvailable==true && mExternalStorageWriteable==true) 
     { 
     // Create a path where we will place our private file on external 
      // storage. 
      Context context1 = getApplicationContext(); 
      File file = new File(context1.getExternalFilesDir(null).toString() + "/pdf.pdf"); 

      URL url = new URL("https://myurl/pdf.pdf"); 
      URLConnection urlConnection = url.openConnection(); 
      InputStream in = new BufferedInputStream(urlConnection.getInputStream()); 
      OutputStream os = new FileOutputStream(file); 
      try { 


       byte[] data = new byte[in.available()]; 
       in.read(data); 
       os.write(data); 




       Uri path = Uri.fromFile(file); 
       Intent intent = new Intent(Intent.ACTION_VIEW); 
       intent.setDataAndType(path, "application/pdf"); 
       intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

       startActivity(intent); 

      } catch (IOException e) { 
       // Unable to create file, likely because external storage is 
       // not currently mounted. 
       Log.w("ExternalStorage", "Error writing " + file, e); 


       Context context2 = getApplicationContext(); 
       CharSequence text1 = "PDF File NOT Saved"; 
       int duration1 = Toast.LENGTH_SHORT; 
        Toast toast = Toast.makeText(context2, text1, duration1); 
        toast.show(); 
      } finally { 
       in.close(); 
       os.close(); 
      } 

     } 

В конце концов PDF придет с веб-сайта и веб-сайт будет требовать запрос HTML сообщению посланный к нему до того, как PDF можно скачать. Я думаю, что смогу выяснить HTML-сообщение, но пока я могу загрузить PDF из Интернета и показать его. Я попытался изменить URI, чтобы указать на местоположение, но это не сработало, или я неправильно структурировал его.

Также имейте в виду, по соображениям безопасности, я не хочу, чтобы отобразить это с помощью просмотра Google и WebView

ответ

1

Вам просто нужно читать с удаленного сервера. Я хотел бы попробовать что-то вроде:

URL url = new URL("http://www.mydomain.com/slug"); 
URLConnection urlConnection = url.openConnection(); 
InputStream in = new BufferedInputStream(urlConnection.getInputStream()); 
try { 
    readStream(in); // Process your pdf 
} finally { 
    in.close(); 
} 

Вы также можете оформить в AndroidHttpClient класс для выполнения запросов HTTP напрямую (GET или POST в приложении).

+0

Я отредактировал свое оригинальное сообщение, чтобы отразить, как я попытался включить это, однако это приводит к сбою приложения. Я сделал что-то неправильно? – Ben

+0

Журнал ошибок будет полезен, чтобы помочь вам отладить это. :-) – francoisr

+0

Я закончил тем, что смог использовать небольшую модификацию ответа по этой проблеме. Http://stackoverflow.com/questions/9759205/download-a-pdf-file-and-save-it-to-sdcard- и-то чтения-это-из-там – Ben

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