2013-12-16 16 views
8

Ich suche im Internet, wie Sie PDF-Datei vom Server mit Standard-PDF-Viewer auf Android öffnen. Was ich gefunden habe, ist die Datei zuerst herunterzuladen, dann in Absicht zu starten oder sie mit Google Docs zu laden. Ich will das alles nicht machen. Ich will es nur direkt vom Server im Standard-PDF-Viewer vom Telefon laden. Ich habe versucht, Video-URL mit Absicht zu öffnen und es hat funktioniert. Aber das Öffnen der PDF-URL mit Absicht funktioniert nicht. Unten ist mein Code;Öffnen von PDF-Datei vom Server mit Android-Absicht

private void openFilePDF(){ 
     try{ 
      Toast.makeText(getBaseContext(), "Opening PDF... ", Toast.LENGTH_SHORT).show(); 
      Intent inte = new Intent(Intent.ACTION_VIEW); 
      inte.setDataAndType(
        Uri.parse("http://122.248.233.68/pvfiles/Guide-2.pdf"), 
        "application/pdf"); 

      startActivity(inte); 
      }catch(ActivityNotFoundException e){ 
       Log.e("Viewer not installed on your device.", e.getMessage()); 
      } 
    } 

Gibt es eine Möglichkeit, dass ich pdf URL in Absicht laden kann?

+1

http://stackoverflow.com/questions/2883355/how -to-render-pdf-in-android/ – Raghunandan

+1

Ich möchte nicht herunterladen, will es nur vom Server laden. – ksh

+0

http://stackoverflow.com/questions/24740228/android-download-pdf-from-url-then-open-it-with-a-pdf-reader siehe diesen Link als Referenz tom download die Datei –

Antwort

16

Zuerst erstellen Downloader Klasse

public class Downloader { 

    public static void DownloadFile(String fileURL, File directory) { 
     try { 

      FileOutputStream f = new FileOutputStream(directory); 
      URL u = new URL(fileURL); 
      HttpURLConnection c = (HttpURLConnection) u.openConnection(); 
      c.setRequestMethod("GET"); 
      c.setDoOutput(true); 
      c.connect(); 

      InputStream in = c.getInputStream(); 

      byte[] buffer = new byte[1024]; 
      int len1 = 0; 
      while ((len1 = in.read(buffer)) > 0) { 
       f.write(buffer, 0, len1); 
      } 
      f.close(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

    } 
} 

Danach eine Aktivität erstellen, die die PDF-Datei aus dem Internet herunterlädt,

public class MainActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     String extStorageDirectory = Environment.getExternalStorageDirectory() 
     .toString(); 
     File folder = new File(extStorageDirectory, "pdf"); 
     folder.mkdir(); 
     File file = new File(folder, "Read.pdf"); 
     try { 
      file.createNewFile(); 
     } catch (IOException e1) { 
      e1.printStackTrace(); 
     } 
     Downloader.DownloadFile("http://122.248.233.68/pvfiles/Guide-2.pdf", file); 

     showPdf(); 
    } 
    public void showPdf() 
     { 
      File file = new File(Environment.getExternalStorageDirectory()+"/Mypdf/Read.pdf"); 
      PackageManager packageManager = getPackageManager(); 
      Intent testIntent = new Intent(Intent.ACTION_VIEW); 
      testIntent.setType("application/pdf"); 
      List list = packageManager.queryIntentActivities(testIntent, PackageManager.MATCH_DEFAULT_ONLY); 
      Intent intent = new Intent(); 
      intent.setAction(Intent.ACTION_VIEW); 
      Uri uri = Uri.fromFile(file); 
      intent.setDataAndType(uri, "application/pdf"); 
      startActivity(intent); 
     } 
} 

Schließlich endlich erklären persmissions in AndroidManifest.xml

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

Danke für Ihre Infos . Ich werde das versuchen. – ksh

+0

@ksh Ist Ihr Problem gelöst? Hat Ihnen eine Antwort geholfen oder nicht? – GrIsHu

+0

Funktioniert das? –

8

Sie können dies mit WebView versuchen:

public class MyPdfViewActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    WebView mWebView=new WebView(MyPdfViewActivity.this); 
    mWebView.getSettings().setJavaScriptEnabled(true); 
    mWebView.getSettings().setPluginsEnabled(true); 
    mWebView.loadUrl("https://docs.google.com/gview?embedded=true&url="+LinkTo); 
    setContentView(mWebView); 
    } 
} 
+0

Ich weiß Dies ist wirklich alt, aber der Vollständigkeit halber wurde 'setPluginsEnabled() 'in API Level 9 veraltet und in API Level 18 entfernt. Die neuere Version' setPluginState (WebSettings.PluginState.ON) 'wurde in API Level 8 hinzugefügt, aber in API veraltet Level 18. Plugins werden nicht über API-Level 18 hinaus unterstützt. –

+0

@LeeRichardson Vielen Dank für Ihren Kommentar können Sie die Antwort mit dem gleichen aktualisieren .. –

+0

Dies ist am wichtigsten, Ihre Download-PDF-URL-Bindung mit "https://docs.google.com/gview?embedded=true&url=" dies .. – CrazyMind

0

Laut mir gibt es keine Möglichkeit, Ihre PDF-Datei direkt auf dem Gerät zu öffnen. Wegen der Browsereigenschaften von Android-Geräten, wenn wir versuchen, PDF-Datei zu öffnen, laden Sie es auf das Gerät herunter. Es gibt nur zwei Möglichkeiten, um die PDF-Datei zu öffnen.

  1. Sie können die PDF-Anwendung Intent verwenden, um eine App zum Öffnen einer Datei auszuwählen.

  2. Sie können Ihre Server-URL für Datei mit Google Text & Tabellen-URL anhängen und es in Browser öffnen kann so ur PDF-Datei im Browser geöffnet wird

+0

Danke für Ihre Antwort. Aber die Absicht der pdf-App kann nur lokale Dateien öffnen. Es kann die Dateien nicht vom Server laden. – ksh

+0

yeah Sie müssen Datei auf das Gerät herunterladen und danach können Sie Absicht verwenden, um diese bestimmte Datei zu öffnen –

Verwandte Themen