2016-06-02 1 views
0

자산 폴더의 파일에 액세스 할 수없는 이유는 무엇입니까?은 자산 폴더의 파일 또는 리소스로 찾을 수 없습니다.

폴더

enter image description here

내 코드

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()); 
} 

예외

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

답변

0

여기에 몇 가지 문제가 있습니다.

먼저 리소스는 자산이 아닙니다. android.resource 구성표를 사용하여 애셋에 원시 리소스 인 것처럼 액세스하려고 시도했지만 작동하지 않습니다.

두 번째로 Uri을 만든 다음 해당 값을 문자열로 변환 한 다음 File 개체로 래핑하려고합니다. 모든 유형의 Uri에 대해서는 절대로 작동하지 않습니다.

세 번째로, 리소스도 자산도 장치의 파일 시스템에있는 파일이 아닙니다. 그것들은 개발 컴퓨터의 파일 시스템에있는 파일입니다. 장치의 APK 파일에있는 항목입니다. 리소스 또는 자산을 가리키는 File 개체를 가져올 수 없습니다.

Context에 대한 사용 getAssets() (예를 들어, 당신의 Activity 또는 Service)는 AssetManager를 얻을 수 있습니다. 그런 다음 AssetManageropen("comprobante.pdf")으로 전화하면 자산에 InputStream이 표시됩니다. 이를 PdfReader 생성자로 전달하고 PDF 라이브러리가 InputStream을 지원하기를 바랍니다.

관련 문제