找不到资产文件夹中的文件或资源

时间:2016-06-02 16:10:33

标签: android android-assets

我有一个问题,为什么无法访问我的资源文件夹中的文件?

文件夹

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.

1 个答案:

答案 0 :(得分:0)

这里有一些问题。

首先,资源不是资产。您正在尝试使用android.resource方案来访问资产,就像它是原始资源一样,这不起作用。

其次,您正构建一个Uri,然后将其转换为字符串,然后尝试将其包装在File对象中。对于任何类型的Uri,这都行不通。

第三,资源和资产都不是设备文件系统上的文件。它们是开发计算机文件系统上的文件。它们是设备上APK文件中的条目。您无法获得指向资源或资产的File对象。

getAssets()上使用Context(例如,您的ActivityService)获取AssetManager。然后,在open("comprobante.pdf")上致电AssetManager,获取资产上的InputStream。将其传递给PdfReader构造函数,并希望您的PDF库支持InputStream