PDF Datei Speicherort

Z

zblack

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.
 
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
 
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.
 
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)
 
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
 
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.
 
  • Danke
Reaktionen: charli
hast recht
 
swordi schrieb:
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.
swordi hat mir aus der Seele gesprochen :cool2:...
charli (seniorlabde)
 
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 bearbeitet von einem Moderator:

Ähnliche Themen

M
  • MikelKatzengreis
Antworten
5
Aufrufe
118
swa00
swa00
S
Antworten
33
Aufrufe
2.657
Sempervivum
S
B
Antworten
4
Aufrufe
472
bb321
B
Zurück
Oben Unten