2016-06-02 7 views
0

Ich habe eine Frage, warum kann ich nicht auf eine Datei in meinem Ordner Assets zugreifen?nicht als Datei oder Ressource in Assets Ordner

Ordner

enter image description here

Mein Code

Uri path = Uri.parse("android.resource://com.hackro.tutorials.myapplication/raw/comprobante.pdf"); 

String newPath = path.toString(); 

Resources res = getResources(); 

try { 

    PdfReader reader = new PdfReader(newPath); 
    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("/sdcard/evidencia.pdf")); 
    AcroFields fields = stamper.getAcroFields(); 

    fields.setField("Referencia", referencia); 

    fields.setField("Fecha y Hora", fechahora); 
    fields.setField("Tipo", tipo); 
    fields.setField("Operacion", operacion); 
    fields.setField("no. tarjeta", tarjeta); 
    fields.setField("vencimiento", vencimiento); 
    fields.setField("monto", monto); 
    fields.setField("concepto", concepto); 
    fields.setField("Nombre", nombre); 
    fields.setField("Autorizacion", autorizacion); 


    stamper.setFormFlattening(true); 
    stamper.close(); 
    reader.close(); 
} catch (Exception e) { 
    Log.e("error: ", e.getMessage()); 
} 

Exception

java.io.IOException: android.resource://com.hackro.tutorials.myapplication/raw/comprobante.pdf not found as file or resource. 

Antwort

0

Sie haben hier ein paar Probleme.

Zunächst sind Ressourcen keine Assets. Sie versuchen, das Schema android.resource zu verwenden, um auf ein Asset zuzugreifen, als wäre es eine Rohressource, und dies wird nicht funktionieren.

Zweitens, Sie bauen ein Uri, dann konvertieren das in eine Zeichenfolge, dann versuchen, das in einem File Objekt zu wickeln. Das wird nie funktionieren, für jede Art von Uri.

Drittens sind weder Ressourcen noch Assets Dateien auf dem Dateisystem des Geräts. Sie sind Dateien auf dem Dateisystem Ihres Entwicklungscomputers. Sie sind Einträge in der APK-Datei auf dem Gerät. Sie können kein Objekt File erhalten, das auf eine Ressource oder ein Asset verweist.

Verwenden getAssets() auf einem Context (zum Beispiel Ihre Activity oder Service) eine AssetManager zu bekommen. Rufen Sie dann unter AssetManageropen("comprobante.pdf") an, um eine InputStream auf dem Asset zu erhalten. Übergeben Sie das an den PdfReader-Konstruktor, und hoffen Sie, dass Ihre PDF-Bibliothek ein InputStream unterstützt.