1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

PDF Datei Speicherort

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von zblack, 10.11.2011.

  1. zblack, 10.11.2011 #1
    zblack

    zblack Threadstarter Gast

    ich möchte in meiner App ein Paar pdf Dateien aufmachen und den Inhalt der Datei anzeigen lassen. Folgenden Code habe ich im Internet gefunden und ausprobiert. Es funktioniert , nur mit der Bedingung, dass die Datei auf der SD Karte des Handys sich befinden soll.
    Code:
    public class OpenPdf extends Activity {
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            Button button = (Button) findViewById(R.id.OpenPdfButton);
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    File file = new File("/sdcard/example.pdf");
                    if (file.exists()) {
                        Uri path = Uri.fromFile(file);
                        Intent intent = new Intent(Intent.ACTION_VIEW);
                        intent.setDataAndType(path, "application/pdf");
                        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                        try {
                            startActivity(intent);
                        } catch (ActivityNotFoundException e) {
                            Toast.makeText(OpenPdf.this,
                                    "No Application Available to View PDF",
                                    Toast.LENGTH_SHORT).show();
                        }
                    }
                }
            });
        }
    }
    
    Gibt es eine Möglichkeit die Datei in der App selbst abzuspeichern und die dann zu öffnen ? Z.b die Datei befindet sich in dem src datei des Eclipse projektes und man möchte die Datei von da aus aufzumachen.
    MfG.
     
  2. swordi, 10.11.2011 #2
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    hmm du kannst dateien über den asset bzw raw ordner mit ausliefern.

    darauf kannst du dann zugreifen.

    zur not müsstest halt die datei dann auf die sd karte kopieren, beim ersten start oder ersten öffnen
     
  3. zblack, 10.11.2011 #3
    zblack

    zblack Threadstarter Gast

    muss man in Manifestdatei oder sonst wo was zusätzliches hinzufügen ????
    File file = new File("/assets/example.pdf"); tut nix. Wird nix angezeigt bei der Ausführung.
     
  4. Neeldarax, 10.11.2011 #4
    Neeldarax

    Neeldarax Erfahrener Benutzer

    Beiträge:
    170
    Erhaltene Danke:
    31
    Registriert seit:
    07.12.2010
  5. charli, 10.11.2011 #5
    charli

    charli Android-Hilfe.de Mitglied

    Beiträge:
    143
    Erhaltene Danke:
    15
    Registriert seit:
    02.12.2009
    Hier mein Code für *.jpg (nur anzupassen an *.pdf) read.

    Bitmap LoadImagefromassets() {
    AssetManager am = getAssets();
    Bitmap mybitmap = null;
    BufferedInputStream buf;
    try {
    InputStream in = am.open("image600x800.jpg");
    buf = new BufferedInputStream(in);
    mybitmap = BitmapFactory.decodeStream(buf);
    if (in != null) {
    in.close();
    }
    if (buf != null) {
    buf.close();
    }
    } catch (Exception e) {
    Log.e("Error reading file", e.toString());
    }
    return mybitmap;
    }

    charli (bei seniorlabde)
     
  6. zblack, 11.11.2011 #6
    zblack

    zblack Threadstarter Gast

    hmm. es kann sein dass ich einfach zu blöd dafür bin. habe mir das hier gebaut.
    Code:
    public class OpenPdf extends Activity {
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            Button button = (Button) findViewById(R.id.OpenPdfButton);
            button.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    LoadImagefromassets();
                }
            });
        }
        Bitmap LoadImagefromassets() {
            AssetManager am = getAssets();
            Bitmap mybitmap = null;
            BufferedInputStream buf;
            try {
                InputStream in = am.open("example.pdf");
                buf = new BufferedInputStream(in);
                mybitmap = BitmapFactory.decodeStream(buf);
                if (in != null) {
                    in.close();
                }
                if (buf != null) {
                    buf.close();
                }
            } catch (Exception e) {
                Log.e("Error reading file", e.toString());
            }
            return mybitmap;
        }
    }
    
    es wird bei der Ausführung nix angezeigt. es kann sein dass ich da was vergessen habe
     
  7. swordi, 11.11.2011 #7
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    was sollte denn hier angezeigt werden?

    du lädst das bitmap ja nur.


    code kopieren alleine wird nicht reichen. du musst ihn verstehen und dann an deine bedürfnisse anpassen.
     
    charli bedankt sich.
  8. zblack, 11.11.2011 #8
    zblack

    zblack Threadstarter Gast

    hast recht
     
  9. charli, 12.11.2011 #9
    charli

    charli Android-Hilfe.de Mitglied

    Beiträge:
    143
    Erhaltene Danke:
    15
    Registriert seit:
    02.12.2009
    swordi hat mir aus der Seele gesprochen :cool2:...
    charli (seniorlabde)
     
  10. zblack, 12.11.2011 #10
    zblack

    zblack Threadstarter Gast

    hallo. danke für die zahlreiche antworten. Habe das jetzt endlich hingekriegt. Verbesserungsvorschläge nehme ich gerne an
    Hier ist meine Lösung :
    Code:
    public class PDFActivity extends Activity {
        private final String PDF_DATEI = "meinpdf.pdf";
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            //setContentView(R.layout.main);
            
            try {
                Uri uri = dateiBereitstellen();
                Intent intent = new Intent(Intent.ACTION_VIEW);
                intent.setDataAndType(uri, "application/pdf");
                intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(intent);
    
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        
        private Uri dateiBereitstellen () throws IOException {
            File sdCard = Environment.getExternalStorageDirectory();
            File datei = new File(sdCard.getAbsolutePath() + File.separator + PDF_DATEI);
            if (!datei.exists()){
                InputStream stream = this.getAssets().open(PDF_DATEI);
                String name = datei.getAbsolutePath();
                FileOutputStream outputStream = new FileOutputStream(name);
                
                byte [] puffer = new byte [50000];
                int anzahl;
                while ((anzahl = stream.read(puffer))> 0){
                    outputStream.write(puffer, 0, anzahl);
                }
                outputStream.flush();
                stream.close();
                outputStream.close();
            }
            Uri uri = Uri.parse("file://" + datei.getAbsolutePath());
            return uri;
        }
    }
    
     
    Zuletzt von einem Moderator bearbeitet: 12.11.2011

Diese Seite empfehlen