2016-11-28 5 views
1

Ich benutze die MuPDF-Bibliothek, um PDF in meiner App anzuzeigen. Es ist möglich, PDFs in internen oder externen Speichern anzuzeigen, aber die App zeigt nicht die PDF, wenn sie im Ordner Vermögenswerte der App gespeichert sind .. Wie können Sie in App-PDFs anzeigen?Wie PDF aus Assets oder Raw-Ordner anzeigen?

Ich habe gesehen, Lösungen, die sagen thatbwe unsere in App PDFs in App zugehörigen Ordner kopieren und sie dann später verwenden ... aber das kann ich nicht bekommen ..

hier ist der Code -

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Button showPDFBtn = (Button)findViewById(R.id.btn_show_pdf); 
     showPDFBtn.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 

     Uri uri = Uri.parse("file:///android_asset/test.pdf"); 
     Intent intent = new Intent(MainActivity.this, MuPDFActivity.class); 
     intent.setAction(Intent.ACTION_VIEW); 
     intent.setData(uri); 
     startActivity(intent); 



}} 
); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 
} 
+1

das ist wahr, dass Sie Datei in einen internen Speicher kopieren und dann öffnen können. Weißt du nicht wie das geht? –

+1

beziehen http://stackoverflow.com/questions/6491210/how-to-open-a-pdf-stored-either-in-res-raw-or-assets-folder – sasikumar

+0

@VladMatvienko Nein, ich bin neu zu Android so Ich konnte das nicht ... kannst du ein Codebeispiel geben? – DarShan

Antwort

5

Try Code unten

private void readAssetAndMakeCopy() 
    { 
     AssetManager assetManager = getAssets(); 

     InputStream in = null; 
     OutputStream out = null; 
     File file = new File(getFilesDir(), "git.pdf"); 
     try 
     { 
      in = assetManager.open("git.pdf"); 
      out = openFileOutput(file.getName(), Context.MODE_WORLD_READABLE); 

      copyFile(in, out); 
      in.close(); 
      in = null; 
      out.flush(); 
      out.close(); 
      out = null; 
     } catch (Exception e) 
     { 
      Log.e("tag", e.getMessage()); 
     } 

     Intent intent = new Intent(Intent.ACTION_VIEW); 
     intent.setDataAndType(
       Uri.parse("file://" + getFilesDir() + "/git.pdf"), 
       "application/pdf"); 

     startActivity(intent); 
    } 

    private void copyFile(InputStream in, OutputStream out) throws IOException 
    { 
     byte[] buffer = new byte[1024]; 
     int read; 
     while ((read = in.read(buffer)) != -1) 
     { 
      out.write(buffer, 0, read); 
     } 
    } 

Vergewissern Sie enthalten

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

in Manifest

+0

Danke Mann für Hilfe! –

+0

plz Antwort akzeptieren und Upvote tun, wenn obige Code Ihnen helfen –

+0

Sorry Mann vergaß zu upvote. Ich kann diese Antwort nicht akzeptieren, weil die Frage nicht mir gehört. Das tut mir leid –